📄 xt_sjhf_frm_main.~pas
字号:
//------------------------------------------------------------
// 作者:曾庆顺
// 模块:系统数据恢复窗口
// 时间:2002.09.17
// 功能介绍:
//-----------------------------------------------------------
unit xt_sjhf_frm_main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Db, DBTables, ComCtrls, Grids, DBGrids, ImgList,
Buttons;
type
TData = class
dcid:string;
end;
Txt_sjhf_main = class(TForm)
Panel3: TPanel;
Query: TQuery;
Splitter1: TSplitter;
Panel1: TPanel;
DBGrid1: TDBGrid;
Splitter2: TSplitter;
ScrollBox1: TScrollBox;
Panel2: TPanel;
btn_restore: TButton;
btn_query: TButton;
btn_sort: TButton;
btn_first: TButton;
btn_prior: TButton;
btn_next: TButton;
btn_last: TButton;
btn_print: TButton;
btn_refresh: TButton;
TreeView1: TTreeView;
ImageList1: TImageList;
qry_TB_XTGL_FAZB: TQuery;
DataSource1: TDataSource;
Label2: TLabel;
Label3: TLabel;
Label6: TLabel;
Edit_fabh: TEdit;
Edit_famc: TEdit;
Memo_fams: TMemo;
qry_TB_XTGL_FACB: TQuery;
qry_TB_XTGL_FACBFABH: TStringField;
qry_TB_XTGL_FACBJLID: TStringField;
qry_TB_XTGL_FACBBYWM: TStringField;
qry_TB_XTGL_FACBBZWM: TStringField;
GroupBox1: TGroupBox;
RB_Part: TRadioButton;
RB_All: TRadioButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btn_refreshClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CbX_dcmcChange(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure btn_queryClick(Sender: TObject);
procedure btn_sortClick(Sender: TObject);
procedure btn_firstClick(Sender: TObject);
procedure btn_priorClick(Sender: TObject);
procedure btn_nextClick(Sender: TObject);
procedure btn_lastClick(Sender: TObject);
procedure btn_printClick(Sender: TObject);
procedure btn_restoreClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FAdd :Boolean;
//方案主表 1 -- 增加 2 --修改
FZAdd:string;
FTreenode:ttreenode;
FRefresh:Boolean;
procedure P_SetEditValues;
procedure P_SetColor(b:boolean);
procedure FreeNode(TREEVIEW:TTREEVIEW);
//打开表
Function OpenQuery(PQuery:TQuery;PSql:string):Boolean;
Function ExecQuery(PQuery:TQuery;PSql:string):Boolean;
//只建单层
procedure CreateOneTree(treeview:ttreeview;Fdatabasename,Fsqlstring,fbm,fmc:string);
public
{ Public declarations }
end;
var
xt_sjhf_main: Txt_sjhf_main;
implementation
uses Main, dmmain,query,sort,xt_bffa_frm_print,sysrestore,DbRestore;
{$R *.DFM}
procedure Txt_sjhf_main.FormCreate(Sender: TObject);
var Ldata:Tdata;
begin
FZAdd:='0';
//初始状态
Btn_First.Enabled :=false;
Btn_prior.Enabled :=false;
end;
procedure Txt_sjhf_main.FormDestroy(Sender: TObject);
var i:integer;
begin
freenode(treeview1);
end;
procedure Txt_sjhf_main.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=CaFree;
end;
procedure Txt_sjhf_main.FormShow(Sender: TObject);
begin
btn_refreshClick(nil);
end;
procedure Txt_sjhf_main.CbX_dcmcChange(Sender: TObject);
var fsql:string;
begin
end;
procedure Txt_sjhf_main.treeview1Change(Sender: TObject; Node: TTreeNode);
var
fsql,ftem:string;
begin
if( not FRefresh ) then exit;
//恢复旧节点
if FTreeNode<>nil then FTreeNode.ImageIndex:=0;
if TreeView1.Selected<>nil then
begin
TreeView1.Selected.ImageIndex:=1;
TreeView1.Selected.SelectedIndex:=1;
//保存新节点
FTreeNode:=TreeView1.Selected;
end;
if treeview1.Selected=nil then exit;
ftem:=pchar(treeview1.selected.data);
//如果记录为空则按钮置灰
try
Query.close;
Query.sql.Clear;
FSql:='Select Nvl(Count(*),0) from T_XTGL_FACB where FABH = ''' + ftem + '''';
Query.sql.Add(FSql);
Query.open;
Query.First;
if Query.Fields[0].asinteger < 1 then
begin
Btn_First.Enabled :=false;
Btn_prior.Enabled :=false;
Btn_Next.Enabled :=false;
Btn_Last.Enabled :=false;
end
else
begin
Btn_First.Enabled :=true;
Btn_prior.Enabled :=true;
Btn_Next.Enabled :=true;
Btn_Last.Enabled :=true;
end;
except
end;
//刷新主表的控件属性
Query.close;
Query.sql.Clear;
Query.sql.Add('Select * from T_XTGL_FAZB where fabh =:p1');
Query.ParamByName('p1').asstring:=ftem;
Query.open;
Query.First;
Edit_fabh.text:=Query.fieldbyname('fabh').asstring;
Edit_famc.text:=Query.fieldbyname('famc').asstring;
memo_fams.Text:=Query.fieldbyname('fams').asstring;
P_SetColor(true);
//刷新DBGRID1的数据
fsql:='select * from T_XTGL_FACB where FABH = '+#39+ftem+#39;
OpenQuery(qry_TB_XTGL_FACB,fsql);
end;
procedure Txt_sjhf_main.P_SetEditValues;
begin
//赋值编辑框
Edit_fabh.text:='';
Edit_famc.text :='';
memo_fams.Text:='';
end;
procedure Txt_sjhf_main.P_SetColor(b:boolean);
begin
if b then
begin
Edit_fabh.ReadOnly:=true;
Edit_fabh.Color:=clBtnFace;
Edit_famc.ReadOnly:=true;
Edit_famc.Color:=clBtnFace;
memo_fams.ReadOnly:=true;
memo_fams.Color:=clBtnFace;
end
else
begin
Edit_fabh.ReadOnly:=false;
Edit_fabh.Color:=clWindow;
Edit_famc.ReadOnly:=false;
Edit_famc.Color:=clWindow;
memo_fams.ReadOnly:=false;
memo_fams.Color:=clWindow;
end;
end;
procedure Txt_sjhf_main.btn_queryClick(Sender: TObject);
begin
p_Query(DbGrid1);
end;
procedure Txt_sjhf_main.btn_sortClick(Sender: TObject);
begin
p_Sort(qry_TB_XTGL_FACB,DbGrid1);
end;
procedure Txt_sjhf_main.btn_firstClick(Sender: TObject);
//当前记录在第一条
begin
qry_TB_XTGL_FACB.First;
Btn_First.Enabled :=false;
Btn_prior.Enabled :=false;
Btn_Next.Enabled :=True;
Btn_Last.Enabled :=True;
end;
procedure Txt_sjhf_main.btn_priorClick(Sender: TObject);
//当前记录向上一条
begin
qry_TB_XTGL_FACB.Prior;
if qry_TB_XTGL_FACB.Bof then
begin
Btn_First.Enabled :=false;
Btn_prior.Enabled :=false;
Btn_Next.Enabled :=True;
Btn_Last.Enabled :=True;
end
else
begin
Btn_First.Enabled :=true;
Btn_prior.Enabled :=true;
Btn_Next.Enabled :=True;
Btn_Last.Enabled :=True;
end;
end;
procedure Txt_sjhf_main.btn_nextClick(Sender: TObject);
//当前记录向下一条
begin
qry_TB_XTGL_FACB.Next;
if qry_TB_XTGL_FACB.Eof then
begin
Btn_First.Enabled :=true;
Btn_prior.Enabled :=true;
Btn_Next.Enabled :=false;
Btn_Last.Enabled :=false;
end
else
begin
Btn_First.Enabled :=true;
Btn_prior.Enabled :=true;
Btn_Next.Enabled :=True;
Btn_Last.Enabled :=True;
end;
end;
procedure Txt_sjhf_main.btn_lastClick(Sender: TObject);
//当前记录最后一条
begin
qry_TB_XTGL_FACB.last;
Btn_First.Enabled :=true;
Btn_prior.Enabled :=true;
Btn_Next.Enabled :=false;
Btn_Last.Enabled :=false;
end;
procedure Txt_sjhf_main.btn_refreshClick(Sender: TObject);
var fsql:string;
begin
//初始化树
FtreeNode:=nil;
FRefresh:=false;
//释放旧内存
freenode(treeview1);
//清除树
treeview1.Items.clear;
fsql:='select FABH,FAMC from T_XTGL_FAZB ';
createonetree(treeview1,dm_main.Databasedh.DatabaseName,fsql,'fabh','famc');
FRefresh:=true;
if TreeView1.Items.Count = 0 then
begin
//如果没有条件fabh='$'
fsql:='select * from T_XTGL_FACB where FABH = ''$''';
OpenQuery(qry_TB_XTGL_FACB,fsql);
//设置编辑框
P_SetEditValues;
P_SetColor(true);
end;
treeview1.SetFocus;
end;
procedure Txt_sjhf_main.btn_printClick(Sender: TObject);
var
dlg:Txt_bffa_print;
begin
if treeview1.Selected=nil then exit;
try
dlg:=Txt_bffa_print.create(self);
dlg.qry_TB_XTGL_FACB.Close;
dlg.qry_TB_XTGL_FACB.sql.Text :=qry_TB_XTGL_FACB.sql.text;
dlg.qry_TB_XTGL_FACB.open;
dlg.QRLabel4.Caption:=treeview1.Selected.Text;
dlg.QuickRep1.Preview;
finally
dlg.free;
end;
end;
procedure Txt_sjhf_main.btn_restoreClick(Sender: TObject);
var dlg:TSysRestoreFrm;
dlg1:TDbRestoreFrm;
begin
if RB_Part.Checked then
begin
if treeview1.Selected=nil then
begin
Application.MessageBox('左边树没有选择备份方案名称,不能备份表数据!','警告',MB_OK+MB_ICONINFORMATION);
exit;
end;
try
dlg:=TSysRestoreFrm.Create(self);
dlg.ShowModal;
finally
dlg.free;
end;
end
else
begin
try
dlg1:=TDbRestoreFrm.Create(self);
dlg1.ShowModal;
finally
dlg1.free;
end;
end;
end;
procedure Txt_sjhf_main.CreateOneTree(treeview: ttreeview; Fdatabasename,
Fsqlstring, fbm, fmc: string);
var query:TQuery;
code,bh:string;
FNode:pchar;
begin
try
query:=TQuery.Create(nil);
except
exit;
end;
query.DatabaseName:=fdatabasename;
query.close;
query.sql.Clear;
query.sql.Add(fsqlstring+' order by '+fbm);
try
query.open;
except
exit;
end;
query.First;
while not query.Eof do
begin
bh:=query.FieldByName(Fbm).asstring;
code := query.FieldByName(Fmc).asstring;
try
getmem(fnode,length(bh)+1);//得到指针的内存空间
except
exit;
end;
move(bh[1],fnode^,length(bh)+1);//指针指出结点对应的编码
if length(code) >255 then code :=copy(code,0,255);
treeview.Items.AddObject(nil,code, fnode);
query.Next;
end;
query.free;
end;
function Txt_sjhf_main.ExecQuery(PQuery: TQuery; PSql: string): Boolean;
begin
Result:=true;
PQuery.close;
PQuery.sql.Clear;
PQuery.Filtered:=false;
PQuery.sql.add(PSql);
try
PQuery.ExecSQL;
except
Result:=false;
end;
end;
procedure Txt_sjhf_main.FreeNode(TREEVIEW: TTREEVIEW);
VAR
I:INTEGER;
pnode:pchar;
begin
FOR I:=0 to treeview.Items.Count-1 do
begin
pnode:=pchar(treeview.Items[i].Data);
Freemem(pnode);
end;
end;
function Txt_sjhf_main.OpenQuery(PQuery: TQuery; PSql: string): Boolean;
begin
Result:=true;
PQuery.close;
PQuery.sql.Clear;
PQuery.Filtered:=false;
PQuery.sql.add(PSql);
try
PQuery.open;
except
Result:=false;
end;
end;
procedure Txt_sjhf_main.Button1Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -