?? unit1.~pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,Commctrl;
type
TForm1 = class(TForm)
tv1: TTreeView;
lst1: TListBox;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
procedure FormCreate(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var firstNode,twoNode,threeNode,fourNode:TTreeNode;
dw : DWORD;
const TVS_CHECKBOXES = $0100;
begin
dw := GetWindowLong( tv1.Handle, GWL_STYLE);
dw := dw or TVS_CHECKBOXES;
SetWindowLong(tv1.Handle, GWL_STYLE , dw);
firstNode := tv1.Items.AddChildFirst(nil,'根目錄'); //添加根目錄
twoNode:=tv1.Items.AddChild(firstNode,'111');
if twoNode.Text = '111' then
begin
threeNode:=tv1.Items.AddChild(twoNode,'zhangsan');
if threeNode.Text = 'zhangsan' then
begin
fourNode:=tv1.Items.AddChild(threeNode,'語文');
fourNode:=tv1.Items.AddChild(threeNode,'數學');
fourNode:=tv1.Items.AddChild(threeNode,'英語');
end;
threeNode:=tv1.Items.AddChild(twoNode,'lisi');
if threeNode.Text = 'lisi' then
begin
fourNode:=tv1.Items.AddChild(threeNode,'物理');
fourNode:=tv1.Items.AddChild(threeNode,'化學');
fourNode:=tv1.Items.AddChild(threeNode,'地理');
end;
threeNode:=tv1.Items.AddChild(twoNode,'wanger');
if threeNode.Text = 'wanger' then
begin
fourNode:=tv1.Items.AddChild(threeNode,'生物');
fourNode:=tv1.Items.AddChild(threeNode,'政治');
fourNode:=tv1.Items.AddChild(threeNode,'歷史');
end;
end;
twoNode:=tv1.Items.AddChild(firstNode,'222');
if twoNode.Text = '222' then
begin
threeNode:=tv1.Items.AddChild(twoNode,'zhaowu');
if threeNode.Text = 'zhaowu' then
begin
fourNode:=tv1.Items.AddChild(threeNode,'幾何');
fourNode:=tv1.Items.AddChild(threeNode,'代數');
fourNode:=tv1.Items.AddChild(threeNode,'外語');
end;
threeNode:=tv1.Items.AddChild(twoNode,'xiaohuang');
if threeNode.Text = 'xiaohuang' then
begin
fourNode:=tv1.Items.AddChild(threeNode,'高數');
fourNode:=tv1.Items.AddChild(threeNode,'統計');
fourNode:=tv1.Items.AddChild(threeNode,'會計');
end;
end;
end;
function IsNodeChecked(Node :TTreeNode) :Boolean;
var
item:TTVItem;
begin
item.mask:=TVIF_HANDLE;
item.hItem:=Form1.tv1.Items[Node.AbsoluteIndex].ItemId;
TreeView_GetItem(Form1.tv1.Handle,item);
if (item.state and $2000)=0 then
Result := False
else
Result := True;
end;
function isBrotherAllChecked(Node: TTreeNode): Boolean;
var
CurChild: TTreeNode;
tmpBool: Boolean;
begin
Node := Node.Parent;
if Node.HasChildren then
begin
CurChild := Node.GetFirstChild;
while CurChild <> nil do
begin
tmpBool := IsNodeChecked(CurChild);
if not tmpBool then
begin
Result := False;
exit;
end;
CurChild := Node.getNextChild(CurChild);
end;
end;
Result := True;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.btn1Click(Sender: TObject);
var fNode,twNode,thNode,fouNode:TTreeNode;
f_num,tw_num,th_num,fou_num:Integer;
num_first,num_two,num_three,num_four:Integer;
s:string;
begin
for f_num:=0 to tv1.Items.Count-1 do
begin
s:='';
twNode:=tv1.Items[f_num];
if twNode.HasChildren then
begin
Continue
end else
begin
if IsNodeChecked(twNode) then
begin
thNode:=twNode;
for tw_num:=0 to twNode.Level-1 do
begin
s := thNode.Text + ',' + s;
thNode:=thNode.Parent
end;
lst1.Items.Add(s);
end else
begin
Continue;
end;
end;
end;
end;
procedure TForm1.btn4Click(Sender: TObject);
var i_num:Integer;
begin
for i_num:=0 to tv1.Items.Count - 1 do
begin
tv1.Items.Item[i_num].StateIndex:=2;
tv1.Items.Item[i_num].StateIndex:=1;
end;
//lst1.Items.Clear;
end;
procedure TForm1.btn2Click(Sender: TObject);
var i,j,k,a:Integer;
str,listNode:string;
ts:TStringList;
aNode,Node:TTreeNode;
begin
for i:=0 to lst1.Items.Count-1 do
begin
str:=lst1.Items.Strings[i];
ts:= TStringList.Create;
ts.Delimiter:= ',';
ts.DelimitedText:= str;
for j:=0 to ts.Count-1 do
begin
if j <> 2 then
Continue
else
begin
for k:=0 to tv1.Items.Count - 1 do
begin
Node:=tv1.Items[k];
if Node.HasChildren then
Continue
else
begin
if (IsNodeChecked(Node)=False) then
begin
aNode:=Node;
for a:=0 to Node.Level - 1 do
begin
listNode:=ts[j];
//lst1.Items.Add(ts[j]);
//ShowMessage('ts[j]=='+listNode);
if aNode.Text = listNode then
begin
aNode.StateIndex:=2;
aNode.Parent.StateIndex:=2;
aNode.Parent.Parent.StateIndex:=2;
aNode.Parent.Parent.Parent.StateIndex:=2;
end;
end;
end else
Continue;
end;
end;
end;
end
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -