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

請問如何用Message來做到元件的事件觸發??

答題得分者是:ccchen
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-19 08:36:42 IP:61.219.xxx.xxx 未訂閱
假設我寫了一個Panel元件 在Panel元件上放了一個按鈕 但此時我希望在button.onClick事件show一個訊息 之前我的寫法是宣告一個NewClick事件 procedure T元件名.NewClick(Sender: TObject); begin showmessage('Test!!'); end; 之後在Create下讓Button.onClick := NewClick; 後來有網友說這樣做不好,儲取得掉原本button.onClick 叫我改用Message來做~~~ 可是我看過Delphi 4 業界標準手冊上寫的message用法, 真的看不懂~~~ 請問是否有相關的文件或說明可以參考 謝謝!!! 還有請問現在還有沒有寫的比較詳細的Delphi VCL製作的文件或書籍 我在台中龍軒書局都找不到相關的書籍,大部份都是在教標準元件的使用 和資料庫的製作,比較少相關的書籍,請問有嗎!? 在請問有台中的朋友知道台中除了龍軒還有哪裡賣的書便宜種類也比較多!?
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-19 10:10:17 IP:203.217.xxx.xxx 未訂閱
不知是否完全正確了解你的問題. Create一個元件, 繼承Panel,內含一個button, button click時要執行一些內定功能, 且仍保留onClick Event. 實際上在此狀況下, 元件之onClick乃繼承至Panel, button之所有property若須由外部在DesignTime控制均須額外published    
  TmyPanel=class(TPanel)
  private
    fonbutClick:TNotifyEvent;  //宣告新Event變數處理buttonClick
  public
    button:TButton;    //宣告在public,以便未publish button各參數仍能控制
    constructor create(Owner:TComponent);
    procedure insideClick(Sender: TObject); //執行內部功能
  published
    property OnbutClick: TNotifyEvent read FOnbutClick write FOnbutClick;  //使元件能由外部assign此button click Event
  end;    { TmyPanel }
constructor TmyPanel.create(Owner: TComponent);
begin
  inherited;
  button:=TButton.create(self);
  button.parent:=self;
  button.SetBounds(0,0,75,25);
  button.onclick:=Insideclick;  //button click時先執行InsideClick
end;    procedure TmyPanel.insideClick(Sender: TObject);
begin
  showmessage('hi');
  if assigned(onbutClick) then onbutClick(Sender);//檢查如有onButClick,執行之
end;
你可以Register此元件後執行, 若不安裝也可以如下, RunTime Create來測試
procedure TForm1.ButClick(Sender: TObject);
begin
  showmessage('test');
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  b:=TmyPanel.create(self);
  b.parent:=self;
  b.setbounds(10,10,200,100);
  b.OnbutClick:=butclick;
end;
你當然也可以攔截WM_MOUSEDOWN,WM_MOUSEUP來完全自行處理,但此處亳無須要 還有請問現在還有沒有寫的比較詳細的Delphi VCL製作的文件或書籍 恐怕只有原文書, 且龍軒書局以前專賣原文書, 現在反而都沒有了, 我都是在到楊業看書目訂購.
系統時間:2024-05-07 22:05:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!