unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ImgList, Menus, ToolWin, ComCtrls,
Buttons, DB, ADODB;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N221: TMenuItem;
ADOConnection1: TADOConnection;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure subnote(mynode: TMenuItem);
{ Public declarations }
end;type
pmyrecord = ^Tmyrecord;
Tmyrecord = record
Parentnodeid : string;
nodeid : string ;
caption : string ;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
myrecordpoint : pmyrecord;
begin
new(myrecordpoint);
myrecordpoint.Parentnodeid := '';
myrecordpoint.nodeid := 'root';
myrecordpoint.caption := MainMenu1.Items[0].Caption;
MainMenu1.Items.VCLComObject := myrecordpoint;
subnote(MainMenu1.Items);
end;procedure TForm1.subnote(mynode:TMenuItem);
var
myrecordpointer : pmyrecord;
tmpdataset : TADODataSet;
tmpnode : TMenuItem;
sqlstr : string;
begin
tmpdataset := TADODataSet.Create(nil);
sqlstr := 'parentnodeid='+''''+pmyrecord(mynode.VCLComObject)^.nodeid+'''';
tmpdataset.Connection := ADOConnection1;
tmpdataset.CursorType := ctStatic;
tmpdataset.CursorLocation := clUseClient;
tmpdataset.CommandText := 'select * from mytree where '+ sqlstr + ' order by nodeid';
tmpdataset.Active := True;
tmpdataset.First; while not tmpdataset.Eof do
begin
tmpnode:= ?????//这儿怎么写。
New(myrecordpointer);
myrecordpointer.Parentnodeid := tmpdataset.FieldValues['parentnodeid'];
myrecordpointer.nodeid := tmpdataset.FieldValues['nodeid'];
myrecordpointer.caption := tmpdataset.FieldValues['caption'];
tmpnode.VCLComObject := myrecordpointer;
subnote(tmpnode);
tmpdataset.Next;
end;
tmpdataset.Active := False;
tmpdataset.Free;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ImgList, Menus, ToolWin, ComCtrls,
Buttons, DB, ADODB;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N221: TMenuItem;
ADOConnection1: TADOConnection;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure subnote(mynode: TMenuItem);
{ Public declarations }
end;type
pmyrecord = ^Tmyrecord;
Tmyrecord = record
Parentnodeid : string;
nodeid : string ;
caption : string ;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
myrecordpoint : pmyrecord;
begin
new(myrecordpoint);
myrecordpoint.Parentnodeid := '';
myrecordpoint.nodeid := 'root';
myrecordpoint.caption := MainMenu1.Items[0].Caption;
MainMenu1.Items.VCLComObject := myrecordpoint;
subnote(MainMenu1.Items);
end;procedure TForm1.subnote(mynode:TMenuItem);
var
myrecordpointer : pmyrecord;
tmpdataset : TADODataSet;
tmpnode : TMenuItem;
sqlstr : string;
begin
tmpdataset := TADODataSet.Create(nil);
sqlstr := 'parentnodeid='+''''+pmyrecord(mynode.VCLComObject)^.nodeid+'''';
tmpdataset.Connection := ADOConnection1;
tmpdataset.CursorType := ctStatic;
tmpdataset.CursorLocation := clUseClient;
tmpdataset.CommandText := 'select * from mytree where '+ sqlstr + ' order by nodeid';
tmpdataset.Active := True;
tmpdataset.First; while not tmpdataset.Eof do
begin
tmpnode:= ?????//这儿怎么写。
New(myrecordpointer);
myrecordpointer.Parentnodeid := tmpdataset.FieldValues['parentnodeid'];
myrecordpointer.nodeid := tmpdataset.FieldValues['nodeid'];
myrecordpointer.caption := tmpdataset.FieldValues['caption'];
tmpnode.VCLComObject := myrecordpointer;
subnote(tmpnode);
tmpdataset.Next;
end;
tmpdataset.Active := False;
tmpdataset.Free;
end;end.
miN.Caption := '新增';
MainMenu1.Items.Add(miN);
如果要分类,还可以设置:Parent