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

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

?? queryform.~pas

?? 一個(gè)使用Delphi編寫的ADO數(shù)據(jù)庫(kù)鏈接查看器
?? ~PAS
字號(hào):
unit QueryForm;
//在這個(gè)窗體中,實(shí)現(xiàn)用戶的基本操作界面。這是一個(gè)單文檔的窗體。
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, ActnList, Menus,
  ToolWin, ActnMan, ActnCtrls, Buttons, UnitADOModule, ChAdoConEd60, ADOInt,
  StdActns, ADOdb, ImgList;

type
  TFormMain = class(TForm)
    ActionList: TActionList;
    ActDock: TAction;
    PopupMenu: TPopupMenu;
    ActCanDrag1: TMenuItem;
    CoolBar1: TCoolBar;
    ActionToolBar1: TActionToolBar;
    Panel1: TPanel;
    ConnectionString: TLabeledEdit;
    SpeedButton1: TSpeedButton;
    ADOConnect: TAction;
    PanButtom: TPanel;
    Pages: TPageControl;
    DataPage: TTabSheet;
    DBGrid1: TDBGrid;
    InfoPage: TTabSheet;
    REInfo: TRichEdit;
    ExecCommand: TAction;
    QueryData: TAction;
    ActionManager: TActionManager;
    LoadCmd: TFileOpen;
    SaveCmd: TFileSaveAs;
    PanLeft: TPanel;
    TVDatabase: TTreeView;
    Splitter2: TSplitter;
    Splitter1: TSplitter;
    PanTop: TPanel;
    REText: TRichEdit;
    ActShowTV: TAction;
    ActShowCmd: TAction;
    ShowText1: TMenuItem;
    InfoText1: TMenuItem;
    ActRefresh: TAction;
    ImageList: TImageList;
    ActDisconn: TAction;
    procedure ActDockExecute(Sender: TObject);
    procedure ControlStartDock(Sender: TObject;
      var DragObject: TDragDockObject);
    procedure ControlEndDock(Sender, Target: TObject; X, Y: Integer);
    procedure ADOConnectExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ExecCommandExecute(Sender: TObject);
    procedure QueryDataExecute(Sender: TObject);
    procedure LoadCmdAccept(Sender: TObject);
    procedure SaveCmdAccept(Sender: TObject);
    procedure ActShowTVExecute(Sender: TObject);
    procedure ActShowCmdExecute(Sender: TObject);
    procedure TVDatabaseRefresh(Sender : TObject);
  private
    { Private declarations }
    function isEmpty(Container : TWinControl) : Boolean;
    procedure CanSite(Sender : TObject);
    procedure ActCanShowExecute(Sender: TObject); overload;
    procedure ActCanShowExecute(Sender: TTabSheet); overload;
    function IndexByName(ObjName : String; Level : Integer = -1): Integer;
    procedure TVTablesRefresh(ObjList : TStrings);
    procedure TVProceduresRefresh(ObjList : TStrings);
    procedure TVFieldsRefresh(TableName : String; ObjList : TStrings);
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

const
  Database = 'Database';
  StoreProcedures = 'Store Procedures';
  Tables = 'Tables';
  Fields = 'Fields';

implementation

{$R *.dfm}

procedure TFormMain.ActCanShowExecute(Sender: TObject);
begin
  (Sender as TWinControl).Visible := ((Sender as TWinControl).ControlCount > 0);
end;

procedure TFormMain.ActCanShowExecute(Sender: TTabSheet);
begin
  Sender.TabVisible := (Sender.ControlCount > 0);
end;

procedure TFormMain.ActDockExecute(Sender: TObject);
begin
  if ActDock.Checked then
  begin
    REText.DragMode := dmAutomatic;
    REText.DragKind := dkDock;
    TVDatabase.DragMode := dmAutomatic;
    TVDatabase.DragKind := dkDock;
  end
  else
  begin
    REText.DragMode := dmManual;
    REText.DragKind := dkDrag;
    TVDatabase.DragMode := dmManual;
    TVDatabase.DragKind := dkDrag;
  end;
end;

//在控件開始拖動(dòng)后,向控件顯示所有的可入塢容器。
procedure TFormMain.ControlStartDock(Sender: TObject;
  var DragObject: TDragDockObject);
begin
  CanSite(Sender);
end;

//控件結(jié)束拖動(dòng),將空容器隱藏,并為可能有的新頁(yè)面標(biāo)注標(biāo)題。
procedure TFormMain.ControlEndDock(Sender, Target: TObject; X, Y: Integer);
begin
  ActCanShowExecute(PanTop);
  ActCanShowExecute(PanLeft);
  (Sender as TControl).Align := alClient;

  if REText.Parent.ClassNameIs('TTabSheet') then
    (REText.Parent as TTabSheet).Caption := '文本/指令';
  if TVDatabase.Parent.ClassNameIs('TTabSheet') then
    (TVDatabase.Parent as TTabSheet).Caption := '數(shù)據(jù)庫(kù)結(jié)構(gòu)';
end;

//建立ADO聯(lián)接,這段代碼參考了Delphi的Demo,并對(duì)VCL的部分源碼進(jìn)行了改動(dòng),但不會(huì)影
//響已有的類庫(kù)。
procedure TFormMain.ADOConnectExecute(Sender: TObject);
begin
  try
    DMADO.ADOConnection.Close;
    DMADO.ADOConnection.ConnectionString := ConnectionString.Text;
    if EditConnectionString(DMADO.ADOConnection) then
      ConnectionString.Text := DMADO.ADOConnection.ConnectionString;
    if DMADO.ADOConnection.ConnectionString = '' then exit;
    Screen.Cursor := crHourGlass;
    DMADO.ADOConnection.Open;
    if DMADO.ADOConnection.State = [stOpen]	then
      TVDatabaseRefresh(Sender);
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DMADO.ADOConnection.Close;
end;

procedure TFormMain.ExecCommandExecute(Sender: TObject);
begin
  DMADO.ADOCommand.CommandText := REText.Lines.Text;
  DMADO.ADOCommand.Execute;
  Pages.ActivePage := InfoPage;
end;

//在同一次執(zhí)行中不加區(qū)分地處理有無(wú)結(jié)果集的SQL。
procedure TFormMain.QueryDataExecute(Sender: TObject);
var
  EffRecs : Integer;
  ADORecSet : _RecordSet;
begin
  try
    Screen.Cursor := crHourGlass;
    DMADO.ADOCommand.CommandText := REText.Lines.Text;
    ADORecSet := DMADO.ADOCommand.Execute(EffRecs, null);
    if ADORecSet.State = 0 then
    begin
      REInfo.Lines.Text := '本次操作影響了 ' + IntToStr(EffRecs) + ' 行。';
      DMADO.ADODataSetMain.Close;
      Pages.ActivePage := InfoPage;
    end
    else
    begin
      if EffRecs = -1 then EffRecs := 0;
      REInfo.Lines.Text := '共返回了 ' + IntToStr(ADORecSet.RecordCount)+ ' 行。'
                         + '本次操作另外影響了 ' + IntToStr(EffRecs) + ' 行。';
      DMADO.ADODataSetMain.Recordset := ADORecSet._xClone;
      ADORecSet.Close;
      Pages.ActivePage := DataPage;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TFormMain.LoadCmdAccept(Sender: TObject);
begin
  REText.Lines.LoadFromFile(LoadCmd.Dialog.FileName);
end;

procedure TFormMain.SaveCmdAccept(Sender: TObject);
begin
  REText.Lines.SaveToFile(SaveCmd.Dialog.FileName);
end;

//使空容器可以停靠。
procedure TFormMain.CanSite(Sender : TObject);
var
  TopIsEmpty, LeftIsEmpty : Boolean;
begin
  TopIsEmpty := isEmpty(PanTop);
  LeftIsEmpty := isEmpty(PanLeft);

  PanTop.DockSite := TopIsEmpty;
  PanTop.Visible := TopIsEmpty;
  if TopIsEmpty then
    PanTop.ClientHeight := (Sender as TControl).Height;
  PanLeft.DockSite := LeftIsEmpty;
  PanLeft.Visible := LeftIsEmpty;
  if LeftIsEmpty then
    PanLeft.ClientWidth := (Sender as TControl).Width;
end;

//指定容器是否為空;
function TFormMain.isEmpty(Container: TWinControl): Boolean;
begin
  result := (Container.ControlCount = 0);
end;

procedure TFormMain.ActShowTVExecute(Sender: TObject);
begin
  TVDatabase.Visible := True;
  if TVDatabase.Parent.ClassNameIs('TTabSheet') then
    Pages.ActivePage := (TVDatabase.Parent as TTabSheet);
end;

procedure TFormMain.ActShowCmdExecute(Sender: TObject);
begin
  REText.Visible := True;
  if REText.Parent.ClassNameIs('TTabSheet') then
    Pages.ActivePage := (REText.Parent as TTabSheet);
end;

procedure TFormMain.TVDatabaseRefresh;
var
  i : Integer;
  ObjList, FieldList : TStringList;
begin
  if DMADO.ADOConnection.State = [stClosed] then exit;
  ObjList := TStringList.Create;
  FieldList := TStringList.Create;
  TVTablesRefresh(ObjList);
  for i := 0 to ObjList.Count - 1 do
  begin
    TVFieldsRefresh(ObjList.Strings[i], FieldList);
  end;
  TVProceduresRefresh(ObjList);
  FieldList.Free;
  ObjList.Free;
end;

function TFormMain.IndexByName(ObjName: String; Level : Integer = -1): Integer;
begin
  Result := 0 ;
  while Result < TVDatabase.Items.Count do
  begin
    if (TVDatabase.Items.Item[Result].Text = ObjName)
        and ((Level = -1) or (TVDatabase.Items.Item[Result].Level = Level)) then
      Break
    else
      Inc(Result);
  end;
  if Result = TVDatabase.Items.Count then
    Result := -1;
end;

procedure TFormMain.TVFieldsRefresh(TableName: String; ObjList : TStrings);
var
  Index, i : Integer;
begin
  try
    Screen.Cursor := crHourGlass;
    ObjList.Clear;
    DMADO.ADOConnection.GetFieldNames(TableName, ObjList);
    Index := IndexByName(TableName, 2);
    TVDatabase.Items.Item[Index].DeleteChildren;
    for i := 0 to ObjList.Count - 1 do
    begin
      with TVDatabase.Items.AddChild(TVDatabase.Items.Item[Index],
                                      ObjList.Strings[i]) do
      begin
        ImageIndex := 1;
        SelectedIndex := 1;
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TFormMain.TVProceduresRefresh(ObjList : TStrings);
var
  Index, i : Integer;
begin
  try
    Screen.Cursor := crHourGlass;
    ObjList.Clear;
    DMADO.ADOConnection.GetProcedureNames(ObjList);
    Index := IndexByName(StoreProcedures);
    TVDatabase.Items.Item[Index].DeleteChildren;
    for i := 0 to ObjList.Count - 1 do
    begin
      with TVDatabase.Items.AddChild(TVDatabase.Items.Item[Index],
                                     ObjList.Strings[i]) do
      begin
        ImageIndex := 15;
        SelectedIndex := 15
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TFormMain.TVTablesRefresh(ObjList : TStrings);
var
  Index, i : Integer;
begin
  try
    Screen.Cursor := crHourGlass;
    ObjList.Clear;
    DMADO.ADOConnection.GetTableNames(ObjList);
    Index := IndexByName(Tables, 1);
    TVDatabase.Items.Item[Index].DeleteChildren;
    for i := 0 to ObjList.Count - 1 do
    begin
      with TVDatabase.Items.AddChild(TVDatabase.Items.Item[Index],
                                      ObjList.Strings[i]) do
      begin
        ImageIndex := 2;
        SelectedIndex := 2;
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区电影在线观看| 91原创在线视频| 丰满亚洲少妇av| 日本道色综合久久| 欧美xingq一区二区| 一区二区三区加勒比av| 免费视频最近日韩| 99v久久综合狠狠综合久久| 欧美一区二区三区啪啪| 国产精品白丝在线| 韩国欧美国产1区| 欧美精品自拍偷拍| 亚洲欧美福利一区二区| 国产综合成人久久大片91| 日本久久电影网| 亚洲精品一区二区三区影院 | 欧美日韩一区二区在线观看视频| 精品少妇一区二区三区视频免付费| 国产精品麻豆网站| 国产高清视频一区| 日韩你懂的在线播放| 午夜视频一区二区三区| 99在线精品一区二区三区| 久久综合色一综合色88| 日本视频中文字幕一区二区三区| 欧美专区日韩专区| 亚洲同性gay激情无套| 国产成人超碰人人澡人人澡| 精品国产凹凸成av人网站| 亚洲成av人片www| 高清不卡一二三区| 日韩欧美资源站| 日韩av二区在线播放| 欧美日韩免费观看一区二区三区| 亚洲男同性视频| 日本道精品一区二区三区| 亚洲日本在线天堂| 色av综合在线| 亚洲成人一区在线| 欧美嫩在线观看| 视频一区国产视频| 欧美日韩国产a| 视频一区视频二区中文字幕| 91电影在线观看| 亚洲永久精品国产| 欧美探花视频资源| 丝袜亚洲另类丝袜在线| 欧美日韩小视频| 日韩中文欧美在线| 日韩亚洲国产中文字幕欧美| 日韩高清国产一区在线| 日韩午夜激情av| 秋霞午夜av一区二区三区| 国产成人免费xxxxxxxx| 2020国产精品自拍| 粉嫩在线一区二区三区视频| 国产精品免费视频一区| 99久久精品国产导航| 在线观看视频一区| 69久久夜色精品国产69蝌蚪网| 日韩精品久久理论片| 日韩一区二区免费在线观看| 国产一区二三区| 日本一区二区三区免费乱视频| www.一区二区| 亚洲不卡一区二区三区| 精品久久一二三区| 国产99久久久精品| 亚洲国产视频在线| wwwwww.欧美系列| 91一区二区三区在线观看| 日韩电影免费一区| 国产精品天干天干在观线| 91视频在线观看免费| 日韩二区三区四区| 中文字幕一区二区三| 69久久夜色精品国产69蝌蚪网| 国产精品一区二区免费不卡| 国产精品久久久久久久久免费樱桃 | 国产乱码精品一区二区三区五月婷| 中文字幕欧美一| 日韩丝袜美女视频| 91污片在线观看| 蜜臀av性久久久久蜜臀aⅴ| 国产精品美女久久久久aⅴ| 欧美日韩aaaaaa| 不卡影院免费观看| 精品中文字幕一区二区| 亚洲精品国产无套在线观| 精品久久久久久久久久久久包黑料 | 欧美日韩精品免费观看视频 | 毛片基地黄久久久久久天堂| 亚洲人成小说网站色在线| 日韩欧美一区二区免费| 91福利视频在线| 国产精品1区2区| 美女视频黄频大全不卡视频在线播放 | 亚洲欧美另类久久久精品2019| 欧美成人性战久久| 欧美剧在线免费观看网站| 色婷婷久久99综合精品jk白丝| 国产河南妇女毛片精品久久久| 日本欧美一区二区在线观看| 亚洲女女做受ⅹxx高潮| 亚洲国产精品ⅴa在线观看| 日韩三级在线免费观看| 欧美日韩国产小视频在线观看| 91小视频在线免费看| 成人在线视频一区| 国产在线精品不卡| 看片的网站亚洲| 日本不卡在线视频| 一区二区三区电影在线播| 亚洲一区二区欧美日韩| 亚洲欧洲日产国产综合网| 国产精品久久久久久久久久久免费看 | 国产精品女主播在线观看| 欧美精品一区二区三区在线| 欧美精品丝袜久久久中文字幕| 在线免费观看日本一区| 91亚洲精华国产精华精华液| 成人中文字幕合集| 成人小视频在线| 国产经典欧美精品| 国产福利不卡视频| 成人教育av在线| 白白色 亚洲乱淫| 不卡的av在线播放| 色综合久久久久综合体桃花网| 色婷婷国产精品久久包臀| 色嗨嗨av一区二区三区| 欧美性受xxxx黑人xyx性爽| 欧美影视一区二区三区| 色综合激情五月| 欧美三片在线视频观看| 欧美人体做爰大胆视频| 欧美成人精品3d动漫h| www国产精品av| 国产精品不卡在线观看| 一区二区三区欧美亚洲| 亚洲国产毛片aaaaa无费看| 青青国产91久久久久久| 久久99精品国产麻豆婷婷洗澡| 激情国产一区二区| 成人免费av网站| 色噜噜久久综合| 欧美一区二区三区男人的天堂| 久久先锋影音av鲁色资源网| 国产精品日韩精品欧美在线| 一区二区三区日韩精品视频| 久久精品理论片| 91浏览器入口在线观看| 91麻豆精品国产91久久久久久| 日韩精品综合一本久道在线视频| 久久精品欧美一区二区三区不卡| 国产精品麻豆视频| 午夜在线成人av| 韩国av一区二区| 成人99免费视频| 欧美日韩激情一区二区三区| 精品久久人人做人人爱| 亚洲欧美成aⅴ人在线观看| 日本欧美一区二区在线观看| 国产又粗又猛又爽又黄91精品| 一本大道久久a久久精二百| 欧美电影免费观看高清完整版| 亚洲色图欧洲色图| 国产乱码精品一区二区三区五月婷 | 成人动漫精品一区二区| 欧美男生操女生| 亚洲视频一二三区| 九九**精品视频免费播放| 色又黄又爽网站www久久| 日韩亚洲欧美成人一区| 91在线观看美女| 色吊一区二区三区| 久久综合色8888| 日产精品久久久久久久性色| 91亚洲国产成人精品一区二三| 久久精品人人做人人爽人人| 日韩国产欧美在线观看| 97aⅴ精品视频一二三区| 久久久久高清精品| 麻豆国产精品视频| 欧美日韩成人在线| 伊人一区二区三区| av在线综合网| 国产精品日产欧美久久久久| 精品一区在线看| 日韩三级视频在线看| 亚洲一区二区三区爽爽爽爽爽| av亚洲精华国产精华精| 精品女同一区二区| 日本不卡一二三| 91看片淫黄大片一级在线观看| 国产精品萝li| 北条麻妃一区二区三区| 1024亚洲合集| 91免费小视频| 亚洲一二三四久久|