2 Star 6 Fork 5

吕不为 / dbhelper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
UFrmSelectDB.pas 7.74 KB
一键复制 编辑 原始数据 按行查看 历史
吕不为 提交于 2017-08-30 09:00 . init
unit UFrmSelectDB;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, UDbList, ImgList, ToolWin, registry,
ExtCtrls, ADODB, UAppSet, ActnList, Common;
type
TFrmSelectDB = class(TForm)
tlb1: TToolBar;
btnShowIcon: TToolButton;
ilTool: TImageList;
btnShowReport: TToolButton;
il2: TImageList;
pnl1: TPanel;
lvDB: TListView;
btnOK: TBitBtn;
btnCancel: TBitBtn;
btnWizard: TToolButton;
btnDelete: TToolButton;
btnDBInfo: TToolButton;
btnCopy: TToolButton;
actlst: TActionList;
actDel: TAction;
btnDel: TToolButton;
tmr1: TTimer;
procedure FormCreate(Sender: TObject);
procedure btnShowIconClick(Sender: TObject);
procedure btnShowReportClick(Sender: TObject);
procedure lvDBDblClick(Sender: TObject);
procedure btnWizardClick(Sender: TObject);
procedure btnDBInfoClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCopyClick(Sender: TObject);
procedure actDelExecute(Sender: TObject);
procedure lvDBEdited(Sender: TObject; Item: TListItem; var S: string);
procedure lvDBKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnDelClick(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure lvDBInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: string);
private
procedure LoadDBList;
public
{ Public declarations }
class function ShowMe: Integer;
end;
implementation
uses UDM, UFrmDBInfo, MainFrm, UFrmConnectDB;
{$R *.dfm}
//function GetADOVersion: string;
//var
// aReg: TRegistry;
//begin
// Result := '';
// aReg := TRegistry.Create;
// try
// aReg.RootKey := HKEY_LOCAL_MACHINE;
// aReg.OpenKey('\SOFTWARE\Microsoft\DataAccess', False);
// Result := aReg.ReadString('FullInstallVer');
// finally
// aReg.Free;
// end;
//end;
procedure TFrmSelectDB.FormCreate(Sender: TObject);
begin
inherited;
LoadDBList;
end;
class function TFrmSelectDB.ShowMe: Integer;
var
Frm: TFrmSelectDB;
begin
Result := -1;
Frm := TFrmSelectDB.Create(Application);
frm.lvDB.ViewStyle := TViewStyle(appset.WizardIconStyle);
if frm.ShowModal = mrok then
begin
if frm.lvDB.Selected <> nil then
begin
AppSet.WizardIconStyle := Ord(frm.lvDB.ViewStyle);
AppSet.LastOpenDB := frm.lvDB.Selected.Index;
DBList.ItemIndex := frm.lvDB.Selected.Index;
Result := DBList.ItemIndex;
end;
end;
Frm.Free;
end;
procedure TFrmSelectDB.tmr1Timer(Sender: TObject);
var
i: Integer;
begin
tmr1.Enabled := False;
TryStrToInt(ParamStr(1), i);
if i > lvDB.Items.Count - 1 then
Exit;
lvDB.ItemIndex := i;
btnOK.Click;
end;
procedure TFrmSelectDB.btnShowIconClick(Sender: TObject);
begin
inherited;
lvDB.ViewStyle := vsIcon;
end;
procedure TFrmSelectDB.btnShowReportClick(Sender: TObject);
begin
inherited;
lvDB.ViewStyle := vsReport;
end;
procedure TFrmSelectDB.lvDBDblClick(Sender: TObject);
begin
inherited;
if lvDB.Selected = nil then
exit;
if btnOK.Enabled then
btnOK.Click;
end;
procedure TFrmSelectDB.btnWizardClick(Sender: TObject);
var
Frm: TFrmConnectDB;
begin
inherited;
Frm := TFrmConnectDB.Create(Self);
if Frm.ShowModal = mrOk then
begin
with DBList.Add do
begin
Driver := Frm.cbbDBType.Items[Frm.cbbDBType.ItemIndex];
HostName := Frm.edtHost.Text;
UserName := Frm.edtUserName.Text;
Password := Frm.edtPassword.Text;
HostPort := Frm.seaPort.Value;
if Frm.cbbDBList.Style = csSimple then
DBName := Trim(Frm.cbbDBList.Text) else
DBName := Frm.cbbDBList.Items[Frm.cbbDBList.ItemIndex];
Caption := HostName + '(' + DBName + ')';
end;
end;
Frm.Free;
LoadDBList;
if lvdb.Items.Count > 0 then
lvDB.Items[lvdb.Items.Count - 1].Selected := True;
end;
procedure TFrmSelectDB.LoadDBList;
var
i: Integer;
begin
lvdb.Clear;
for i := 0 to DBList.Count - 1 do
begin
with lvDB.Items.Add do
begin
Caption := DBList.Items[i].Caption;
ImageIndex := Ord(DBList.Items[i].DBType);
SubItems.Add(DBList.Items[i].DBName);
SubItems.Add(DBList.Items[i].Description);
end;
end;
end;
procedure TFrmSelectDB.btnDBInfoClick(Sender: TObject);
var
FrmDBInfo: TFrmDBInfo;
i: Integer;
begin
if lvdb.Selected = nil then
begin
InfoMessage('请选择一个数据库连接');
lvDB.SetFocus;
Exit;
end;
FrmDBInfo := TFrmDBInfo.Create(Self);
i := lvDB.Selected.Index;
FrmDBInfo.aDBItem := DBList.Items[lvdb.Selected.Index];
FrmDBInfo.ShowModal;
if FrmDBInfo.ModalResult = mrOK then
begin
DBList.SaveDBList;
end;
FrmDBInfo.Free;
LoadDBList;
if (i > -1) and (i < lvDB.Items.Count - 1) then
begin
lvDB.ItemIndex := i;
lvDB.Items[i].Selected := True;
end;
end;
procedure TFrmSelectDB.btnDelClick(Sender: TObject);
begin
inherited;
WinExec(PAnsiChar('explorer ' + extractfiledir(Application.ExeName)), SW_NORMAL);
end;
procedure TFrmSelectDB.FormShow(Sender: TObject);
var
i: Integer;
begin
inherited;
if lvDB.Items.Count > 0 then
begin
lvDB.ItemIndex := 0;
lvDB.Items[0].Selected := True;
end;
for i := 0 to lvDB.Items.Count - 1 do
if appset.LastOpenDB = i then
begin
pnl1.SetFocus;
lvDB.SetFocus;
lvDB.ItemIndex := i;
lvDB.Items[i].Focused := True;
end;
if (ParamCount > 0) and TryStrToInt(ParamStr(1), i) then
begin
tmr1.Enabled := True;
end;
end;
procedure TFrmSelectDB.btnOKClick(Sender: TObject);
begin
if lvdb.Selected = nil then
begin
InfoMessage('请选择一个数据库连接');
lvDB.SetFocus;
Exit;
end;
if not dmSQL.ConnectDB(DBList.Items[lvdb.ItemIndex]) then
exit;
ModalResult := mrOk;
end;
procedure TFrmSelectDB.btnCopyClick(Sender: TObject);
begin
inherited;
if lvdb.Selected = nil then
begin
InfoMessage('请选择一个数据库连接');
lvDB.SetFocus;
Exit;
end;
with DBList.Add do
Assign(DBList.Items[lvdb.ItemIndex]);
DBList.Items[DBList.Count - 1].Caption := DBList.Items[DBList.Count - 1].Caption + '_1';
DBList.SaveDBList;
LoadDBList;
lvdb.ItemIndex := DBList.Count - 1;
end;
procedure TFrmSelectDB.actDelExecute(Sender: TObject);
var
i: Integer;
begin
inherited;
if lvdb.Selected = nil then
begin
InfoMessage('请选择一个数据库连接');
lvDB.SetFocus;
Exit;
end;
if YesNoMessage('您确定要删除选择的数据库连接吗?') then
begin
i := lvdb.ItemIndex;
DBList.Delete(lvdb.ItemIndex);
lvdb.Items[lvdb.ItemIndex].Delete;
DBList.SaveDBList;
end;
LoadDBList;
if i < DBList.Count - 1 then
lvdb.ItemIndex else
lvdb.ItemIndex := DBList.Count - 1;
end;
procedure TFrmSelectDB.lvDBEdited(Sender: TObject; Item: TListItem;
var S: string);
begin
inherited;
DBList.Items[lvdb.Selected.Index].Caption := S;
DBList.SaveDBList;
end;
procedure TFrmSelectDB.lvDBKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if ([ssAlt] = Shift) and (Key = VK_RETURN) then
btnDBInfo.Click;
end;
procedure TFrmSelectDB.lvDBInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: string);
begin
InfoTip := '描述信息: ' + DBList.Items[Item.Index].Caption + #13 + #10 +
'主机名称: ' + DBList.Items[Item.Index].HostName + #13 + #10 +
'数据库名称: ' + DBList.Items[Item.Index].DBName + #13 + #10 +
'连接用户: ' + DBList.Items[Item.Index].UserName + #13 + #10 +
'字典文件: ' + DBList.Items[Item.Index].CfgFile;
end;
end.
Delphi
1
https://gitee.com/lvhongqing/dbhelper.git
git@gitee.com:lvhongqing/dbhelper.git
lvhongqing
dbhelper
dbhelper
master

搜索帮助