初学delphi时做的,模仿白貂的用pb开发的那个框架,代码很垃圾,有时间在重新整理吧
treeview用3个图片,模仿checkbox的三态
授权窗口
unit YHGL;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, ImgList,menus,common, DB, ADODB;

type
Tyonghuguanli
=
class
(TForm)
TreeView1: TTreeView;
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
Splitter1: TSplitter;
ImageList1: TImageList;
ListBox1: TListBox;
TreeView2: TTreeView;
qryright: TADOQuery;
procedure Label4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TreeView2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure IniTVStates(tv1:TTreeView);
var
yonghuguanli: Tyonghuguanli;

implementation
uses jxcmain;
{$R *.dfm}
const
cFlatUnCheck
=
1
;
cFlatChecked
=
2
;
procedure IniTVStates(tv1:TTreeView);
//
初始treeview选择状态
procedure IniTVNodeStates(node:TTreeNode);
var
i:Integer;
begin
if
node.Count
>
1
then
begin
for
i :
=
0
to node.Count
-
1
do
begin
if
yonghuguanli.qryright.Locate(
'
item_text
'
,node[i].Text,[loCaseInsensitive]) then
node[i].StateIndex :
=
yonghuguanli.qryright.fieldbyname(
'
abled
'
).AsInteger
else
node[i].StateIndex :
=
2
;
if
node[i].Count
>
1
then IniTVNodeStates(node[i]);
end;
end;
end;
var
node:TTreeNode;
begin
tv1.Items.BeginUpdate;
node :
=
tv1.Items.GetFirstNode;
treeview用3个图片,模仿checkbox的三态
授权窗口































































