那个procedure Tform.pcreateTreeView是本论谈里找来的,我代码是能看懂,只是调试不了,出现Expected'='but'('found.这个错误。是不是过程调用出了问题。请各位帮忙看看。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
procedure Tform.pcreateTreeView(node:TTreenode;parentid:integer;atvnviewnode:TTreeview;
Aadoconnection:TAdoconnection;AStrSql:string;AimageIndex,ASelectedindex:integer;AStrfieldname:string);
private
{ Private declarations }
public
{ Public declarations }
end;type
PMyRecord = ^MyRecord;
MyRecord = record
ID : integer;
Name:string;
ParentID : integer;
end;//end of record
var
Form1: TForm1;implementation{$R *.dfm}
procedure Tform.pcreateTreeView(node:TTreenode;parentid:integer;atvnviewnode:TTreeview;
Aadoconnection:TAdoconnection;AStrSql:string;AimageIndex,ASelectedindex:integer;AStrfieldname:string);
var
tmpNode : TTreeNode;
ADOTree : TADOQuery;
p : PMyRecord;
begin
ADOTree := TADOQuery.Create(self);
ADOTree.Connection := AadoConnection;
ADOTree.close;
ADOTree.SQL.clear;
ADOTree.SQL.Text := AstrSQL+' where '+AstrFieldName +' ='+inttostr(ParentID);
ADOTree.open;
if ADOTree.recordcount > 0 then
begin
ADOTree.First;
while not ADOTree.Eof do
begin
new(p);
p.ID := ADOTree.Fields[0].AsInteger;
p.name :=ADOTree.Fields[1].AsString;
p.ParentID := ADOTree.Fields[2].AsInteger;
tmpNode := AtvnViewNode.Items.AddChildObject(Node,p.name,p);
if AtvnViewNode.Images<>nil then //有图标时设置图标
begin
tmpNode.SelectedIndex := ASelectedIndex; //选中时图标
tmpNode.ImageIndex := AImageIndex; //没选中时图标
end; {== End If ==}
pCreateTreeView(tmpNode,ADOTree.Fields[0].AsInteger,AtvnViewNode,AadoConnection,AstrSQL,16,17,AstrFieldName);
ADOTree.next;
//dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
end;
end;
ADOTree.Free;
end;
end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
procedure Tform.pcreateTreeView(node:TTreenode;parentid:integer;atvnviewnode:TTreeview;
Aadoconnection:TAdoconnection;AStrSql:string;AimageIndex,ASelectedindex:integer;AStrfieldname:string);
private
{ Private declarations }
public
{ Public declarations }
end;type
PMyRecord = ^MyRecord;
MyRecord = record
ID : integer;
Name:string;
ParentID : integer;
end;//end of record
var
Form1: TForm1;implementation{$R *.dfm}
procedure Tform.pcreateTreeView(node:TTreenode;parentid:integer;atvnviewnode:TTreeview;
Aadoconnection:TAdoconnection;AStrSql:string;AimageIndex,ASelectedindex:integer;AStrfieldname:string);
var
tmpNode : TTreeNode;
ADOTree : TADOQuery;
p : PMyRecord;
begin
ADOTree := TADOQuery.Create(self);
ADOTree.Connection := AadoConnection;
ADOTree.close;
ADOTree.SQL.clear;
ADOTree.SQL.Text := AstrSQL+' where '+AstrFieldName +' ='+inttostr(ParentID);
ADOTree.open;
if ADOTree.recordcount > 0 then
begin
ADOTree.First;
while not ADOTree.Eof do
begin
new(p);
p.ID := ADOTree.Fields[0].AsInteger;
p.name :=ADOTree.Fields[1].AsString;
p.ParentID := ADOTree.Fields[2].AsInteger;
tmpNode := AtvnViewNode.Items.AddChildObject(Node,p.name,p);
if AtvnViewNode.Images<>nil then //有图标时设置图标
begin
tmpNode.SelectedIndex := ASelectedIndex; //选中时图标
tmpNode.ImageIndex := AImageIndex; //没选中时图标
end; {== End If ==}
pCreateTreeView(tmpNode,ADOTree.Fields[0].AsInteger,AtvnViewNode,AadoConnection,AstrSQL,16,17,AstrFieldName);
ADOTree.next;
//dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
end;
end;
ADOTree.Free;
end;
end.
var
I, FolderID: Integer;
Node: TTreeNode;
begin
FolderID := Integer(TreeNode.Data);
FolderTinyTable.Filter := 'ParentID=' + IntToStr(FolderID);
FolderTinyTable.Filtered := True;
FolderTinyTable.First;
for I := 0 to FolderTinyTable.RecordCount - 1 do
begin
Node := TreeView.Items.AddChild(TreeNode, FolderTinyTable.FieldByName('Name').AsString);
Node.Data := Pointer(FolderTinyTable.FieldByName('ID').AsInteger);
Node.ImageIndex := 1;
Node.SelectedIndex := 1;
FolderTinyTable.Next;
end;
for I := 0 to TreeNode.Count - 1 do
begin
FillTreeNode(TreeNode.Item[I]);
end;
end;begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil, SAddressBook) do
begin
Data := Pointer(0);
ImageIndex := 0;
SelectedIndex := 0;
end;
FillTreeNode(TreeView.Items[0]);
TreeView.FullExpand;
TreeView.Items.EndUpdate;
TreeView.Items[1].Selected := True;
end;