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

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

?? sqldriverediteh.pas

?? 一個功能強大的DBGRID控件
?? 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: TBookmarkStr;
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}
    );

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一区二区三区免费野_久草精品视频
韩国精品一区二区| 亚洲超碰97人人做人人爱| 亚洲国产wwwccc36天堂| 国产精品一线二线三线| 欧美另类变人与禽xxxxx| 日本一区二区三区四区| 婷婷夜色潮精品综合在线| 成人黄色在线看| 日韩欧美一级片| 亚洲欧美国产高清| 国产成人综合自拍| 日韩三级伦理片妻子的秘密按摩| 亚洲另类色综合网站| 国产成人av电影在线| 欧美一级一级性生活免费录像| 亚洲免费色视频| 成人晚上爱看视频| 精品粉嫩aⅴ一区二区三区四区| 亚洲午夜av在线| 99久久99久久精品免费观看| 久久久精品免费网站| 全国精品久久少妇| 欧美日韩精品高清| 尤物在线观看一区| 91免费在线看| 国产精品剧情在线亚洲| 国产麻豆精品视频| 精品国产污污免费网站入口 | 精品免费一区二区三区| 午夜欧美视频在线观看| 在线观看日韩毛片| 亚洲精品日韩综合观看成人91| 成人av电影免费观看| 国产精品麻豆久久久| 国产精品一区二区果冻传媒| 精品久久久三级丝袜| 久久国产精品露脸对白| 日韩一区二区在线播放| 日韩精品高清不卡| 欧美狂野另类xxxxoooo| 五月婷婷久久丁香| 欧美猛男超大videosgay| 亚洲动漫第一页| 欧美精品乱人伦久久久久久| 亚洲成国产人片在线观看| 欧美日韩激情一区| 亚洲成av人片观看| 51午夜精品国产| 日本亚洲最大的色成网站www| 欧美日韩三级在线| 亚洲va欧美va天堂v国产综合| 欧美日韩你懂的| 日韩精品91亚洲二区在线观看| 欧美日韩三级在线| 美女国产一区二区三区| 精品国产免费一区二区三区四区 | 丝袜a∨在线一区二区三区不卡| 欧美日韩免费电影| 日韩精品乱码免费| 精品不卡在线视频| 丁香婷婷综合激情五月色| 国产精品美女久久久久久2018| 97久久精品人人做人人爽| 亚洲精品国产视频| 欧美日韩国产一区| 久久精品国产精品亚洲精品| 久久亚洲捆绑美女| 99在线精品免费| 亚洲一区二区3| 精品三级在线观看| 成人深夜视频在线观看| 玉米视频成人免费看| 91精品黄色片免费大全| 国产美女视频一区| 亚洲欧美在线视频观看| 欧美日韩国产综合视频在线观看| 久久精品国产久精国产爱| 亚洲国产精品ⅴa在线观看| 色www精品视频在线观看| 午夜电影网亚洲视频| 久久精品视频在线免费观看| 99热这里都是精品| 日日摸夜夜添夜夜添国产精品| 精品国产三级a在线观看| 91在线无精精品入口| 天堂蜜桃91精品| 欧美极品美女视频| 欧美日产国产精品| 国产剧情一区二区| 一区二区三区中文字幕在线观看| 91精品国产高清一区二区三区蜜臀| 国产在线精品不卡| 一区二区三区在线观看网站| 日韩欧美在线1卡| 91在线观看视频| 老司机免费视频一区二区| 国产精品女主播在线观看| 欧美日韩aaaaa| 波多野结衣在线一区| 天天综合网 天天综合色| 欧美韩国日本不卡| 884aa四虎影成人精品一区| 成人午夜短视频| 美女诱惑一区二区| 亚洲色图丝袜美腿| 精品sm捆绑视频| 欧美亚洲愉拍一区二区| 国产精品自产自拍| 亚洲国产精品麻豆| 国产精品欧美一级免费| 日韩视频123| 在线观看日韩电影| 懂色av中文一区二区三区| 日韩综合在线视频| 亚洲天堂成人在线观看| 久久亚洲综合色| 欧美精品第1页| 91传媒视频在线播放| 国产成人av网站| 蜜桃av一区二区在线观看| 一区二区三区产品免费精品久久75| 精品99一区二区| 91麻豆精品国产| 91成人在线免费观看| 成人av免费网站| 国产在线精品免费av| 喷水一区二区三区| 一区二区理论电影在线观看| 欧美韩国日本一区| 久久天天做天天爱综合色| 69堂亚洲精品首页| 欧美主播一区二区三区| 成人av在线资源网| 国产精品一色哟哟哟| 久久se精品一区二区| 日韩黄色片在线观看| 夜夜嗨av一区二区三区中文字幕 | 欧美剧情片在线观看| 色综合激情久久| 91在线视频免费91| 国产精品一区在线观看你懂的| 美女一区二区三区在线观看| 亚洲高清免费在线| 亚洲一区二区欧美激情| 亚洲最新视频在线观看| 亚洲视频狠狠干| 日韩理论在线观看| 国产精品成人午夜| 国产精品青草综合久久久久99| 欧美国产成人在线| 日本一区二区三区久久久久久久久不 | 国产精品77777| 久久国产人妖系列| 免费精品视频最新在线| 日韩电影免费在线看| 爽好久久久欧美精品| 视频一区二区三区中文字幕| 午夜精品久久久久久| 午夜精品久久久久久久蜜桃app| 亚洲国产va精品久久久不卡综合| 亚洲一区二区欧美日韩| 亚洲va韩国va欧美va| 婷婷六月综合亚洲| 麻豆久久久久久| 国产一区二区主播在线| 国产福利精品一区| 成人高清在线视频| 91视频免费播放| 欧美综合在线视频| 3d成人h动漫网站入口| 日韩精品一区二区在线| 久久九九久久九九| 国产精品国产自产拍在线| 亚洲同性gay激情无套| 亚洲福中文字幕伊人影院| 日韩av一区二区三区| 精品在线观看视频| 国产精品一二三四| 成人av在线资源| 欧美日韩精品免费| 精品福利一区二区三区免费视频| 亚洲国产精华液网站w| 亚洲精品成人a在线观看| 午夜不卡在线视频| 精品无人码麻豆乱码1区2区| 国产suv精品一区二区6| 92精品国产成人观看免费 | 欧美bbbbb| 韩国三级电影一区二区| 免费精品99久久国产综合精品| 日韩电影在线免费看| 六月丁香婷婷久久| 久久精品99国产精品| 成人免费毛片高清视频| 91视频国产观看| 欧美日韩一区二区三区在线看 | 成人三级伦理片| 丁香网亚洲国际| 欧美日韩电影在线播放| 日韩精品中午字幕|