線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1773
推到 Plurk!
推到 Facebook!

請問動態MENU,如何動態產生、呼叫相對應的Function or Event

答題得分者是:huwk
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-19 19:27:19 IP:61.30.xxx.xxx 未訂閱
請問各位大大 在依據DB而產生的動態選單, 要如何呼叫或產生動態的Function or Event 或者市有各共用的Function來依據 所傳入的 TAG OR Name 來加以辨別使用者按下哪個 選項 進而開啟對應的 Form 請大大們可否告知,小弟該往哪方面去著手 謝謝
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-19 19:43:36 IP:202.39.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus;    type
  TForm1 = class(TForm)
    Button1: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject); // MenuItem1 的 OnClick Event
    procedure MenuItem2Click(Sender: TObject); // MenuItem2 的 OnClick Event
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.MenuItem1Click(Sender: TObject)
begin
  ShowMessaeg('MenuItem 1 click!');
end;    procedure TForm1.MenuItem2Click(Sender: TObject)
begin
  ShowMessaeg('MenuItem 2 click!');
end;    // 這裡動態產生
procedure TForm1.Button1Click(Sender: TObject);
var
  mi: TMenuItem;
begin
  mi := TMenuItem.Create(self);
  mi.Name := 'MenuItem1';
  mi.Caption := 'MenuItem 1';
  mi.OnClick := MenuItem1Click; // 指定 MenuItem 1 的 OnClick Event
  MainMenu1.Items.Add(mi);      mi := TMenuItem.Create(self);
  mi.Name := 'MenuItem2';
  mi.Caption := 'MenuItem 2';
  mi.OnClick := MenuItem2Click; // 指定 MenuItem 2 的 OnClick Event
  MainMenu1.Items.Add(mi);
end;    end.
發表人 - hagar 於 2005/01/19 19:53:28
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-19 19:50:53 IP:211.76.xxx.xxx 未訂閱
哇去寫個code才一回頭己經被版主回了~ 不過倒覺得他要期用事件...應改寫一下 而把每個cretae出來的menu都指到同一個
procedure TForm1.MenuItem1Click(Sender: TObject)
var s :String;
begin
  if not (sender is Tmemuitem) then exit;      s := tmenuitem(sender).name;      if s = 'MenuItem1' then
    ShowMessaeg('MenuItem 1 click!')
  else if s = 'MenuItem2' then
    showmessgae('MenuItem 2 click!')
end;
引言:
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus;    type
  TForm1 = class(TForm)
    Button1: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject); // MenuItem1 的 OnClick Event
    procedure MenuItem2Click(Sender: TObject); // MenuItem2 的 OnClick Event
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.MenuItem1Click(Sender: TObject)
begin
  ShowMessaeg('MenuItem 1 click!');
end;    procedure TForm1.MenuItem2Click(Sender: TObject)
begin
  ShowMessaeg('MenuItem 2 click!');
end;    // 這裡動態產生
procedure TForm1.Button1Click(Sender: TObject);
var
  mi: TMenuItem;
begin
  mi := TMenuItem.Create(self);
  mi.Name := 'MenuItem1';
  mi.Caption := 'MenuItem 1';
  mi.OnClick := MenuItem1Click; // 指定 MenuItem 1 的 OnClick Event
  MainMenu1.Items.Add(mi);      mi := TMenuItem.Create(self);
  mi.Name := 'MenuItem2';
  mi.Caption := 'MenuItem 2';
  mi.OnClick := MenuItem2Click; // 指定 MenuItem 2 的 OnClick Event
  MainMenu1.Items.Add(mi);
end;    end.
-- 世界上為什麼會有貧窮?因為大部分人都不想和別人分享自己所擁有的 -- Mother Teresa
------
熊的學習 http://huwk.blogspot.com
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-19 22:41:31 IP:59.112.xxx.xxx 未訂閱
謝謝 hagar & huwk 的解法 2種不同的方法,增加多方的思維 由於 huwk 的解法 比較符合 自身所需 故分數給 Huwk 大大 對於 Hagar 第一時間的回文, 未能給予分數,深表抱歉。 謝謝大大們不吝提供自身的觀點、解法。
系統時間:2024-05-01 10:15:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!