自动生成下拉菜单!急,(50分相送)
XARS 2007-06-19 11:55:25 unit Unit1;
interface
uses
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.