老大仔
尊榮會員
發表:78 回覆:837 積分:1088 註冊:2006-07-06
發送簡訊給我
|
不好意思~ 我想請問一下 在我formcreate的時候 自動產生了很多的edit元件(edit只是舉例一下) 然後我想要在按下按鈕後就判斷某個edit是否存在
請問有這樣的函數可以找出來這樣的判斷嗎?
簡單的說~~ 就是有辦法知道在form裡面可以判斷出"某個元件"嗎?? 而不是某類物件
|
TWJack
一般會員
發表:3 回覆:13 積分:3 註冊:2006-11-01
發送簡訊給我
|
實在不是很清楚你的想法
寫一段程式,看看是不是你要的
for i := 0 to self.ComponentCount -1 do begin if Components[i] is TEdit then ShowMessage(Components[i].Name); end;
你自己應該可以自己變化才對
|
te_hsun
一般會員
發表:43 回覆:34 積分:20 註冊:2002-03-25
發送簡訊給我
|
自己動態建立的元件,如果沒有特別指定name,它不會自己產生,所以 name 是空白的
這段可以找出相同 TEdit 的元件,並且可以設定與取得各值:
function TForm1.CreateEdit: TEdit; begin Result:= TEdit.Create(Self); Result.Parent:= Self; Result.Text:= Result.Name; Result.OnClick:= Edit1Click; end;
為每個 Edit 指定 OnClick 事件後,當 Edit 物件觸發 OnClick 事件,可以由 Sender 判別是哪個物件產生的,並且可以設定與取得各值:
procedure TForm1.Edit1Click(Sender: TObject); begin if (Sender is TEdit) then TEdit(Sender).Text:= '???'; end;
|
TWJack
一般會員
發表:3 回覆:13 積分:3 註冊:2006-11-01
發送簡訊給我
|
function TForm1.CreateEdit: TEdit; begin Result:= TEdit.Create(Self); Result.Parent:= Self; Result.Name := 'Edit12'; //這裡指定名稱,可以寫個計算Edit數量的function Result.Text:= Result.Name; Result.OnClick:= Edit1Click; end;
|
老大仔
尊榮會員
發表:78 回覆:837 積分:1088 註冊:2006-07-06
發送簡訊給我
|
謝謝各位的解答 但是~可能各位有點誤解我的意思了
舉例來說~~ 我已經自動產生了五個edit元件 (名稱依序為: ed1,ed2,ed3,ed4,ed5) 然後我按下了一按鈕後 必須知道在form中有沒有ed2這個元件 而不是判斷有沒有TEdit這類物件
不知道有沒有人看懂我的意思>"< 不好意思 勞煩大家哩....
|
te_hsun
一般會員
發表:43 回覆:34 積分:20 註冊:2002-03-25
發送簡訊給我
|
那就是在建立 Edit 時指定 Edit.Name 或是其他...例如: Tag 值
然後在你按下按鈕時,去找有沒有你要的名稱或 Tag 的值就好啦...是不是這個問題呢?
procedure TForm1.Button1Click(Sender: TObject); begin if EditIsExists('Edit2') then Application.MessageBox('找到','訊息', 48) else Application.MessageBox('沒找到', '訊息', 48); end;
function TForm1.CreateEdit(const AName: string): TEdit; begin Result:= TEdit.Create(Self); Result.Parent:= Self; Result.Name:= AName; end;
function TForm1.EditIsExists(const AEditName: string): Boolean; var i: Integer; begin Result:= False; for i:= 0 to ControlCount-1 do if (Controls[i] is TEdit) then begin Result:= UpperCase(TEdit(Controls[i]).Name)= UpperCase(AEditName); if Result Then Break; end; end;
|
老大仔
尊榮會員
發表:78 回覆:837 積分:1088 註冊:2006-07-06
發送簡訊給我
|
那~請問這可以適用在自動產生元件嗎?? 因為我印象中自動產生的元件好像偵測不到@@
還有~UpperCase這是什麼呢?? 小弟我沒有看過耶>"<
|
te_hsun
一般會員
發表:43 回覆:34 積分:20 註冊:2002-03-25
發送簡訊給我
|
可以啊....只是找物件的名字啊 UpperCase => 將字串轉成大寫...
|
jow
尊榮會員
發表:66 回覆:751 積分:1253 註冊:2002-03-13
發送簡訊給我
|
|