📄 mainform.pas
字号:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
StdCtrls, RzEdit, Buttons, uPageManage, XPMan, Dialogs, ImgList, DB, ComCtrls,
RzTreeVw, RzSplit, RzTabs, ToolWin, RzStatus, ExtCtrls, RzPanel, Menus;
type
Tfrmmain = class(TForm)
RzStatusBar1: TRzStatusBar;
tlb1: TToolBar;
RzPage: TRzPageControl;
ds1: TDataSource;
btnOpen: TToolButton;
RzClockStatus1: TRzClockStatus;
RzStatusPane1: TRzStatusPane;
barFileName: TRzStatusPane;
btnClose: TToolButton;
btn5: TToolButton;
btnRun: TToolButton;
btn11: TToolButton;
il1: TImageList;
dlgOpenMDB: TOpenDialog;
ilDataBase: TImageList;
btnNew: TToolButton;
RzSizePanel1: TRzSizePanel;
tvDb: TRzTreeView;
btnZip: TToolButton;
btn1: TToolButton;
RzSizePanel2: TRzSizePanel;
lvDataType: TListView;
pmSql: TPopupMenu;
SELECT1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure btnOpenClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure btnRunClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure RzPageClose(Sender: TObject; var AllowClose: Boolean);
procedure btnNewClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure tvDbDblClick(Sender: TObject);
procedure btnExpClick(Sender: TObject);
procedure btnZipClick(Sender: TObject);
procedure btnSelClick(Sender: TObject);
procedure tvDbChange(Sender: TObject; Node: TTreeNode);
procedure SELECT1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
PageList: TPageManage;
dbFileName: string;
procedure OpenDataBase(DBFileName: string);
public
{ Public declarations }
end;
var
frmmain: Tfrmmain;
implementation
uses UntData, cxExportGrid4Link, uStdForm, uBaseForm, uAccessTool, uPublic, ufrmWaiting, typinfo;
{$R *.dfm}
procedure Tfrmmain.OpenDataBase;
var
liststr: TStringList;
i: Integer;
ss: TTreeNode;
begin
if DataForm.SetConnStr(dbFileName) then
begin
barFileName.Caption := dbFileName;
tvDb.Items.Clear;
liststr := TStringList.Create;
DataForm.conYYSC.GetTableNames(liststr, false);
for i := 0 to liststr.Count - 1 do
begin
tvDb.Items.AddChild(nil, liststr.Strings[i]);
end;
liststr.Free;
end
else
Application.MessageBox('打开数据库文件失败!!', '错误', MB_OK + MB_ICONSTOP);
end;
procedure Tfrmmain.btnOpenClick(Sender: TObject);
var
liststr: TStringList;
i: Integer;
ss: TTreeNode;
begin
if not dlgOpenMDB.Execute then Exit;
dbFileName := dlgOpenMDB.FileName;
OpenDataBase(dbFileName);
lvDataType.Clear;
end;
procedure Tfrmmain.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure Tfrmmain.btnRunClick(Sender: TObject);
begin
if PageList.Count > 0 then
if dbFileName <> '' then
begin
OpenWaiting('正在查询数据,请稍候...');
PageList.ActivePage.DoExecSQL;
CloseWaiting;
end;
end;
procedure Tfrmmain.FormCreate(Sender: TObject);
begin
dbFileName := '';
PageList := TPageManage.Create(RzPage);
if paramCount > 0 then
begin
dbfileName := Trim(ParamStr(1));
OpenDataBase(dbfileName);
end;
end;
procedure Tfrmmain.FormDestroy(Sender: TObject);
begin
PageList.Free;
end;
procedure Tfrmmain.N1Click(Sender: TObject);
var
TempFomr: TStdForm;
begin
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := cmd_Form;
TempFomr.mmoSQL.Text := ' DELETE FROM ' + tvDb.Selected.Text;
PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;
procedure Tfrmmain.N2Click(Sender: TObject);
var
TempFomr: TStdForm;
I: Integer;
Str1, str2: string;
begin
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := cmd_Form;
Str1 := 'INSERT INTO ' + tvDb.Selected.Text + '(';
str2 := 'VALUES (';
for I := 0 to lvDataType.Items.Count - 1 do
begin
if i <> 0 then
begin
Str1 := Str1 + #13#10 + ',';
Str2 := Str2 + #13#10 + ',';
end;
Str1 := Str1 + Trim(lvDataType.Items[i].SubItems.Strings[0]);
end;
TempFomr.mmoSQL.Text := Str1 + ')' + #13#10 + str2 + ')';
PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;
procedure Tfrmmain.N3Click(Sender: TObject);
var
TempFomr: TStdForm;
str: string;
i: Integer;
begin
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := cmd_Form;
TempFomr.mmoSQL.Text := ' UPDATE ' + tvDb.Selected.Text + ' SET ';
Str := ' UPDATE ' + tvDb.Selected.Text + ' SET ';
for I := 0 to lvDataType.Items.Count - 1 do
begin
if i <> 0 then
begin
Str := Str + #13#10 + ',';
end;
Str := Str + lvDataType.Items[i].SubItems.Strings[0] + ' = ';
end;
TempFomr.mmoSQL.Text := str;
PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;
procedure Tfrmmain.RzPageClose(Sender: TObject; var AllowClose: Boolean);
begin
if PageList.Count > 0 then
begin
PageList.Delete(PageList.ActivePageIndex);
end;
end;
procedure Tfrmmain.SELECT1Click(Sender: TObject);
var
TempFomr: TStdForm;
begin
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := cmd_Form;
TempFomr.mmoSQL.Text := ' SELECT * FROM ' + tvDb.Selected.Text;
PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;
procedure Tfrmmain.btnNewClick(Sender: TObject);
var
TempFomr: TStdForm;
begin
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := cmd_Form;
PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;
procedure Tfrmmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
PageList.Clear;
end;
procedure Tfrmmain.tvDbChange(Sender: TObject; Node: TTreeNode);
var
NewItem: TListItem;
i: integer;
xType: string;
Str: string;
begin
if dbFileName = '' then Exit;
lvDataType.Clear;
Str := 'SELECT * FROM ' + tvDb.Selected.Text + ' WHERE 1 = 2 ';
dataform.ADOQry.Close;
dataform.ADOQry.SQL.Text := Str;
dataform.ADOQry.Open;
for i := 0 to dataform.ADOQry.FieldCount - 1 do
begin
NewItem := lvDataType.Items.Add;
NewItem.Caption := IntToStr(i + 1);
NewItem.SubItems.Add(dataform.ADOQry.Fields[i].FieldName);
case dataform.ADOQry.Fields[i].DataType of
ftSmallint, ftInteger, ftWord: begin
xType := 'INT';
end;
ftBCD, ftFloat: xType := 'Float';
ftString, ftWideString: xType := 'String';
else
xType := GetEnumName(TypeInfo(TFieldType), ORD(dataform.ADOQry.Fields[i].DataType));
delete(xType, 1, 2);
end;
NewItem.SubItems.Add(xType);
if xType <> 'Float' then
begin
NewItem.SubItems.Add(inttostr(dataform.ADOQry.Fields[i].Size));
NewItem.SubItems.Add('0');
end
else
begin
NewItem.SubItems.Add('0');
NewItem.SubItems.Add(inttostr(dataform.ADOQry.Fields[i].Size));
end;
end;
end;
procedure Tfrmmain.tvDbDblClick(Sender: TObject);
var
TempFomr: TStdForm;
begin
if tvDb.Selected.Text = '连接数据库' then Exit;
TempFomr := TStdForm.Create(Application);
TempFomr.FormType := Std_Form;
TempFomr.mmoSQL.Text := 'SELECT * FROM ' + tvDb.Selected.Text;
PageList.Add(TempFomr, tvDb.Selected.Text);
if dbFileName <> '' then
begin
OpenWaiting('正在查询数据,请稍候...');
PageList.ActivePage.DoExecSQL;
CloseWaiting;
end;
end;
procedure Tfrmmain.btnExpClick(Sender: TObject);
begin
if PageList.Count > 0 then
PageList.ActivePage.DoExport;
end;
procedure Tfrmmain.btnZipClick(Sender: TObject);
begin
DataForm.conYysc.Close;
OpenWaiting('正在压缩或修改数据库,请稍候...');
if not PackDataBaseExt(dbFileName, aPassWord, aPassWord) then
begin
CloseWaiting;
Application.MessageBox('数据库压缩失败!,请检查数据库是否正在使用! ', '错误', MB_OK + MB_ICONSTOP)
end
else
begin
CloseWaiting;
Application.MessageBox('数据库压缩成功!', '提示', MB_OK + MB_ICONINFORMATION);
end;
end;
procedure Tfrmmain.btnSelClick(Sender: TObject);
begin
if PageList.Count > 0 then
PageList.ActivePage.DoSelectRow;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -