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

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

?? sqldriverediteh.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
procedure TDesignDataBaseEh.AssignFromDesignDataDriver(DesignDataDriver,
  RuntimeDataDriver: TCustomSQLDataDriverEh);
begin
  RuntimeDataDriver.SelectCommand := DesignDataDriver.SelectCommand;
  RuntimeDataDriver.UpdateCommand := DesignDataDriver.UpdateCommand;
  RuntimeDataDriver.InsertCommand := DesignDataDriver.InsertCommand;
  RuntimeDataDriver.DeleteCommand := DesignDataDriver.DeleteCommand;
  RuntimeDataDriver.GetrecCommand := DesignDataDriver.GetrecCommand;
  if DesignDataDriver is TCustomSQLDataDriverEh then
  begin
    TCustomSQLDataDriverEh(RuntimeDataDriver).SpecParams := TCustomSQLDataDriverEh(DesignDataDriver).SpecParams;
    TCustomSQLDataDriverEh(RuntimeDataDriver).DynaSQLParams := TCustomSQLDataDriverEh(DesignDataDriver).DynaSQLParams;
  end;
end;

procedure TDesignDataBaseEh.AssignToDesignDataDriver(DesignDataDriver,
  RuntimeDataDriver: TCustomSQLDataDriverEh);
begin
  DesignDataDriver.SelectCommand := RuntimeDataDriver.SelectCommand;
  DesignDataDriver.UpdateCommand := RuntimeDataDriver.UpdateCommand;
  DesignDataDriver.InsertCommand := RuntimeDataDriver.InsertCommand;
  DesignDataDriver.DeleteCommand := RuntimeDataDriver.DeleteCommand;
  DesignDataDriver.GetrecCommand := RuntimeDataDriver.GetrecCommand;
  if DesignDataDriver is TCustomSQLDataDriverEh then
  begin
    TCustomSQLDataDriverEh(DesignDataDriver).SpecParams := TCustomSQLDataDriverEh(RuntimeDataDriver).SpecParams;
    TCustomSQLDataDriverEh(DesignDataDriver).DynaSQLParams := TCustomSQLDataDriverEh(RuntimeDataDriver).DynaSQLParams;
  end;
end;

function TDesignDataBaseEh.BuildObjectTree(List: TList): Boolean;
begin
  Result := False;
end;

function TDesignDataBaseEh.BuildUpdates(
  DataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  Result := False;
end;

function TDesignDataBaseEh.CreateDesignCopy(
  RTDataDriver: TCustomSQLDataDriverEh): TCustomSQLDataDriverEh;
begin
  Result := nil;
end;

function TDesignDataBaseEh.CreateReader(SQL: String;
  FParams: TParamsArr): TDataSet;
begin
  Result := nil;
end;

function TDesignDataBaseEh.DesignDataBaseConnetionEqual(
  DataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  Result := False;
end;

function TDesignDataBaseEh.Execute(Command: TCustomSQLCommandEh;
  var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
begin
  Result := 0;
end;

function TDesignDataBaseEh.Execute(SQLText: String;
  CommandType: TSQLCommandTypeEh; VarParams: Variant;
  var Cursor: TDataSet): Integer;
begin
  Result := 0;
end;

function TDesignDataBaseEh.CreateTreeDataSet: TMemTableEh;
begin
  Result := TMemTableEh.Create(Self);
  with Result do
  begin
    Name := 'mtDBTree';
    FieldDefs.Add('Id', ftAutoInc);
    FieldDefs.Add('RefParent', ftInteger);
    FieldDefs.Add('Name', ftString, 500);
    FieldDefs.Add('ChieldCount', ftInteger);
    FieldDefs.Add('Description', ftString, 500);
    FieldDefs.Add('RefData', ftUnknown);
    FieldDefs.Add('ImageIndex', ftInteger);

    TreeList.KeyFieldName := 'Id';
    TreeList.RefParentFieldName := 'RefParent';
    TreeList.DefaultNodeExpanded := False;
    TreeList.DefaultNodeHasChildren := True;
    TreeList.Active := True;
    OnTreeNodeExpanding := mtDBTreeExpanding;
    CreateDataSet;
  end;
end;

function TDesignDataBaseEh.GetObjectTreeDataSet: TDataSet;
var
  List: TObjectList;
  i: Integer;
begin
  if not FTreeDataSet.IsEmpty then
  begin
    Result := FTreeDataSet;
    Exit;
  end;
  FTreeDataSet.TreeList.DefaultNodeHasChildren := True;
  List := TObjectList.Create(False);
  try
    try
      if not GetConnected then
        SetConnected(True);

      BuildObjectTree(List);
    except
      on E: Exception do
        Application.HandleException(E);
    end;

    FTreeDataSet.DisableControls;
    try
//      mtDBTreeLoading := True;
      for i := 0 to List.Count-1 do
      begin
        FTreeDataSet.Append;
        FTreeDataSet.Fields[0].Value := Null;
        FTreeDataSet.Fields[1].Value := Null;
        FTreeDataSet.Fields[2].Value := TSQLTreeNode(List[i]).FName;
        FTreeDataSet.Fields[3].Value := 0;
        FTreeDataSet.Fields[4].Value := TSQLTreeNode(List[i]).FName;
        FTreeDataSet.Fields[5].Value := RefObjectToVariant(List[i]);
        FTreeDataSet.Fields[6].Value := TSQLTreeNode(List[i]).FImageIndex;
        FTreeDataSet.Post;
      end;
      FTreeDataSet.First;
    finally
      FTreeDataSet.EnableControls;
    end;
    Result := FTreeDataSet;
  finally
//  mtDBTreeLoading := False;
    List.Free;
  end;
end;

procedure TDesignDataBaseEh.mtDBTreeExpanding(Sender: TObject;
  RecordNumber: Integer; var AllowExpansion: Boolean);

  function AddChilds(Node: TObject; RefParent: Variant): Integer;
  var
    List: Tlist;
    i: Integer;
  begin
    Result := 0;
    if (Node <> nil) and ((Node as TSQLTreeNode) <> nil) then
      with Node as TSQLTreeNode do
      begin
        if not FNodesLoaded and (FNodesTemplate <> nil) then
        begin
          List := FNodesTemplate.FNodeManager.CreateNodes(Node as TSQLTreeNode);
//          mtDBTreeLoading := True;
          FTreeDataSet.TreeList.DefaultNodeHasChildren := FNodesTemplate.FHasNodes;
          for i := 0 to List.Count-1 do
          begin
            FTreeDataSet.Append;
            FTreeDataSet.Fields[0].Value := Null;
            FTreeDataSet.Fields[1].Value := RefParent;
            FTreeDataSet.Fields[2].Value := TSQLTreeNode(List[i]).FName;
            FTreeDataSet.Fields[3].Value := 0;
            FTreeDataSet.Fields[4].Value := TSQLTreeNode(List[i]).FName;
            FTreeDataSet.Fields[5].Value := RefObjectToVariant(List[i]);
            FTreeDataSet.Fields[6].Value := TSQLTreeNode(List[i]).FImageIndex;
            FTreeDataSet.Post;

            Inc(Result);
          end;
          List.Free;
        end;
        FNodesLoaded := True;
//        mtDBTreeLoading := False;
      end;
  end;

var
  Id, ChildCount: Integer;
  OldBM, RNBM: TBookmark;
begin
  FTreeDataSet.DisableControls;
  try
//  mtDBTreeLoading := True;
  OldBM := FTreeDataSet.Bookmark;
  FTreeDataSet.RecNo := RecordNumber;
  RNBM := FTreeDataSet.Bookmark;
  Id := FTreeDataSet['ID'];

  if FTreeDataSet.TreeNodeHasChildren and (FTreeDataSet.TreeNodeChildCount = 0) then
  begin
    ChildCount := AddChilds(VariantToRefObject(FTreeDataSet['RefData']), Id);
    FTreeDataSet.Bookmark := RNBM;
    FTreeDataSet.TreeNodeHasChildren := (ChildCount > 0);
    FTreeDataSet.Edit;
    FTreeDataSet['ChieldCount'] := ChildCount;
    FTreeDataSet.Post;
  end;
  if DataSetBookmarkValid(FTreeDataSet, OldBM) then
    FTreeDataSet.Bookmark := OldBM;
  finally
    FTreeDataSet.EnableControls;
//    mtDBTreeLoading := False;
  end;
end;

procedure TDesignDataBaseEh.ResetDesignInfo;
begin
  FTreeDataSet.EmptyTable;
end;

{ TSQLDataEditWin }

var
  DataTypeNames :array [TFieldType] of String = (
    'ftUnknown', 'ftString', 'ftSmallint', 'ftInteger', 'ftWord',
    'ftBoolean', 'ftFloat', 'ftCurrency', 'ftBCD', 'ftDate', 'ftTime', 'ftDateTime',
    'ftBytes', 'ftVarBytes', 'ftAutoInc', 'ftBlob', 'ftMemo', 'ftGraphic', 'ftFmtMemo',
    'ftParadoxOle', 'ftDBaseOle', 'ftTypedBinary', 'ftCursor', 'ftFixedChar', 'ftWideString',
    'ftLargeint', 'ftADT', 'ftArray', 'ftReference', 'ftDataSet', 'ftOraBlob', 'ftOraClob',
    'ftVariant', 'ftInterface', 'ftIDispatch', 'ftGuid'
{$IFDEF EH_LIB_6},  'ftTimeStamp', 'ftFMTBcd'{$ENDIF}
{$IFDEF EH_LIB_10},  'ftFixedWideChar', 'ftWideMemo', 'ftOraTimeStamp', 'ftOraInterval'{$ENDIF}
    ,'ftLongWord', 'ftShortint', 'ftByte', 'ftExtended', 'ftConnection', 'ftParams', 'ftStream'
    );

function EditSQLDataDriverEh(DataDriver: TCustomSQLDataDriverEh): Integer;
var
  Win: TSQLDataEditWin;
//  IDDB: IDesignDataBaseEh;
begin
  Result := 0;
  Win := TSQLDataEditWin.Create(Application);
  SQLDataEditWin := Win;

  if DataDriver.GetDesignDataBase = nil then Exit;

  Win.DataDriver := DataDriver;
  Win.DesignDriver := TDesignDataBaseEh(Win.DataDriver.DesignDataBase).CreateDesignCopy(DataDriver);
//  Win.DesignDriver := IDDB.CreateDesignCopy(DataDriver);
//  IDDB := nil;
  Win.DesignDriver.OnExecuteCommand := Win.ExecuteCommand;
  Win.DesignDriver.DesignDataBase := DataDriver.GetDesignDataBase;
  Win.DesignDataBase := TDesignDataBaseEh(DataDriver.GetDesignDataBase);
  Win.DesignDataBase.AssignToDesignDataDriver(Win.DesignDriver, Win.DataDriver);

//  Win.BuildObjectTree;
//  ShowMessage('Win.SetObjectTreeParams');
  Win.SetObjectTreeParams;

  Win.MemTableEh1.DataDriver := Win.DesignDriver;
  Win.AssignToDesignControls;

  Result := Win.ShowModal;
  if Result = mrOk then
  begin
    if Win.DesignDataBase = nil then
      DataDriver.GetDesignDataBase;
    if Win.DesignDataBase <> nil then
      Win.DesignDataBase.AssignFromDesignDataDriver(Win.DesignDriver, Win.DataDriver);
    if (DataDriver.Owner is TForm) and (TForm(DataDriver.Owner).Designer <> nil) then
      TForm(DataDriver.Owner).Designer.Modified;
  end;

  Win.DesignDriver.Free;
  Win.Free;
end;

procedure TSQLDataEditWin.FormCreate(Sender: TObject);
begin
  Font := Screen.IconFont;
  FrameInsertSQL.mtParams.CreateDataSet;
  FrameInsertSQL.Created;
  FrameUpdateSQL.mtParams.CreateDataSet;
  FrameUpdateSQL.Created;
  FrameDeleteSQL.mtParams.CreateDataSet;
  FrameDeleteSQL.Created;
  FrameGetRecSQL.mtParams.CreateDataSet;
  FrameGetRecSQL.Created;

(*  mtDBTree.TreeList.KeyFieldName := 'Id';
  mtDBTree.TreeList.RefParentFieldName := 'RefParent';
  mtDBTree.TreeList.DefaultNodeExpanded := False;
  mtDBTree.TreeList.DefaultNodeHasChildren := True;
  mtDBTree.TreeList.Active := True;
  mtDBTree.OnTreeNodeExpanding := mtDBTreeExpanding;
*)  
end;

destructor TSQLDataEditWin.Destroy;
begin
  mtTreeDetail.DestroyTable;
  mtDBTree.DestroyTable;
  MemTableEh1.DestroyTable;
  inherited Destroy;
end;

function TSQLDataEditWin.ExecuteCommand(DataDriver: TCustomSQLDataDriverEh;
 Command: TCustomSQLCommandEh; var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
begin
//  FreeOnEof := True;
//  Result := (DesignDriver.DesignDataBase as IDesignDataBaseEh).Execute(Command, Cursor);
  Result := TDesignDataBaseEh(DesignDriver.DesignDataBase).Execute(Command, Cursor, FreeOnEof);

end;

{
procedure TSQLDataEditWin.SetDataDriver(const Value: TCustomSQLDataDriverEh);
var
  i: Integer;
begin
  FDataDriver := Value;
  if FDataDriver.DesignDataBase = nil then
  begin
    for i := 0 to GetDesignDataBaseList.Count-1 do
      if TDesignDataBaseEh(GetDesignDataBaseList[i]).DesignDataBaseConnetionEqual(DataDriver) then
      begin
        DataDriver.DesignDataBase := IDesignDataBaseEh(GetDesignDataBaseList[i]);
        Exit;
      end;

    DataDriver.DesignDataBase := DataDriver.CreateDesignDataBase;
  end;
end;
}

procedure TSQLDataEditWin.bExecuteClick(Sender: TObject);
//var
//  ds: TDataSet;
begin
//  DataDriver.DesignDataBase.Execute(DataDriver.SelectCommand, ds);
  mtParams.CheckBrowseMode;
  MemTableEh1.Close;
  AssignToDesignDriver;
//  MemTableEh1.ProviderDataSet := ds;
  MemTableEh1.Open;
end;

procedure TSQLDataEditWin.AssignToDesignControls;
var
  i: Integer;
  Params: TParams;
begin
  if DesignDriver <> nil then
  begin
    mtParams.EmptyTable;
    Memo1.Lines.Text := DesignDriver.SelectCommand.CommandText.Text;
//    Params := TParams.Create;
    try
      Params := DesignDriver.SelectCommand.GetParams;//(Params);
      for i := 0 to Params.Count-1 do
      begin
        mtParams.AppendRecord(
          [Params[i].Name,
           DataTypeNames[Params[i].DataType],
           Params[i].Text
          ]);
      end;
    finally
//      Params.Free;
    end;
    FrameInsertSQL.AssignToDesignControls(DesignDriver.InsertCommand);
    FrameUpdateSQL.AssignToDesignControls(DesignDriver.UpdateCommand);
    FrameDeleteSQL.AssignToDesignControls(DesignDriver.DeleteCommand);
    FrameGetRecSQL.AssignToDesignControls(DesignDriver.GetRecCommand);
    mSpecParams.Lines := TCustomSQLDataDriverEh(DesignDriver).SpecParams;
    MemoUpdateFields.Lines.CommaText := TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.UpdateFields;
    MemoKeyFields.Lines.CommaText := TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.KeyFields;
    dbeUpdateTable.Text := TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.UpdateTable;
    cbDinaUpdateSQL.Checked := dsoDynamicSQLUpdateEh in TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.Options;
    cbDinaInsertSQL.Checked := dsoDynamicSQLInsertEh in TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.Options;
    cbDinaDeleteSQL.Checked := dsoDynamicSQLDeleteEh in TCustomSQLDataDriverEh(DesignDriver).DynaSQLParams.Options;
  end;
end;

procedure TSQLDataEditWin.AssignToDesignDriver;
var
  i: Integer;
  Params: TParams;
begin
  if DesignDriver <> nil then
  begin
    Params := TParams.Create;
    try
    //Select
      DesignDriver.SelectCommand.CommandText.Text := Memo1.Lines.Text;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区在线观看| 久久精品国产久精国产爱| 波多野洁衣一区| 午夜伦理一区二区| 久久综合狠狠综合久久综合88| 一本到三区不卡视频| 丝袜亚洲精品中文字幕一区| 久久青草国产手机看片福利盒子 | 欧美日韩的一区二区| 成人国产免费视频| 国产在线不卡一区| 美腿丝袜亚洲三区| 亚洲综合色婷婷| 亚洲综合男人的天堂| 亚洲色图视频免费播放| 国产精品欧美久久久久无广告| 久久久久国色av免费看影院| 亚洲欧美日韩电影| 日本一区中文字幕| 国产成人精品免费在线| 99久久99久久久精品齐齐| 国产成人亚洲精品青草天美 | 国产综合一区二区| 成人av在线一区二区| 色先锋资源久久综合| 欧美日韩综合在线免费观看| 911精品国产一区二区在线| 久久综合精品国产一区二区三区| 日韩视频在线你懂得| 欧美国产禁国产网站cc| 亚洲蜜臀av乱码久久精品蜜桃| 男女男精品视频网| 99精品一区二区| 精品欧美久久久| 亚洲一区二区综合| 粉嫩aⅴ一区二区三区四区五区| 色域天天综合网| 国产亚洲欧美激情| 免费欧美日韩国产三级电影| 久久99国产精品久久99| 色又黄又爽网站www久久| 欧美一级欧美三级| 玉足女爽爽91| 国产一区二区主播在线| 欧美日本一区二区三区四区| 欧美激情在线一区二区三区| 毛片不卡一区二区| 欧美在线观看视频在线| 国产亚洲欧美激情| 久久99精品久久久久久动态图| 欧美三级在线看| 国产精品国产馆在线真实露脸| 国产盗摄一区二区三区| 久久亚洲春色中文字幕久久久| 亚洲欧美一区二区三区极速播放| 国产原创一区二区三区| 久久麻豆一区二区| heyzo一本久久综合| 亚洲视频一区在线| 白白色 亚洲乱淫| 国产精品久久久久精k8 | 亚洲激情在线播放| 成人av综合在线| 久久日韩粉嫩一区二区三区 | 国产大片一区二区| 中日韩免费视频中文字幕| 久久精品国产秦先生| 国产区在线观看成人精品| 国产精品69久久久久水密桃| 欧美成人a视频| 国产在线精品一区二区三区不卡| 精品对白一区国产伦| 国产精品一区二区x88av| 久久久久久麻豆| 成人动漫一区二区在线| 亚洲成人动漫精品| 国产午夜精品一区二区 | 国产成人精品亚洲日本在线桃色 | 国产一区二区三区美女| 国产成人自拍高清视频在线免费播放| 精品国产免费久久| 国产一区二区在线免费观看| 国产精品毛片久久久久久| 欧美视频一二三区| 国产精品1024| 欧美精品一区二区三区在线播放| 91久久久免费一区二区| 国产精品的网站| 亚洲免费在线电影| 色综合激情五月| 亚洲第一福利一区| 日本一区二区成人在线| 亚洲成人免费观看| 91精品国产综合久久久久| 成人高清伦理免费影院在线观看| 日本午夜一本久久久综合| 久久久99免费| 久久精品国产亚洲a| 亚洲精品在线观看视频| 精品久久99ma| 国产一区视频导航| 久久综合色8888| 欧美精品久久久久久久多人混战| 国产一区二区不卡| 99视频一区二区| 色综合久久天天| 91亚洲精品久久久蜜桃网站| 亚洲欧洲制服丝袜| 久久99国产精品麻豆| av不卡免费电影| 久久久久久日产精品| 国产精品综合视频| 一区二区三区欧美日| 亚洲视频 欧洲视频| 黑人精品欧美一区二区蜜桃| 91麻豆自制传媒国产之光| 亚洲综合激情小说| 自拍偷自拍亚洲精品播放| 91精品国产综合久久香蕉麻豆 | 久久精品国产秦先生| 2021久久国产精品不只是精品| 国产成人综合自拍| 91成人在线免费观看| 亚洲综合小说图片| 亚洲人亚洲人成电影网站色| 男人的天堂亚洲一区| 亚洲第一精品在线| 另类小说图片综合网| 亚洲一区二区三区中文字幕| 亚洲欧美aⅴ...| 欧美国产综合色视频| 一区二区三区精品| 老司机精品视频在线| 99精品视频一区| 91精品国产丝袜白色高跟鞋| 久久久久久久国产精品影院| 亚洲欧美日韩国产手机在线 | 欧美激情一区不卡| 亚洲小说欧美激情另类| 经典一区二区三区| 色8久久人人97超碰香蕉987| 欧美一区二区成人| 亚洲美女一区二区三区| 欧美96一区二区免费视频| 色哟哟一区二区三区| 日韩精品一区二区三区在线播放 | 在线观看日韩一区| 国产精品三级av| 国产在线视视频有精品| 精品视频一区二区不卡| 日本一二三不卡| 激情图片小说一区| 欧美一区二区观看视频| 亚洲一区视频在线| 99综合电影在线视频| 久久综合久久综合亚洲| 视频一区中文字幕国产| 色综合中文字幕国产 | 欧美日本韩国一区二区三区视频| 国产精品全国免费观看高清| 国产一区不卡在线| 久久亚洲免费视频| 极品少妇一区二区| 欧美一区二区网站| 青青草国产成人99久久| 欧美精品一卡二卡| 日韩精品欧美精品| 欧美一区二区福利视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩一区国产| 视频一区视频二区中文字幕| 欧美日本一区二区| 蜜桃视频第一区免费观看| 欧美福利视频一区| 日韩在线卡一卡二| 777午夜精品免费视频| 久久er精品视频| 久久精品亚洲精品国产欧美| 国产精品18久久久久| 成人免费一区二区三区视频| 99re在线精品| 裸体歌舞表演一区二区| 国产色综合久久| 不卡视频在线看| 奇米精品一区二区三区四区| 久久伊99综合婷婷久久伊| 成人精品视频.| 日本不卡视频在线| 中文字幕在线一区二区三区| 91久久精品午夜一区二区| 秋霞成人午夜伦在线观看| 中文字幕在线一区| 欧美剧情电影在线观看完整版免费励志电影 | 毛片不卡一区二区| 亚洲精品一二三| www日韩大片| 欧美精品久久一区| 色综合久久综合网| 国产激情一区二区三区| 丝袜亚洲另类丝袜在线|