我建立了一個繼承自edit的自定義控件。
在其中我有如下的代碼:
Unit Edit_My
......
const
  sx_mymessage = WM_USER + 101;
.......
.......
  PerForm(sx_mymessage,0,0);
......
意思是在exit事件中調用PerForm(sx_mymessage,0,0)想發送一個消息給所在的form.我在有此控件的form中有如下代碼:
unit ac_gj;
..........
Const
  sx_mymessage = WM_USER + 101;
................
  public
    Procedure DataChange(Var Msg: TMessage);message sx_mymessage;
.................................
procedure Tfrm_GJ.DataChange(var Msg: TMessage);
begin
  MessageDlg('Form Test Data Change.', mtInformation, [mbOk], 0);
end;
意思是Form接收到此消息,在DataChange中進行處理。但程序運行後,沒有顯示MessageDlg('Form Test Data Change.', mtInformation, [mbOk], 0);, 問題出在哪裡?請高手指教。

解决方案 »

  1.   

    PerForm是给自己也就是你繼承自edit的自定義控件发消息。要给Form发消息,应该使用SendMessaege或者PostMessage。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————