亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dxjs_dbvalidation.pas

?? Well known and usefull component for delphi 7
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
   fLoaded := False;
   if (AOwner = nil) or
      not (AOwner is TForm) then begin
      raise Exception.Create('Parent must be TForm!');
      Exit;
   end;
   fParent := AOwner as TForm;
   fOzzHook:=Nil;
   if (csDesigning in ComponentState) or
      (csLoading in ComponentState) then Exit;
   fOzzHook := TOzzPersist.Create(nil);
   fOzzHook.Suspended:=False;
   fOzzHook.ComponentList := TStringList.Create;
   fOzzHook.OnExitValidate := InternalExitValidate;
   fOzzHook.OnEnterValidate := InternalEnterValidate;
   fOzzHook.BeforePostValidate := InternalBeforePostValidate;
   fOzzHook.JavaScript := TDXJavaScript.Create(nil);
   fOzzHook.JavaScript.AddRoutine('GetFieldValue', @__GetFieldValue);
   fOzzHook.JavaScript.AddRoutine('SetFocus', @__SetFocus);
   fOzzHook.JavaScript.AddRoutine('RaiseError', @__RaiseError);
   BinTree := TDXBinarySearchTree.Create(DXCompareFunc, DXDisposeProc);
end;

destructor TDXJS_DBValidation.Destroy;
var
   I: Integer;
   DSList: TStringList;
   OriginalInstance: Pointer;

begin
(*
   if not (csDesigning in ComponentState) then begin
      try
         fOzzHook.ComponentList.Free;
         DSList := TStringList.Create;
         DSList.Sorted := True;
         DSList.Duplicates := dupIgnore;
         for I := 0 to fParent.ComponentCount - 1 do begin
            if GetPropInfo(fParent.Components[I], 'Datasource') <> nil then begin
               OriginalInstance := GetObjectProp(fParent.Components[I], 'DataSource');
               if OriginalInstance <> nil then
                  if DSList.IndexOf(TDataSource(OriginalInstance).DataSet.Name) < 0 then begin
                     DSList.Add(TDataSource(OriginalInstance).DataSet.Name);
                     fOzzHook.RemoveDatasetJavaScript(TDataSource(OriginalInstance).DataSet,
                        TDataSource(OriginalInstance).DataSet.Name);
                  end;
            end;
            fOzzHook.RemoveJavaScript(fParent.Components[I],
               fParent.Components[I].Name);
         end;
         fOzzHook.Free;
         DSList.Free;
//      BinTree.Clear;
//      BinTree.Free;
      except
         ;
      end;
   end;
*)
   inherited Destroy;
end;

procedure TDXJS_DBValidation.InternalExitValidate(Sender: TObject);
var
   BinTreeItem: PDXLinkList;
   Query: PDXLinkList;
{$ifdef VARIANTS}
   MyNull:Variant;
{$endif}

begin
   if fOzzHook.Suspended then exit;
//   DXString.ProcessWindowsMessageQueue;
   New(Query);
   Query^.ComponentName := TComponent(Sender).Name;
   BinTreeItem := BinTree.Find(Query);
   Dispose(Query);
   with fOzzHook do begin
      JavaScript.AddObject('self', TComponent(Sender));
      JavaScript.AddProperty(TComponent(Sender).ClassType,
         'dbvalue',
         @__GetText,
         @__SetText);
      if not JavaScript.Compiled then JavaScript.Compile;
//      JavaScript.SourceDump;
{$ifdef VARIANTS}
      MyNull:=Null;
      JavaScript.CallFunction(TComponent(Sender).Name + 'OnExit', MyNull);
{$else}
      JavaScript.CallFunction(TComponent(Sender).Name + 'OnExit', Null);
{$endif}
      if Assigned(BinTreeItem) then begin
         if Assigned(BinTreeItem^.OldOnExit) then
            BinTreeItem^.OldOnExit(Sender);
      end;
//      DXString.ProcessWindowsMessageQueue;
   end;
end;

procedure TDXJS_DBValidation.InternalEnterValidate(Sender: TObject);
var
   BinTreeItem: PDXLinkList;
   Query: PDXLinkList;
{$ifdef VARIANTS}
   MyNull:Variant;
{$endif}

begin
   if fOzzHook.Suspended then exit;
//   DXString.ProcessWindowsMessageQueue;
   New(Query);
   Query^.ComponentName := TComponent(Sender).Name;
   BinTreeItem := BinTree.Find(Query);
   Dispose(Query);
   with fOzzHook do begin
      JavaScript.AddObject('self', TComponent(Sender));
      JavaScript.AddProperty(TComponent(Sender).ClassType,
         'dbvalue',
         @__GetText,
         @__SetText);
      if not JavaScript.Compiled then JavaScript.Compile;
//      JavaScript.SourceDump;
{$ifdef VARIANTS}
      MyNull:=Null;
      JavaScript.CallFunction(TComponent(Sender).Name + 'OnEnter', MyNull);
{$else}
      JavaScript.CallFunction(TComponent(Sender).Name + 'OnEnter', Null);
{$endif}
      if Assigned(BinTreeItem) then begin
         if Assigned(BinTreeItem^.OldOnEnter) then
            BinTreeItem^.OldOnEnter(Sender);
      end;
//      DXString.ProcessWindowsMessageQueue;
   end;
end;

procedure TDXJS_DBValidation.InternalBeforePostValidate(DataSet: TDataSet);
var
   BinTreeItem: PDXLinkList;
   Query: PDXLinkList;
{$ifdef VARIANTS}
   MyNull:Variant;
{$endif}

begin
   if fOzzHook.Suspended then exit;
//   DXString.ProcessWindowsMessageQueue;
   New(Query);
   Query^.ComponentName := DataSet.Name;
   BinTreeItem := BinTree.Find(Query);
   Dispose(Query);
   with fOzzHook do begin
      if not JavaScript.Compiled then JavaScript.Compile;
//      JavaScript.SourceDump;
      try
{$ifdef VARIANTS}
         MyNull:=Null;
         JavaScript.CallFunction(DataSet.Name + 'BeforePost', MyNull);
{$else}
         JavaScript.CallFunction(DataSet.Name + 'BeforePost', Null);
{$endif}
         if Assigned(BinTreeItem) then begin
            if Assigned(BinTreeItem^.OldBeforePost) then
               BinTreeItem^.OldBeforePost(DataSet);
         end;
      except
         raise;
      end;
//      DXString.ProcessWindowsMessageQueue;
   end;
end;

procedure TDXJS_DBValidation.LinkFieldsandDatasets(SourceCode: TStream);
var
   I: Integer;
   RunTimeMethod: TMethod;
   RunTimeMethod2: TMethod;
   RunTimeMethod3: TMethod;
   PropInfo: PPropInfo;
   BinTreeItem: PDXLinkList;
   Query: PDXLinkList;
   DSList: TStringList;
   Done: Boolean;
   Ws: string;
{$IFDEF DUMP_BASE_SCRIPT}
   StrList: TStringList;
{$ENDIF}
{$ifdef VARIANTS}
   MyNull:Variant;
{$endif}

begin
   if (csDesigning in ComponentState) or
      (csLoading in ComponentState) then Exit;
//   DXString.ProcessWindowsMessageQueue;
   BinTree.Clear;
// skim the source for "blank" functions and drop them!
   fOzzHook.ComponentList.Clear;
   if SourceCode.Size > 0 then begin

      DSList := TStringList.Create;
      DSList.LoadFromStream(SourceCode);
      Done := False;
      I := 0;
      while not Done do begin
         Ws := DSList[I];
      // drop blank function??
         if Lowercase(FetchByChar(Ws, #32, False)) = 'function' then begin
            fOzzHook.ComponentList.Add(FetchByChar(Ws, #32, False));
            Ws := DSList[I + 1];
            if Ws = '{' then begin
               Ws := DSList[I + 2];
               if Ws = '}' then begin
                  DSList.Delete(I);
                  DSList.Delete(I);
                  DSList.Delete(I);
                  fOzzHook.ComponentList.Delete(fOzzHook.ComponentList.Count - 1);
                  Dec(I);
               end;
            end;
         end
      // drop commented lines??
         else begin
            Ws := DSList[I];
            if Copy(Ws, 1, 2) = '//' then begin
               DSList.Delete(I);
               Dec(I);
            end
            else
               if Ws = '' then begin
                  DSList.Delete(I);
                  Dec(I);
               end;
         end;
         Inc(I);
         if I > DSList.Count - 5 then Done := True;
      end;
      TMemoryStream(SourceCode).Clear;
      DSList.SaveToStream(SourceCode);
      SourceCode.Seek(0, 0);
      DSList.Free;
   end;

{$IFDEF DUMP_BASE_SCRIPT}
   StrList := TStringList.Create;
{$ENDIF}
   if SourceCode.Size > 0 then begin
      fOzzHook.JavaScript.LoadFromStream(SourceCode);
      fOzzHook.JavaScript.Compile;
      fLoaded := True;
   end;

   New(BinTreeItem);
   BinTreeItem^.ComponentName := 'PARENT_FORM';
   BinTreeItem^.DBAncestorLike := -1;
   BinTreeItem^.OriginalInstance := fParent;
   BinTreeItem^.DataFieldName := '';
   BinTreeItem^.OldOnExit := nil;
   BinTreeItem^.OldOnEnter := nil;
   BinTreeItem^.OldBeforePostHooked:=False;
   BinTreeItem^.OldBeforePost := nil;
   BinTree.Insert(BinTreeItem);

   DSList := TStringList.Create;
   DSList.Sorted := True;
   DSList.Duplicates := dupIgnore;

   PropInfo := GetPropInfo(fOzzHook, 'OnExitValidate');
   if PropInfo <> nil then begin
      RunTimeMethod := GetMethodProp(fOzzHook, 'OnExitValidate');
      RunTimeMethod2 := GetMethodProp(fOzzHook, 'OnEnterValidate');
      RunTimeMethod3 := GetMethodProp(fOzzHook, 'BeforePostValidate');
   end;
   for I := 0 to fParent.ComponentCount - 1 do begin
      New(Query);
      Query^.ComponentName := fParent.Components[I].Name;
      BinTreeItem := BinTree.Find(Query);
      Dispose(Query);
      if Assigned(BinTreeItem) then BinTree.Delete(BinTreeItem);
      New(BinTreeItem);
      BinTreeItem^.ComponentName := fParent.Components[I].Name;
      try
// Will Only Link what is acceptable, otherwise exception out!
         PropInfo := GetPropInfo(fParent.Components[I], 'DataSource');
         BinTreeItem^.DBAncestorLike := -1;
         if PropInfo <> nil then begin

            BinTreeItem^.OriginalInstance := GetObjectProp(fParent.Components[I], 'DataSource');
            if DSList.IndexOf(TDataSource(BinTreeItem^.OriginalInstance).DataSet.Name) < 0 then begin
               DSList.Add(TDataSource(BinTreeItem^.OriginalInstance).DataSet.Name);
               fOzzHook.ApplyDatasetJavaScript(TDataSource(BinTreeItem^.OriginalInstance).DataSet,
                  TDataSource(BinTreeItem^.OriginalInstance).DataSet.Name, RunTimeMethod3);
{$IFDEF DUMP_BASE_SCRIPT}
               StrList.Add('function ' + TDataSource(BinTreeItem^.OriginalInstance).DataSet.Name + 'BeforePost()');
               StrList.Add('{');
               StrList.Add('}');
               StrList.Add('');
{$ENDIF}
            end;
            BinTreeItem^.DBAncestorLike := 6;
            try
               BinTreeItem^.DataFieldName := GetStrProp(fParent.Components[I], 'Datafield');
               BinTreeItem^.OldOnExit := nil;
               BinTreeItem^.OldOnEnter := nil;
               BinTreeItem^.OldBeforePost := nil;
               BinTreeItem^.OldBeforePostHooked:=False;
               BinTree.Insert(BinTreeItem);
               fOzzHook.ApplyJavaScript(fParent.Components[I],
                  fParent.Components[I].Name, RunTimeMethod, RunTimeMethod2);
{$IFDEF DUMP_BASE_SCRIPT}
               StrList.Add('function ' + fParent.Components[I].Name + 'OnExit()');
               StrList.Add('{');
               StrList.Add('}');
               StrList.Add('');
               StrList.Add('function ' + fParent.Components[I].Name + 'OnEnter()');
               StrList.Add('{');
               StrList.Add('}');
               StrList.Add('');
{$ENDIF}
            except
               StrList.Insert(0, '// Not Added: ' + fParent.Components[I].Name);
            end;
         end;
      except
         if BinTreeItem^.DBAncestorLike < 0 then Dispose(BinTreeItem);
      end;
   end;
   fOzzHook.JavaScript.AddObject(fParent.Name,
      fParent);
{$ifdef VARIANTS}
   MyNull:=Null;
   fOzzHook.JavaScript.CallFunction('OnFormCreate', MyNull);
{$else}
   fOzzHook.JavaScript.CallFunction('OnFormCreate', Null);
{$endif}
//   DXString.ProcessWindowsMessageQueue;

{$IFDEF DUMP_BASE_SCRIPT}
   StrList.Insert(0, '//////////////////////////////////////////////////////////');
   while DSList.Count > 0 do begin
      StrList.Insert(0, '// Datasource: ' + DSList[0]);
      DSList.Delete(0);
   end;
   StrList.Insert(0, '// Primary Form Instance: ' + fParent.Name);
   StrList.Insert(0, '// Special Objects...');
   StrList.Insert(0, '//////////////////////////////////////////////////////////');
   StrList.Insert(0, '// Skeleton Created ' + DateTimeToStr(Now));
   StrList.Insert(0, '// Auto-created Skeleton, contains ' + IntegerToString(BinTree.Count) + ' supported variable(s)');
   StrList.Insert(0, '//////////////////////////////////////////////////////////');
   StrList.Add('function OnFormCreate()');
   StrList.Add('{');
   StrList.Add('}');
   StrList.Add('');
   StrList.SaveToFile('C:\' + fParent.Name + '.jsbase');
   StrList.Free;
{$ENDIF}
   DSList.Free;
end;

procedure TDXJS_DBValidation.OnActivateRehook;
var
   I: Integer;
   DSList: TStringList;
   RunTimeMethod3: TMethod;
   PropInfo: PPropInfo;
   BinTreeItem: PDXLinkList;
   Query: PDXLinkList;
   OriginalInstance:Pointer;

begin
   if (csDesigning in ComponentState) or
      (csLoading in ComponentState) then Exit;
   DSList := TStringList.Create;
   DSList.Sorted := True;
   DSList.Duplicates := dupIgnore;
   PropInfo := GetPropInfo(fOzzHook, 'OnExitValidate');
   if PropInfo <> nil then begin
      RunTimeMethod3 := GetMethodProp(fOzzHook, 'BeforePostValidate');
   end;
   for I := 0 to fParent.ComponentCount - 1 do begin
try
      OriginalInstance:=GetObjectProp(fParent.Components[I],'DataSource');
      If OriginalInstance<>Nil then Begin
         New(Query);
         Query^.ComponentName :=TDataSource(OriginalInstance).DataSet.Name;
         BinTreeItem := BinTree.Find(Query);
         Dispose(Query);
            if DSList.IndexOf(TDataSource(OriginalInstance).DataSet.Name)<0 then begin
               If Assigned(BinTreeItem) then begin
                  BinTree.Delete(BinTreeItem);
               End;
               DSList.Add(TDataSource(OriginalInstance).DataSet.Name);
               fOzzHook.ApplyDatasetJavaScript(TDataSource(OriginalInstance).DataSet,
                  TDataSource(OriginalInstance).DataSet.Name, RunTimeMethod3);
            end;
      End;
except
      ;
end;
   end;
//   ShowMessage('Rehooked:'+#13+DSList.Text);
   DSList.Free;
end;

procedure TDXJS_DBValidation.SetfSuspend(value:boolean);
Begin
   if Assigned(fOzzHook) then fOzzHook.Suspended:=Value;
End;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合亚洲深深色噜噜狠狠网站| 日韩一区中文字幕| 成人在线综合网| 亚洲电影一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 在线视频欧美区| 国内精品免费**视频| 亚洲成人av一区二区三区| 中文在线免费一区三区高中清不卡| 欧美疯狂做受xxxx富婆| 91在线丨porny丨国产| 国产福利91精品一区二区三区| 手机精品视频在线观看| 一区二区三区四区蜜桃| 国产日韩av一区| 国产亚洲1区2区3区| 精品少妇一区二区| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩不卡一区二区| 在线观看国产精品网站| 在线观看三级视频欧美| 91福利区一区二区三区| 91啪在线观看| 欧美这里有精品| 欧美精品欧美精品系列| 欧美久久久久免费| 精品国内二区三区| 久久这里只有精品6| 国产日韩欧美麻豆| 国产午夜精品一区二区三区视频 | 亚洲天堂精品视频| 洋洋av久久久久久久一区| 一区二区不卡在线视频 午夜欧美不卡在| 国产女同互慰高潮91漫画| ...中文天堂在线一区| 亚洲另类春色校园小说| 亚洲国产精品嫩草影院| 精品视频一区二区三区免费| 日本韩国欧美国产| 7777精品伊人久久久大香线蕉最新版 | 国产成人午夜片在线观看高清观看| 国产一区在线视频| 色欧美日韩亚洲| 欧美一级黄色片| 国产精品拍天天在线| 视频一区视频二区中文| 国产91露脸合集magnet| 欧美日韩视频专区在线播放| 久久综合九色综合97婷婷| 中文字幕一区在线| 国产真实乱偷精品视频免| 色成年激情久久综合| 欧美精品一区二区三区很污很色的| 亚洲视频网在线直播| 久久国产福利国产秒拍| 欧美性做爰猛烈叫床潮| 久久精品人人做人人爽人人| 丝袜美腿高跟呻吟高潮一区| 成人黄色电影在线| 久久综合av免费| 精品制服美女丁香| 9191精品国产综合久久久久久| 成人欧美一区二区三区在线播放| 激情成人综合网| 欧美成人免费网站| 五月天久久比比资源色| 欧美性生活大片视频| 亚洲欧美综合另类在线卡通| 高清beeg欧美| 国产精品国产三级国产aⅴ中文| 欧美熟乱第一页| 亚洲免费视频中文字幕| 99久久综合色| 亚洲卡通动漫在线| 99热精品一区二区| 亚洲免费av观看| 欧美一区二区三区白人| 亚洲一级片在线观看| 国产综合色在线| 在线影视一区二区三区| 久久久久久久久久久久电影 | 久久婷婷国产综合精品青草| 视频在线观看91| 日韩欧美一级二级三级| 青青草97国产精品免费观看| 欧美不卡一区二区三区四区| 国产剧情一区二区三区| 亚洲国产精品高清| 91免费在线看| 日韩高清不卡一区二区| 欧美午夜精品理论片a级按摩| 国产欧美日本一区二区三区| 欧美日韩一区二区三区免费看| 中文字幕在线不卡| 在线观看亚洲专区| 奇米色777欧美一区二区| 国产精品天天看| 欧美日韩精品一区二区| 国产白丝网站精品污在线入口| 亚洲免费视频成人| 久久美女高清视频| 欧美丰满高潮xxxx喷水动漫 | 视频在线在亚洲| 国产精品免费视频一区| 欧美日韩国产bt| 成人的网站免费观看| 午夜精品久久久久久久99樱桃| 欧美极品少妇xxxxⅹ高跟鞋| 欧美福利电影网| 在线观看免费亚洲| 国产91在线看| 国产乱码精品一区二区三区忘忧草 | 亚洲精品国产第一综合99久久| 日韩欧美激情一区| 欧美精品九九99久久| 在线欧美日韩国产| 99久久伊人网影院| 欧美日韩情趣电影| av色综合久久天堂av综合| 精品一区二区影视| 捆绑调教一区二区三区| 日韩成人伦理电影在线观看| 亚洲美女电影在线| 亚洲视频一区二区免费在线观看| 久久久久久日产精品| 久久久久久久性| 久久久99精品免费观看不卡| 欧美精品一区二区久久久| 日韩精品一区二区三区老鸭窝 | 免费观看日韩av| 秋霞电影一区二区| 久久精品国产99国产| 久久成人免费网站| 国产白丝精品91爽爽久久| 丁香五精品蜜臀久久久久99网站| 亚洲地区一二三色| 国产精品的网站| 一区二区三区成人| 蜜臀av一区二区三区| 国产麻豆成人传媒免费观看| 成人久久视频在线观看| 91久久线看在观草草青青| 欧美日韩久久久久久| 日韩一卡二卡三卡| 国产精品久久毛片a| 亚洲高清不卡在线| 国产成人精品免费在线| 色婷婷精品久久二区二区蜜臂av| 欧美精品123区| 国产人伦精品一区二区| 亚洲最大成人综合| 国产精品资源在线| 欧美一区二区在线免费观看| 国产精品久久久久久久久果冻传媒| 亚洲电影第三页| 高清在线观看日韩| 国产视频一区在线播放| 亚洲欧美日韩成人高清在线一区| 欧美精品一区二区精品网| 国产午夜精品一区二区三区视频| 亚洲国产日日夜夜| 亚洲精品国产无套在线观| 国产精品护士白丝一区av| 亚洲色欲色欲www| 亚洲午夜视频在线| 国产精品77777竹菊影视小说| 成人av免费网站| 26uuu久久天堂性欧美| 中文字幕日韩精品一区| 国产尤物一区二区在线 | 国产福利一区在线| 欧美一区中文字幕| 日韩精品视频网站| 欧美日韩国产影片| 一区二区三区四区五区视频在线观看| 成人h精品动漫一区二区三区| 久久久久久久久久久99999| 黄色资源网久久资源365| 欧美一区二区在线看| 亚洲无线码一区二区三区| 欧美另类变人与禽xxxxx| 亚洲午夜电影在线观看| 日本高清视频一区二区| 中文字幕一区av| www.66久久| 亚洲欧美二区三区| 一本到不卡精品视频在线观看| 亚洲免费观看高清| 欧美中文一区二区三区| 亚洲精选免费视频| 欧美一区二区黄| 成人高清伦理免费影院在线观看| 国产性做久久久久久| av不卡在线播放| 午夜亚洲福利老司机| 欧美一激情一区二区三区| 国产精品69毛片高清亚洲| 亚洲夂夂婷婷色拍ww47| 欧美一区二区国产| 99久久国产综合精品女不卡|