?? frmunit.pas
字號:
unit frmunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, RzPanel, RzSplit, Grids, DBGrids,
RzDBGrid, ImgList, DB, ADODB;
type
Tuunit = class(TForm)
RzSizePanel1: TRzSizePanel;
Panel1: TPanel;
TreeView1: TTreeView;
Panel2: TPanel;
Panel3: TPanel;
GroupBox1: TGroupBox;
Label2: TLabel;
Label1: TLabel;
editid: TEdit;
editclass: TEdit;
Button1: TButton;
Button2: TButton;
Button4: TButton;
Button3: TButton;
GroupBox2: TGroupBox;
Label4: TLabel;
Label3: TLabel;
comcxxm: TComboBox;
editcxz: TEdit;
Button5: TButton;
GroupBox3: TGroupBox;
ImageList1: TImageList;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
RzDBGrid1: TRzDBGrid;
ADOQuery2: TADOQuery;
Button6: TButton;
ADOQuery3: TADOQuery;
ADOQuery4: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure adoexect(adoqueryx:tadoquery;strsql:string);
procedure adodel(adoquery1:tadoquery;strsql:string);
procedure createid(adoquery1:tadoquery);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure RzDBGrid1CellClick(Column: TColumn);
procedure Button6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
procedure TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
procedure deletedate(id:string);
procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
procedure TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
strsql:string;
addedit:boolean;
id:string;
child:string;
titlename:string;
public
{ Public declarations }
dbname:string;
end;
var
uunit: Tuunit;
implementation
uses uconst,unit_treepublic,ufunction;
{$R *.dfm}
procedure tuunit.createid(adoquery1:tadoquery);
var
id:integer;
begin
if adoquery1.Recordset.EOF and adoquery1.Recordset.bof then begin
editid.Text:='1000';
exit;
end;
adoquery1.last;
id:=strtoint(trim(adoquery1.fieldbyname('id').AsString))+1;
editid.Text:=inttostr(id);
end;
procedure Tuunit.FormCreate(Sender: TObject);
begin
dbname:=dbase;
titlename:=title;
button1.Enabled:=true;
button1.Enabled:=true;
button3.Enabled:=true;
button4.Enabled:=false;
button6.Enabled:=false;
comcxxm.Items.Add('類別代碼');
comcxxm.Items.Add('類別名稱');
comcxxm.Items.Add('父類別代碼');
strsql:='select * from '+ dbname +' order by id asc';
adoexect(adoquery1,strsql);
maketree(adoquery1,dbname,treeview1,titlename);
end;
procedure Tuunit.adoexect(adoqueryx:tadoquery;strsql:string);
begin
if adoqueryx.Active then adoquery1.Close;
adoqueryx.ConnectionString:=ConnectionString;
adoqueryx.Connection;
adoqueryx.sql.Clear;
adoqueryx.sql.Add(strsql);
adoqueryx.Open;
end;
procedure Tuunit.adodel(adoquery1:tadoquery;strsql:string);
begin
if adoquery1.Active then adoquery1.Close;
adoquery1.ConnectionString:=ConnectionString;
adoquery1.Connection;
adoquery1.sql.Clear;
adoquery1.sql.Add(strsql);
adoquery1.ExecSQL;
end;
procedure Tuunit.Button1Click(Sender: TObject);
begin
if not qxjc(userid,'jbzl_add') then exit;
if treeview1.Items.Count>0 then begin
if child='' then begin
if Messagebox(handle,'是否添加基類?','警告',MB_yesno+MB_ICONwarning)=idyes then
child:='root'
else
exit;
end;
end;
button1.Enabled:=false;
button2.Enabled:=false;
button6.Enabled:=true;
button4.Enabled:=true;
TreeView1.Enabled:=false;
addedit:=true;
editid.Text:='';
editclass.text:='';
editid.Enabled:=true;
editclass.Enabled:=true;
strsql:='select * from '+ dbname +' order by id asc';
adoexect(adoquery3,strsql);
createid(adoquery3);
editclass.SetFocus;
end;
procedure Tuunit.Button2Click(Sender: TObject);
begin
if not qxjc(userid,'jbzl_edit') then exit;
button1.Enabled:=false;
button2.Enabled:=false;
button6.Enabled:=true;
button4.Enabled:=true;
id:=trim(editclass.Text);
addedit:=false;
editid.Enabled:=true;
editclass.Enabled:=true;
TreeView1.Enabled:=false;
editclass.SetFocus;
end;
procedure Tuunit.Button4Click(Sender: TObject);
begin
if id=trim(editclass.text) then begin
exit;
end;
strsql:='select * from '+dbname+' where classname='+''''+trim(editclass.Text)+'''';
adoexect(adoquery2,strsql);
if adoquery2.Recordset.EOF and adoquery2.Bof then begin
if addedit then begin
if child<>'' then begin
adoquery2.Append;
adoquery2.FieldByName('child').AsString:=child;
adoquery2.FieldByName('id').AsString:=trim(editid.Text);
adoquery2.FieldByName('classname').AsString:=trim(editclass.Text);
adoquery2.Post;
end;
end else begin
strsql:='select * from '+dbname+' where classname='+''''+id+'''';
adoexect(adoquery3,strsql);
adoquery3.Edit;
adoquery3.FieldByName('classname').AsString:=trim(editclass.Text);
adoquery3.Post;
end;
end else begin
application.MessageBox('該類別已經存在!','警告',mb_ok+mb_iconinformation);
exit;
end;
TreeView1.Enabled:=true;
if addedit then
addtreenode(adoQuery2,TreeView1,true)
else
treeview1.Selected.Text:=trim(editclass.text);
button1.Enabled:=true;
button2.Enabled:=true;
button4.Enabled:=false;
button6.Enabled:=false;
editclass.Enabled:=false;
end;
procedure Tuunit.RzDBGrid1CellClick(Column: TColumn);
var
i:integer;
begin
if adoquery1.Recordset.eof and adoquery1.Recordset.BOF then exit;
editid.Text:=adoquery1.fieldbyname('id').AsString;
editclass.text:=adoquery1.fieldbyname('classname').AsString;
child:=trim(editid.Text);
end;
procedure Tuunit.Button6Click(Sender: TObject);
begin
button1.Enabled:=true;
button2.Enabled:=true;
button4.Enabled:=false;
button6.Enabled:=false;
TreeView1.Enabled:=true;
editclass.Enabled:=false;
end;
procedure Tuunit.Button3Click(Sender: TObject);
var
id:string;
begin
if (editclass.Enabled=true) then exit;
if not qxjc(userid,'jbzl_del') then exit;
if adoquery1.Recordset.EOF and adoquery1.Recordset.BOF then exit;
id:=trim(editid.Text);
deletedate(id);
treeview1.Selected.Delete;
treeview1.Refresh;
end;
procedure tuunit.deletedate(id:string);
var
i:integer;
begin
strsql:='select * from '+dbname+' where child='+''''+id+'''';
adoexect(adoquery2,strsql);
strsql:='delete from '+dbname+' where id='+''''+id+'''';
adodel(adoquery3,strsql);
if not(adoquery2.Eof and adoquery2.Bof) then
begin
adoquery2.First;
while not adoquery2.Eof do
begin
deletedate(adoquery2.fieldbyname('id').AsString);
adoquery2.Next;
end;
end;
end;
procedure Tuunit.Button5Click(Sender: TObject);
var
cx:string;
begin
case comcxxm.ItemIndex of
-1:
begin
application.MessageBox('請先選擇查詢類別','提示',mb_ok+mb_iconwarning);
exit;
end;
0:cx:='id';
1:cx:='classname';
2:cx:='child';
end;
strsql:='select * from '+dbname+' where '+cx+' ='+''''+trim(editcxz.text)+'''';
adoexect(adoquery1,strsql);
if adoquery1.Recordset.eof and adoquery1.Recordset.bof then
messagebox(handle,'沒有查詢到相關的記錄!','警告',mb_ok+mb_iconwarning);
adoquery1.requery();
end;
procedure Tuunit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Tuunit.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
node.ImageIndex:=1;
end;
procedure Tuunit.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
node.ImageIndex:=0;
end;
procedure Tuunit.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
begin
node.ImageIndex:=1;
end;
procedure Tuunit.TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
begin
node.ImageIndex:=0;
end;
procedure Tuunit.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
case node.Level of
0:
strsql:='select * from '+dbname+' order by classname asc';
1:
strsql:='select * from '+dbname+' where child=(select id from '+dbname+' where classname='+
''''+trim(node.Text)+''''+') or classname='+''''+trim(node.Text)+''''+'order by classname asc';
2:
strsql:='select * from '+dbname+' where classname='+''''+trim(node.text)+'''';
end;
if node.Level=0 then child:='root';
adoexect(adoquery1,strsql);
if (adoquery1.Recordset.EOF and adoquery1.Recordset.BOF) or (node.level=0) then exit;
strsql:='select * from '+dbname+' where classname='+''''+trim(node.text)+'''';
adoexect(adoquery3,strsql);
editid.Text:=adoquery3.fieldbyname('id').AsString;
editclass.Text:=adoquery3.fieldbyname('classname').AsString;
child:=trim(adoquery3.fieldbyname('id').AsString);
adoquery3.Close;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -