我下了一段代码:
unit TreeFillThrd;interfaceuses
Classes, ComCtrls, ADODB, SysUtils;type
TNodeData = record
Index: integer;
Caption: string;
end;
PNodeData = ^TNodeData;
TTreeFill = class(TThread)
TV: TTreeView;
TableName: string;
FieldIndex: string;
FieldPID: string;
FieldCaption: string;
RootText: string;
Conn: TADOConnection;
Ptr: PNodeData;
constructor Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
private
procedure AddTree(Node: TTreeNode; PN: PNodeData);
function getimageindex(node:TTreeNode):Boolean; //这里怎么提示错误了?哪里有问题,怎么改?
//系统提示:TreeFillThrd.pas(30):Private sysbol'getimageindex' declared but never used' //在哪里没加上uses?
function getselectindex(node:TTreeNode):Boolean;
protected
procedure Execute; override;
end;implementation
//------------------------------------------------------------------------------
constructor TTreeFill.Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
begin
FieldIndex := AFieldIndex;
FieldPID := AFieldPID;
FieldCaption := AFieldCaption;
TV := ATreeView;
TableName := ATable;
RootText := ARootText;
Conn := AConn;
New(Ptr);
inherited Create(False);
end;
//------------------------------------------------------------------------------
procedure TTreeFill.Execute;
var
Node: TTreeNode;
begin
FreeOnTerminate := True;
TV.Items.Clear;
Ptr^.Index := 0;
Ptr^.Caption := RootText;
Node := TV.Items.AddObject(nil, RootText, Ptr);
Node.ImageIndex := 0;
Node.SelectedIndex := 0;
AddTree(Node, Ptr);
TV.Selected:=TV.Items[0];
//TV.Items[0].Expand(true);
//TV.FullExpand;
end;
//------------------------------------------------------------------------------
procedure TTreeFill.AddTree(Node: TTreeNode; PN: PNodeData);
var Query: TADOQuery;
nNode: TTreeNode;
PNode: PNodeData;
begin
try
Query := TADOQuery.Create(nil);
Query.Connection := Conn;
Query.SQL.Text := 'Select * from ' + TableName + ' where ' + FieldPID + ' =' + IntToStr(PN^.Index);
if Query.Active then
Query.Close;
Query.Open;
while Query.Eof = False do
begin
New(PNode);
PNode^.Caption := Query.FieldByName(FieldCaption).AsString;
PNode^.Index := Query.FieldByName(FieldIndex).AsInteger;
nNode := TV.Items.AddChildObject(Node, PNode^.Caption, PNode);
//getimageindex(nnode);
//getselectindex(nnode);
//nNode.ImageIndex := 1;
//nNode.SelectedIndex := 2;
AddTree(nNode, PNode);
Query.Next;
end;
finally
Query.Free;
end;
end;
//------------------------------------------------------------------------------function TTreeFill.getimageindex(node: TTreeNode): Boolean;
begin
if not node.IsFirstNode then
begin
if node.HasChildren then node.ImageIndex:=1
else
begin
if node.Level>1 then
begin
if node.Data<>nil then node.ImageIndex:=1
else node.ImageIndex:=2;
end;
end;
end;
end;function TTreeFill.getselectindex(node: TTreeNode): Boolean;
begin
Node.SelectedIndex:=Node.ImageIndex;
end;end.
unit TreeFillThrd;interfaceuses
Classes, ComCtrls, ADODB, SysUtils;type
TNodeData = record
Index: integer;
Caption: string;
end;
PNodeData = ^TNodeData;
TTreeFill = class(TThread)
TV: TTreeView;
TableName: string;
FieldIndex: string;
FieldPID: string;
FieldCaption: string;
RootText: string;
Conn: TADOConnection;
Ptr: PNodeData;
constructor Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
private
procedure AddTree(Node: TTreeNode; PN: PNodeData);
function getimageindex(node:TTreeNode):Boolean; //这里怎么提示错误了?哪里有问题,怎么改?
//系统提示:TreeFillThrd.pas(30):Private sysbol'getimageindex' declared but never used' //在哪里没加上uses?
function getselectindex(node:TTreeNode):Boolean;
protected
procedure Execute; override;
end;implementation
//------------------------------------------------------------------------------
constructor TTreeFill.Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
begin
FieldIndex := AFieldIndex;
FieldPID := AFieldPID;
FieldCaption := AFieldCaption;
TV := ATreeView;
TableName := ATable;
RootText := ARootText;
Conn := AConn;
New(Ptr);
inherited Create(False);
end;
//------------------------------------------------------------------------------
procedure TTreeFill.Execute;
var
Node: TTreeNode;
begin
FreeOnTerminate := True;
TV.Items.Clear;
Ptr^.Index := 0;
Ptr^.Caption := RootText;
Node := TV.Items.AddObject(nil, RootText, Ptr);
Node.ImageIndex := 0;
Node.SelectedIndex := 0;
AddTree(Node, Ptr);
TV.Selected:=TV.Items[0];
//TV.Items[0].Expand(true);
//TV.FullExpand;
end;
//------------------------------------------------------------------------------
procedure TTreeFill.AddTree(Node: TTreeNode; PN: PNodeData);
var Query: TADOQuery;
nNode: TTreeNode;
PNode: PNodeData;
begin
try
Query := TADOQuery.Create(nil);
Query.Connection := Conn;
Query.SQL.Text := 'Select * from ' + TableName + ' where ' + FieldPID + ' =' + IntToStr(PN^.Index);
if Query.Active then
Query.Close;
Query.Open;
while Query.Eof = False do
begin
New(PNode);
PNode^.Caption := Query.FieldByName(FieldCaption).AsString;
PNode^.Index := Query.FieldByName(FieldIndex).AsInteger;
nNode := TV.Items.AddChildObject(Node, PNode^.Caption, PNode);
//getimageindex(nnode);
//getselectindex(nnode);
//nNode.ImageIndex := 1;
//nNode.SelectedIndex := 2;
AddTree(nNode, PNode);
Query.Next;
end;
finally
Query.Free;
end;
end;
//------------------------------------------------------------------------------function TTreeFill.getimageindex(node: TTreeNode): Boolean;
begin
if not node.IsFirstNode then
begin
if node.HasChildren then node.ImageIndex:=1
else
begin
if node.Level>1 then
begin
if node.Data<>nil then node.ImageIndex:=1
else node.ImageIndex:=2;
end;
end;
end;
end;function TTreeFill.getselectindex(node: TTreeNode): Boolean;
begin
Node.SelectedIndex:=Node.ImageIndex;
end;end.
如果觉的不好,你可以这样
1.删除
2.鼠标移动其上面,同时按ctrl+shift+c,生成函数的实现