📄 basetree.pas
字号:
unit BaseTree;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MDIbase, ComCtrls, Grids, DBGridEh, ToolWin, ActnList, DB,
DBClient, StdCtrls, ImgList;
type
TfrmbaseTree = class(TfrmMDIbase)
CoolBar1: TCoolBar;
pagea: TPageControl;
Grid: TDBGridEh;
tab1: TTabSheet;
tab2: TTabSheet;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ActionList1: TActionList;
t01: TAction;
t02: TAction;
t03: TAction;
t04: TAction;
t05: TAction;
ToolButton5: TToolButton;
CDSbaseinfo: TClientDataSet;
dsBaseinfo: TDataSource;
TreeView1: TTreeView;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ImageListform: TImageList;
procedure FormShow(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure GridGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
private
function foundnodebyid(T:Ttreeview;id:integer):Ttreenode;
function loadTree(Atreeview:Ttreeview):integer;
function getnodeid(Atree:Ttreeview;Inode:Ttreenode):integer;
function checksave():boolean;
{ Private declarations }
Protected
Maintable:string;
Mainview:string;
Masterfield:string;
Keyfield:string;
public
{ Public declarations }
end;
var
frmbaseTree: TfrmbaseTree;
implementation
uses Global, common;
{$R *.dfm}
function TfrmbaseTree.checksave: boolean;
begin
Result:=True;
if CDSbaseinfo.State in [dsInsert,dsEdit] then
Case messagedlg('是否保存当前数据 ? ',mtconfirmation,[mbok,mbno,mbcancel],0) of
mrYes:
begin
CDSbaseinfo.Post;
Result:=CDSbaseinfo.State = dsBrowse;
end;
mrNo:
begin
CDSbaseinfo.Cancel;
Result:=CDSbaseinfo.State = dsBrowse;
end;
mrCancel:
Result:=False;
end;
end;
procedure TfrmbaseTree.FormShow(Sender: TObject);
begin
inherited;
Pagea.ActivePage:=Tab1;
GetAllData(CDSbaseinfo,mainview,keyfield,20);
Loadtree(treeView1);
end;
function TfrmbaseTree.foundnodebyid(T: Ttreeview; id: integer): Ttreenode;
var
Count:integer;
begin
Result:=nil;
For Count:= 0 to (T.Items.Count - 1) do
begin
if integer(t.Items[Count].Data^)=id then
begin
Result:=t.Items[count];
Exit;
end;
end;
end;
function TfrmbaseTree.getnodeid(Atree: Ttreeview;
Inode: Ttreenode): integer;
var
Count:integer;
begin
Result:=0;
for Count:=0 to Atree.Items.Count-1 do
begin
if Atree.Items[Count]=inode then
begin
Result:=integer(Atree.Items[count].Data^);
Exit;
end;
end;
end;
function TfrmbaseTree.loadTree(Atreeview: Ttreeview): integer;
var
id:pint;
node1,node2:Ttreenode;
begin
Result:=0;
Atreeview.Items.Clear;
Atreeview.Items.BeginUpdate;
CDSbaseinfo.First;
while not CDSbaseinfo.Eof do
begin
node1:=foundnodebyid(Atreeview,CDSbaseinfo.fieldbyname('fparentid').AsInteger);
new(id);
id^:=CDSbaseinfo.fieldbyname('fid').AsInteger;
node2:=Atreeview.Items.AddChildObject(node1,CDSbaseinfo.fieldbyname('fname').AsString,id);
node2.ImageIndex:=0;
node2.SelectedIndex:=1;
CDSbaseinfo.Next;
end;
Atreeview.Items.EndUpdate;
Atreeview.FullExpand;
end;
procedure TfrmbaseTree.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
Cid:integer;
begin
inherited;
Cid:=Getnodeid(Treeview1,Treeview1.Selected);
// CDSbaseinfo.Locate(keyfield,Cid,[]);
end;
procedure TfrmbaseTree.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
CanClose:=CheckSave;
end;
procedure TfrmbaseTree.GridGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
if Grid.SumList.RecNo mod 2=1 then
BackGround:=$00EAEFED
else
BackGround:=clWhite;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -