📄 treeietype.pas
字号:
unit TreeIEType;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TreeEditBase, StdCtrls, Buttons, ComCtrls, ExtCtrls, StrUtils, DB;
type
TTreeIETypefrm = class(TTreeEditBaseForm)
procedure FormShow(Sender: TObject);
procedure tvTypeClick(Sender: TObject);
procedure btnAddNewClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure tvTypeDblClick(Sender: TObject);
procedure tvTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
function GetMaxCode:string;
Function GetXName:string;
Function GetXCode:string;
public
{ Public declarations }
nodeTmp:TTreeNode;
sCode:string;
property xCode :string read GetXCode;
property xName :string read GetXName ;
end;
var
TreeIETypefrm: TTreeIETypefrm;
implementation
uses datamodule1, IEType;
{$R *.dfm}
function TTreeIETypefrm.GetMaxCode: string;
var
sSql, sMaxCode:string;
begin
inherited;
sSql:='select max(code) as maxCode from IEType where code like :code';
if sCode<>'' then
sSql:=sSql+' and len(code)=:lenCode';
with DataE2.QueryTmp do
begin
close;
sql.Clear;
sql.Add(sSql);
Parameters[0].Value:=sCode+'%';
if sCode<>'' then
Parameters[1].Value:=Length(sCode)+3;
open;
sMaxCode:=FieldByName('maxCode').AsString;
if (sMaxCode<>NULL) and (sMaxCode<>'') then
Result:=sCode+RightStr('000'+IntToStr(StrToInt(RightStr(sMaxCode,3))+1),3)
else
Result:=sCode+'001';
end;
end;
procedure TTreeIETypefrm.FormShow(Sender: TObject);
begin
inherited;
try
with dataE2.qryType1 do
begin
close;
SQL.clear;
SQL.add('select * from IEType order by Code');
Prepared:=true;
open;
first;
tvType.Items.Clear;
node1:=tvType.Items.Add(nil,self.Caption);
while not eof do
begin
if Length(trim(fieldbyname('Code').asstring))=3 then
node2:=tvType.Items.AddChild(node1,trim(fieldbyname('name').asstring));
//node2.ImageIndex:=1;
if Length(trim(fieldbyname('Code').asstring))=6 then
node3:=tvType.Items.AddChild(node2,trim(fieldbyname('name').asstring));
if Length(trim(fieldbyname('Code').asstring))=9 then
node4:=tvType.Items.AddChild(node3,trim(fieldbyname('name').asstring));
if Length(trim(fieldbyname('Code').asstring))=12 then
node5:=tvType.Items.AddChild(node4,trim(fieldbyname('name').asstring));
next;
end;
end;
node1.Selected:=True;
nodeTmp:=tvType.Selected;
except
on E:Exception do
showmessage(e.Message);
end;
end;
procedure TTreeIETypefrm.tvTypeClick(Sender: TObject);
var
sSql:string;
begin
inherited;
sSql:='select * from IEType';
sSql:=sSql+' where name = :name';
with DataE2.qryGet do
begin
close;
sql.Clear;
sql.Add(sSql);
Parameters[0].Value:=tvType.Selected.Text;
open;
if not eof then
sCode:=trim(FieldByName('Code').asstring)
else sCode:='';
end;
nodeTmp:=tvType.Selected;
//TreeEditfrm.sName:=tvType.Selected.Text;
end;
procedure TTreeIETypefrm.btnAddNewClick(Sender: TObject);
begin
inherited;
try
if nodeTmp=node5 then
begin
Application.MessageBox('分类级数已超过最大数!','提示',64);
exit;
end;
DataE2.tblIetype.Open;
DataE2.tblIetype.Append;
IETypeForm.DEno.Text:=GetMaxCode;
IETypeForm.DEname.Text:='';
IETypeForm.ShowModal;
FormShow(Sender);
except
on E:Exception do
showmessage(e.Message);
end;
end;
procedure TTreeIETypefrm.btnEditClick(Sender: TObject);
begin
inherited;
try
DataE2.tblIetype.Open;
DataE2.tblIetype.locate('Name',tvType.Selected.Text,[loPartialKey]);
DataE2.tblIetype.edit;
IETypeForm.ShowModal;
FormShow(Sender);
except
on E:Exception do
showmessage(e.Message);
end;
end;
procedure TTreeIETypefrm.btnDelClick(Sender: TObject);
var
sSql:string;
begin
inherited;
sSql:='delete from IEType';
sSql:=sSql+' where name = :name';
if nodeTmp<>node1 then
if Application.MessageBox('真的要删除吗?','提示',MB_YESNO+MB_ICONWARNING)=IDYES then
begin
with DataE2.QueryTmp do
begin
close;
sql.Clear;
sql.Add(sSql);
Parameters[0].Value:=tvType.Selected.Text;
Execsql;
end;
nodeTmp.Delete;
end;
end;
procedure TTreeIETypefrm.tvTypeDblClick(Sender: TObject);
begin
inherited;
//BtnOk.Click;
end;
procedure TTreeIETypefrm.tvTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if key = VK_Return then
BtnOk.Click;
end;
Function TTreeIETypefrm.GetXname:string;
begin
result:=tvType.Selected.Text;
end;
Function TTreeIETypefrm.GetXCode:string;
begin
result:=trim(sCode);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -