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

動態産生10個元件的事件.....

尚未結案
afu222
一般會員


發表:7
回覆:6
積分:2
註冊:2004-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-23 13:52:37 IP:211.23.xxx.xxx 未訂閱
請問各位大大: 我有看過了之前的動態産生元件的事件如何寫, 但是如果不只是一個元件的事件的情況, 每一個動態産生的元件的事件怎麼寫? 我的程式如下: procedure EditKeyPress(Sender: TObject; var Key: Char); for i := 1 to 10 do begin edit:=tedit.Create(Application); edit.Name:='Edit' inttostr(i); edit.Parent:=form1; edit.OnKeyPress:= editKeyPress; end; 煩請幫幫我解答一下,謝謝。
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-23 14:19:08 IP:61.222.xxx.xxx 未訂閱
您可以在
for i := 1 to 10 do
begin
edit:=tedit.Create(Application);
edit.Name:='Edit'   inttostr(i);
edit.Parent:=form1;
edit.Tag := I;
edit.OnKeyPress:= editKeyPress;
end;
添加 Tag ,作為識別判斷。
在
procedure EditKeyPress(Sender: TObject; var Key: Char);
begin
  Case Tcomponent(Sender).Tag of
    1:
    2:
     ...
  end;
end;
afu222
一般會員


發表:7
回覆:6
積分:2
註冊:2004-11-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-23 14:43:45 IP:211.23.xxx.xxx 未訂閱
真是太謝謝wameng大大了,我的問題解決了, 但是又遇到另一個問題, 就是ComboboxChange時動態産生10個edit, 但當Combobox再一次的Change時,會出現問題, 因為之前動態産生的edit沒有free掉, 所以有錯,請問現在要怎樣free掉, 要將程式寫在Combobox的那一個事件?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-23 16:50:32 IP:61.222.xxx.xxx 未訂閱
您可以先定義一陣列物件
Private
 AryEdit : array[1..10] of Tedit;
  ....    if Assigned(AryEdit[1]) then
  For I:=1 to 10 do FreeAndNil(AryEdit[I]);    for I := 1 to 10 do
begin
  AryEdit[I] := TEdit.Create(Application); {應該是Form1}
  AryEdit[I].Name:='Edit'   inttostr(i);{沒什麼意義!}
  AryEdit[I].Parent:=form1;
  AryEdit[I].Tag := I;
  AryEdit[I].OnKeyPress:= editKeyPress;
end;     
系統時間:2024-11-22 22:03:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!