請教關於自訂事件內存取元件寫法問題 |
尚未結案
|
chinliang
一般會員 發表:16 回覆:26 積分:13 註冊:2002-06-17 發送簡訊給我 |
小弟在MDI CHILD FORM上放置二個元件,Edit1及Button1,並指定Button Click事件為顯示Edit內容,另在Create Form時,動態建立一個btnDynamic,也作同於Button1的事情,Click事件指定為自訂事件。 問題來自於自訂事件內若要存取Edit1的值,須加上Form的名稱MDIChild,不然Compier會錯誤,但是產生多個時,全部的btnDynamic仍然是存取到第一個建立的那個Form的Edit1的值,想請教先進,程式的寫法要怎麼寫才能在自訂事件內存取自己當前這個Form元件的值。
unit Childwin; interface uses Windows, Classes, Graphics, Forms, Controls, StdCtrls, Dialogs; type TMDIChild = class(TForm) Button1: TButton; Edit1: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; TMyEventObj = object procedure BtnClick(Sender: TObject); end; var MDIChild: TMDIChild; MyEvent: TMyEventObj; implementation {$R *.DFM} procedure TMyEventObj.BtnClick(Sender: TObject); begin ShowMessage (MDIChild.Edit1.Text); end; procedure TMDIChild.Button1Click(Sender: TObject); begin ShowMessage(Edit1.Text); end; procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TMDIChild.FormCreate(Sender: TObject); var btnDynamic: TButton; begin btnDynamic := TButton.Create(Self); with btnDynamic do begin Parent := Self; Top := Button1.Top Button1.Height; Left := Button1.Left; Height := Button1.Height; Width := Button1.Width; OnClick := MyEvent.BtnClick; end; end; |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
procedure TMDIChild.FormCreate(Sender: TObject); //var //btnDynamic: TButton; begin //btnDynamic := TButton.Create(Self); with TButton.Create(Self) do begin Parent := Self; //variable btnDynamic 在OnCreate後,會out of scope Name := 'btnDynamic'; Top := Button1.Top Button1.Height; Left := Button1.Left; Height := Button1.Height; Width := Button1.Width; OnClick := Button1Click; end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |