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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sqldriverediteh.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 5 頁
字號(hào):
{*******************************************************}
{                                                       }
{               EhLib v4.2 (Build 4.2.09)               }
{                                                       }
{                TSQLDataEditWin form                   }
{                                                       }
{     Copyright (c) 2004-2006 by Dmitry V. Bolshakov    }
{                                                       }
{*******************************************************}

unit SQLDriverEditEh;

{$I EHLIB.INC}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Grids, DBGridEh, ExtCtrls, Buttons, Mask,
  DBCtrlsEh, DataDriverEh, DB, MemTableEh, MemTableDataEh, SQLEditFrameEh,
{$IFDEF CIL}
  EhLibVCLNET,
{$ELSE}
  EhLibVCL,
{$ENDIF}
{$IFDEF EH_LIB_6}
  Variants,
{$ENDIF}
  Contnrs, Menus, ImgList, StdActns, ActnList, ToolWin, GridsEh;

type

{ TSQLDataEditWin }
  TSQLTreeNode = class;
  TCustomDBService = class;
  TDesignDataBaseEh = class;
  TCustomDBServiceClass = class of TCustomDBService;

(*  IGetSQLTreeNode = interface
  ['{48BFF91A-8FD5-4F69-8938-8251C1B11C3A}']
    function GetSQLTreeNode: TSQLTreeNode;
  end;
*)

  TSQLDataEditWin = class(TForm)
    Panel1: TPanel;
    DBGridEh1: TDBGridEh;
    Panel2: TPanel;
    StatusBar1: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    Splitter1: TSplitter;
    Splitter3: TSplitter;
    Panel6: TPanel;
    Panel7: TPanel;
    DBEditEh1: TDBEditEh;
    sbRefreshTree: TSpeedButton;
    MemTableEh1: TMemTableEh;
    DataSource1: TDataSource;
    mtParams: TMemTableEh;
    dsParams: TDataSource;
    mtParamsParName: TStringField;
    mtParamsParType: TStringField;
    mtParamsParValue: TStringField;
    gridTreeDetail: TDBGridEh;
    mtTreeDetail: TMemTableEh;
    dsTreeDetail: TDataSource;
    Splitter4: TSplitter;
    Panel3: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Splitter2: TSplitter;
    PanelParams: TPanel;
    gridParams: TDBGridEh;
    Panel5: TPanel;
    Memo1: TMemo;
    Panel8: TPanel;
    bExecute: TButton;
    Panel9: TPanel;
    SpeedButton2: TSpeedButton;
    TabSheet2: TTabSheet;
    FrameInsertSQL: TSQLEditFrame;
    TabSheet3: TTabSheet;
    FrameUpdateSQL: TSQLEditFrame;
    TabSheet4: TTabSheet;
    FrameDeleteSQL: TSQLEditFrame;
    bBuildUpdates: TButton;
    Image1: TImage;
    Panel4: TPanel;
    sbRefresh: TSpeedButton;
    PopupMenu1: TPopupMenu;
    Ggg1: TMenuItem;
    gridDBTree: TDBGridEh;
    dsDBTree: TDataSource;
    mtDBTree: TMemTableEh;
    mtDBTreeName: TStringField;
    mtDBTreeChieldCount: TIntegerField;
    mtDBTreeDescription: TStringField;
    mtDBTreeId: TAutoIncField;
    mtDBTreeRefParent: TIntegerField;
    bCheck: TButton;
    bQueryPlan: TButton;
    spCut: TSpeedButton;
    sbCopy: TSpeedButton;
    spPaste: TSpeedButton;
    sbSelectAll: TSpeedButton;
    ActionList1: TActionList;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    ImageList1: TImageList;
    ImageList2: TImageList;
    mtDBTreeImageIndex: TIntegerField;
    TabSheet5: TTabSheet;
    FrameGetRecSQL: TSQLEditFrame;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    tsSpecParams: TTabSheet;
    Panel11: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    MemoUpdateFields: TMemo;
    MemoKeyFields: TMemo;
    Bevel1: TBevel;
    Bevel2: TBevel;
    dbeUpdateTable: TDBEditEh;
    Label3: TLabel;
    Bevel3: TBevel;
    GroupBox1: TGroupBox;
    cbDinaDeleteSQL: TCheckBox;
    cbDinaInsertSQL: TCheckBox;
    cbDinaUpdateSQL: TCheckBox;
    Panel12: TPanel;
    mSpecParams: TMemo;
    Panel10: TPanel;
    Label4: TLabel;
    Bevel4: TBevel;
    bLoadSpecString: TButton;
    Bevel5: TBevel;
    mtDBTreeRefData: TRefObjectField;
    procedure sbRefreshTreeClick(Sender: TObject);
    procedure bExecuteClick(Sender: TObject);
    procedure sbHideShowClick(Sender: TObject);
    procedure Splitter2CanResize(Sender: TObject; var NewSize: Integer;
      var Accept: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure bBuildUpdatesClick(Sender: TObject);
    procedure MemTableEh1AfterOpen(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Memo1Exit(Sender: TObject);
    procedure Memo1Enter(Sender: TObject);
    procedure sbRefreshClick(Sender: TObject);
    procedure DBEditEh1EditButtons0Click(Sender: TObject;
      var Handled: Boolean);
    procedure DBEditEh1EditButtons1Click(Sender: TObject;
      var Handled: Boolean);
    procedure Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Ggg1Click(Sender: TObject);
    procedure dsDBTreeDataChange(Sender: TObject; Field: TField);
    procedure gridDBTreeMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure gridDBTreeStartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure bQueryPlanClick(Sender: TObject);
    procedure gridDBTreeColumns0GetCellParams(Sender: TObject;
      EditMode: Boolean; Params: TColCellParamsEh);
    procedure bLoadSpecStringClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure gridParamsColumns0UpdateData(Sender: TObject; var Text: string;
      var Value: Variant; var UseText, Handled: Boolean);
  private
    FCharHeight: Integer;
    FSQLCanvas: TControlCanvas;
    FDesignDriver: TCustomSQLDataDriverEh;
    FDataDriver: TCustomSQLDataDriverEh;
    FDesignDataBase: TDesignDataBaseEh;
    procedure SetDesignDataBase(const Value: TDesignDataBaseEh);
//    procedure InsertText(Text: string; AddComma: Boolean = True);
    procedure DrawCaretPosIndicator;
//    procedure SetDataDriver(const Value: TCustomSQLDataDriverEh);
    property DesignDriver: TCustomSQLDataDriverEh read FDesignDriver write FDesignDriver;
    procedure SetObjectTreeParams;
    procedure ResetObjectTreeParams;
//    procedure BuildObjectTree;
    function ExecuteCommand(DataDriver: TCustomSQLDataDriverEh;
      Command: TCustomSQLCommandEh; var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
//    function DesignDataBase: TDesignDataBaseEh;
    procedure DesignDatabaseChanged();
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
    Panel3Width: Integer;
//    DragSQLTreeNode: IGetSQLTreeNode;
    DragSQLTreeNode: TSQLTreeNode;
    mtDBTreeLoading: Boolean;
    destructor Destroy; override;
    procedure AssignToDesignDriver;
    procedure AssignToDesignControls;
    procedure mtDBTreeExpanding(Sender: TObject; RecordNumber: Integer; var AllowExpansion: Boolean);
    procedure gridTreeDetailColumns0GetCellParams(Sender: TObject;
      EditMode: Boolean; Params: TColCellParamsEh);
    property DataDriver: TCustomSQLDataDriverEh read FDataDriver write FDataDriver;
    property DesignDataBase: TDesignDataBaseEh read FDesignDataBase write SetDesignDataBase;
  end;

  TParamsArr = array of Variant;

{ TDesignDataBaseEh }

  TDesignDataBaseEh = class(TComponent, IDesignDataBaseEh
{$IFNDEF EH_LIB_6}, IInterfaceComponentReference, IUnknown {$ENDIF}
    )
  protected
    FTreeDataSet: TMemTableEh;
    procedure RemoveFromDesignDataBaseList;
    function GetConnected: Boolean; virtual;
    procedure SetConnected(const Value: Boolean); virtual;
{$IFNDEF EH_LIB_6}
    { IInterfaceComponentReference }
    function IInterfaceComponentReference.GetComponent = IntfGetComponent;
    function IntfGetComponent: TComponent;
{$ENDIF}
  public
    constructor Create; reintroduce;
    destructor Destroy; override;
    function BuildObjectTree(List: TList): Boolean; virtual;
    function BuildUpdates(DataDriver: TCustomSQLDataDriverEh): Boolean; virtual;
//    function Connected: Boolean; virtual; abstract;
    function CreateDesignCopy(RTDataDriver: TCustomSQLDataDriverEh): TCustomSQLDataDriverEh; virtual;
    function CreateReader(SQL: String; FParams: TParamsArr): TDataSet; virtual;
    function DesignDataBaseConnetionEqual(DataDriver: TCustomSQLDataDriverEh): Boolean; virtual;
    function Execute(Command: TCustomSQLCommandEh; var Cursor: TDataSet; var FreeOnEof: Boolean): Integer; overload; virtual;
    function Execute(SQLText: String; CommandType: TSQLCommandTypeEh; VarParams: Variant; var Cursor: TDataSet): Integer; overload; virtual;
    function GetEngineName: String; virtual;
    function GetServerTypeName: String; virtual;
    function GetFieldList(const TableName: string; DataSet: TDataSet): Boolean; virtual;
    function GetSpecParamsList: String; virtual;
    function SupportCustomSQLDataDriver: Boolean; virtual; abstract;
    function GetCustomDBService: TCustomDBService; virtual;
    function GetIncrementObjectsList: TStrings; virtual;
    function GetObjectTreeDataSet: TDataSet; virtual;
    function CreateTreeDataSet: TMemTableEh; virtual;
    procedure mtDBTreeExpanding(Sender: TObject; RecordNumber: Integer; var AllowExpansion: Boolean);
    procedure BuildQueryPlan(PlanTable: TMemTableEh; Command: TCustomSQLCommandEh); virtual;
    procedure EditDatabaseParams; virtual;
    procedure ResetDesignInfo; virtual;
    procedure AssignFromDesignDataDriver(DesignDataDriver, RuntimeDataDriver: TCustomSQLDataDriverEh); virtual;
    procedure AssignToDesignDataDriver(DesignDataDriver, RuntimeDataDriver: TCustomSQLDataDriverEh); virtual;
    property Connected: Boolean read GetConnected write SetConnected;
  end;

  TDesignDataBaseClassEh = class of TDesignDataBaseEh;

{ Engines unils }

  TAccessEngineEh = class(TObject)
    function AccessEngineName: String; virtual; abstract;
    function CreateDesignDataBase(DataDriver: TCustomSQLDataDriverEh;
      DBServiceClass: TCustomDBServiceClass; DataBaseName: String): TDesignDataBaseEh;
        virtual; abstract;
  end;

  TSQLTreeNodeTemplate = class;

  TColumnAtribute = record
    FieldName: String;
    Title: String;
    Width: Integer;
  end;

  TFieldAtribute = record
    FieldName: String;
    FieldType: TMTDataFieldEh;
    Size: Integer;
  end;

  TGetTextEvent = function(Sender: TObject): String of object;

  TServicePopupParam = record
    Text: String;
    OnSelect: TNotifyEvent;
    OnGetMenuText: TGetTextEvent;
    OnGetDataText: TGetTextEvent;
  end;

  TServicePopupParams = array of TServicePopupParam;

  TColumnAttributes = array of TColumnAtribute;

  TFieldAtributesEh = array of TFieldAtribute;

//  TSQLTreeNode = class(TObject, IInterface, IGetSQLTreeNode)
//  TSQLTreeNode = class(TInterfacedObject, IGetSQLTreeNode)
  TSQLTreeNode = class(TObject)
  private
    FOnDragDrop: TDragDropEvent;
    function GetSQLTreeNode: TSQLTreeNode;
  protected
(*
{$IFNDEF CIL}
    { IInterface }
    function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
{$ENDIF}
*)
  public
    FFullName: String;
    FImageIndex: Integer;
    FMemRec: TMemoryRecordEh;
    FName: String;
    FNodes: TObjectList;
//    FNodes: TInterfaceList;
    FNodesLoaded: Boolean;
    FNodesSelect: String;
    FNodesTemplate: TSQLTreeNodeTemplate;
    FObjId: String;
//    FParent: IGetSQLTreeNode;
    FParent: TSQLTreeNode;
    FTable: TMemTableEh;
    FTableFields: String;
    FTableFilter: String;
    FTypeId: String;
    FParentRecordToTableMode: Boolean;
    PopupParams: TServicePopupParams;
    constructor Create;
    destructor Destroy; override;
//    procedure AddChild(Node: IGetSQLTreeNode);
    procedure AddChild(Node: TSQLTreeNode);
    function GetTable: TMemTableEh;
    property OnDragDrop: TDragDropEvent read FOnDragDrop write FOnDragDrop;
  end;

//  TSQLTreeNodeManager = class;

  TSQLTreeNodeTemplate = class(TObject)
  private
    FName: String;
    FMasterTemplateName: String;
    FNodesMemTableName: String;
    FParams: TParamsArr;
    FNodeManager: TCustomDBService;
    FObjIdFieldName: String;
    FInTreeTextFieldName: String;
    FNodesFilter: String;
//    FNodesFieldsInGrid: String;
    FNodesSQLClassName: String;
//    FFieldAttributes: TFieldAtributesEh;
    FColumnAttributes: TColumnAttributes;
    FOnNodeDragDrop: TDragDropEvent;
    FNodeDropMenuParams: TServicePopupParams;
    FTableNodeDropMenuParams: TServicePopupParams;
    FHasNodes: Boolean;
    FSelectedIndex: Integer;
    FAdditionalLoadSQL: String;
    FColumnAttributesStr: String;
    FAdditionalFielsInfo: String;
    procedure SetColumnAttributes(const Value: String);
  public
    constructor Create(ANodeManager: TCustomDBService;
                       AName: String
{                       ANodesSQLClassName: String;
                       AMasterTemplateName: String;
                       ANodesMemTableName: String;
//                       AParams: TParamsArr;
                       AParams: array of Variant;
                       AObjIdFieldName: String;
                       AInTreeTextFieldName: String;
                       AHasNodes: Boolean;
                       ANodesFilter: String;
                       ANodesFieldsInGrid: String;
                       AColumnAttributes: String = ''; // FieldName, Caption, Width
                       AAdditionalLoadSQL: String = '';
                       AAdditionalFielsInfo: String = '' // FieldName, Type, Width
}
    );
    destructor Destroy; override;
//    function CreateNodes(Parent: TSQLTreeNode): TList; virtual;
//    function CreateNode: IGetSQLTreeNode; virtual;
    function CreateNode: TSQLTreeNode; virtual;
    function DropMenuNodeText(Sender: TObject): String;
    function DropMenuNlCommaNodeText(Sender: TObject): String;
    function DropMenuSelectAstFromName(Sender: TObject): String;
    function DropMenuSelectAllFieldsFromName(Sender: TObject): String;
    function DropDataSelectAllFieldsFromName(Sender: TObject): String;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区在线| 爽好久久久欧美精品| 欧美影院精品一区| 国产一区二区0| 亚洲图片一区二区| 国产精品丝袜一区| 精品乱人伦小说| 欧美日韩亚州综合| www.色精品| 精品一区二区在线免费观看| 午夜日韩在线观看| 蜜臀久久久99精品久久久久久| 亚洲国产成人私人影院tom| 在线不卡免费欧美| 色女孩综合影院| 丁香五精品蜜臀久久久久99网站| 美国一区二区三区在线播放| 亚洲欧美经典视频| 欧美国产日韩亚洲一区| 91精品国产综合久久香蕉的特点| 成人免费av资源| 极品美女销魂一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 自拍偷拍亚洲综合| 中文字幕的久久| 国产拍揄自揄精品视频麻豆| 26uuu色噜噜精品一区二区| 91精品国产综合久久久久久久| 日本高清不卡视频| 9i看片成人免费高清| 成人av在线播放网址| 国产美女在线精品| 国产一区二区三区在线观看免费| 免费在线看成人av| 美女被吸乳得到大胸91| 婷婷国产v国产偷v亚洲高清| 亚洲一区在线播放| 亚洲成人tv网| 日韩黄色在线观看| 偷拍一区二区三区四区| 亚洲成人av在线电影| 亚洲综合在线免费观看| 亚洲精品日韩专区silk| 一色屋精品亚洲香蕉网站| 国产精品久久久久久久久免费桃花| 国产三级欧美三级日产三级99| 久久精品一区二区三区不卡| 久久久亚洲欧洲日产国码αv| www精品美女久久久tv| 精品成人一区二区| 久久人人爽人人爽| 国产视频在线观看一区二区三区| 欧美激情在线一区二区| 国产精品久久久久久久岛一牛影视 | 精品一区二区三区免费| 另类小说欧美激情| 国产综合久久久久影院| 成人性生交大片免费看中文| av在线不卡免费看| 欧美色图一区二区三区| 欧美一级免费观看| 精品成人免费观看| 欧美激情在线一区二区三区| 亚洲精品日日夜夜| 美腿丝袜亚洲一区| 国产成人精品网址| 91网站在线播放| 91精品国产入口在线| 2020日本不卡一区二区视频| 国产精品精品国产色婷婷| 亚洲一区二区三区爽爽爽爽爽| 日韩av一区二区在线影视| 激情六月婷婷久久| 日韩欧美一级二级三级久久久| 2021国产精品久久精品| 亚洲黄色在线视频| 蜜臀99久久精品久久久久久软件| 福利视频网站一区二区三区| 色老汉av一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 日韩欧美美女一区二区三区| 欧美国产精品一区| 亚洲第一精品在线| 国产不卡在线视频| 欧洲精品一区二区三区在线观看| 日韩精品一区二区三区视频| 综合在线观看色| 麻豆久久久久久| 色哟哟亚洲精品| 久久久久久久一区| 亚洲午夜久久久| 国产电影精品久久禁18| 91精品国产一区二区三区蜜臀| 国产精品视频一二| 久久精品久久久精品美女| 91视视频在线观看入口直接观看www | 久久99深爱久久99精品| 99热这里都是精品| 久久青草欧美一区二区三区| 亚洲丶国产丶欧美一区二区三区| 国产成人免费在线视频| 在线综合亚洲欧美在线视频| 国产精品素人视频| 国产在线不卡一卡二卡三卡四卡| 欧美在线你懂的| 中文字幕免费在线观看视频一区| 香蕉av福利精品导航| caoporn国产精品| 精品福利视频一区二区三区| 亚洲国产视频一区二区| 成人免费高清视频在线观看| 欧美不卡一区二区三区四区| 亚洲高清免费视频| 91麻豆免费看| 国产精品你懂的| 激情五月婷婷综合| 欧美一区二区成人6969| 亚洲国产综合人成综合网站| 91视频国产观看| 欧美激情一区二区三区蜜桃视频| 美脚の诱脚舐め脚责91| 欧美精品在线一区二区三区| 亚洲免费av观看| 91视视频在线观看入口直接观看www| 国产女人水真多18毛片18精品视频| 蜜桃av噜噜一区| 日韩一区二区中文字幕| 偷拍一区二区三区四区| 欧美日韩国产另类不卡| 亚洲国产精品一区二区www在线 | 亚洲精品一区二区三区在线观看 | 亚洲一区二区高清| 色综合咪咪久久| 亚洲视频狠狠干| 99国产精品99久久久久久| 中文字幕在线一区免费| 成人免费视频视频在线观看免费 | 成人黄色小视频| 欧美激情一区二区三区在线| 成人黄色片在线观看| 激情欧美一区二区三区在线观看| 日韩欧美在线观看一区二区三区| 日本女人一区二区三区| 日韩欧美国产高清| 精品一区二区三区在线播放视频| 日韩欧美不卡一区| 狠狠色丁香婷综合久久| 久久精品视频在线免费观看| 国产乱妇无码大片在线观看| 久久影视一区二区| 国产69精品一区二区亚洲孕妇| 国产精品伦理一区二区| 色综合天天综合网天天看片| 亚洲在线观看免费视频| 欧美剧在线免费观看网站 | 中文字幕av在线一区二区三区| 国产91精品精华液一区二区三区| 中文字幕五月欧美| 在线视频亚洲一区| 丝袜亚洲另类欧美| 欧美成人福利视频| 处破女av一区二区| 一区二区三区精品| 欧美一区二区三区日韩视频| 美国三级日本三级久久99| 国产亚洲福利社区一区| 99国产精品99久久久久久| 亚洲第一福利视频在线| 亚洲精品在线免费播放| 91麻豆国产福利在线观看| 亚洲一区二区三区四区在线| 欧美成人一区二区三区| 不卡电影免费在线播放一区| 亚洲成av人片在线观看无码| 欧美白人最猛性xxxxx69交| 成人成人成人在线视频| 三级在线观看一区二区| 久久亚洲精品国产精品紫薇| 色中色一区二区| 美国三级日本三级久久99 | 国产原创一区二区| 国产精品福利一区| 91麻豆精品国产无毒不卡在线观看| 国产在线观看一区二区| 亚洲最快最全在线视频| 久久综合视频网| 欧美图片一区二区三区| 国产一区二区三区国产| 亚洲成人自拍网| 欧美国产97人人爽人人喊| 欧美精品v日韩精品v韩国精品v| 丁香五精品蜜臀久久久久99网站| 日日骚欧美日韩| 亚洲乱码国产乱码精品精可以看| 欧美草草影院在线视频| 欧美午夜精品久久久久久孕妇| 国产精品一区在线观看乱码| 日韩极品在线观看| 亚洲精品国产无套在线观| 精品国产乱码久久久久久蜜臀|