一個複合物件的怪問題!ActiveControl 使用問題! |
缺席
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
一個複合物件的怪問題!
各位前輩及版主大人: 我自己寫了一個複合物件,就是一個物件內包含三個物件TLable Ttntdbedit TLable 但是我使用showmessage(Self.ActiveControl.ClassName);去捉取目前表單上的物件 都會只會顯示Ttntdbedit,但是我已經有自訂物件的名稱(假設是TXXX),但是為何 捉到的物件是Ttntdbedit而非TXXX,真是搞不懂! 懇請給予提示疑惑!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
我的複合物件是繼承TWinControl去實作的,但是我的疑問是
既然是複合物件,表單上也是複合物件,當我使用ActiveControl.ClassName 去取得類別名稱時,當焦點在我複合物件內的Ttntdbedit物件上時, 為何取得的不是我自訂名稱的複合物件名稱,而是原來的Ttntdbedit物件, 因為如果這樣,我不知道要怎麼判斷 procedure TFRM_BASEFORM.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin // Ctrl F 搜尋 if (Shift = [ssCtrl]) and (Key = 70) then begin if Self.ActiveControl.ClassName = '我自訂的名稱' then begin showmessage(Tyaoedit(Self.ActiveControl).DB_Field_QueryName); // 我自訂複合物件內的屬性,一直執行不到這一行 Exit; end;
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
後來我改了方法,但是這個問題雖然暫時擱下,但是有點小不甘願!
procedure TFRM_BASEFORM.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var I: integer; frm: TForm; begin frm := TForm((self)); // move to next control; // Ctrl F 搜尋 if (Shift = [ssCtrl]) and (Key = 70) then begin for I := 0 to frm.ComponentCount - 1 do begin if frm.Components[I] is TYaoEdit then begin if TYaoEdit(frm.Components[I]).Focused then // 改成這樣才可以 begin showmessage(Tyaoedit(frm.Components[I]).DB_Field_QueryName); end; end; end;
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |