owner問題 |
尚未結案
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
請問我在dbedit的keydown中寫
if (TComponent(Sender).Owner is TPanel) or
(Sender is TForm)
then begin
......
我有兩個dbedit各放在groupbox,panel
分別觸發不同的keydown
dbedit1是觸發form上的onkeydown,dbedit2則是觸發自己的onkeydown
所以我用
if (TComponent(Sender).Owner is TPanel) or
(Sender is TForm)
then begin
......
做為判斷,但是dbedit2的確一直觸發到form的onkeydown,
dbedit2是放在groupbox上,而且sender是dbedit,但是為什麼我寫的判斷式無效??
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
引言:錯了,dbEdit 的 owner 是 form,任何在 IDE 環境中貼到 form 上的元件,owner 都是 form (Runtime 自己 create 的可以不是 form) 請看: TForm1 = class(TForm) DBEdit1: TDBEdit; // 難道 owner 是其他的物件嗎? Label1: TLabel; Panel1: TPanel; .... protected .... end; 如果這個 DBEdit 的 Parent 是一個 Panel,表示這個 DBEdit 會出現在這個 Panel 的 Client area 中 妳可能把 owner 和 parent 搞混了 加油喔,喵~引言: if (Sender is TForm ) or (dbedit(Sender).Parent = Panel1)依照owner的定義,dbedit的owner應該是panel沒錯, 所以我覺得我的寫法,跟你的寫法的意思應該一樣, 但是都還是會觸發到form的onkeydown事件,才會執行到本身的onkeydown ,有何辦法??
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
還有一個方法,參考看看,希望能幫得上忙. 假設你的dbedit1命名為ed1,dbedit2為ed2,form name為fm1 要找出ed1可以使用 fm1.findcomponent('ed1') 找出來後再轉型 tdbedit(fm1.findcomponent('ed1')) 如果要用資料庫欄位名稱來找,步驟如下: 1.掃描所有在form上的控制項.
2.引用typinfo,寫一個hasprop的function,傳入tcomponent
用來判斷這個控制項是否具有datasource的屬性.
3.掃描完所有的控制項找出具有datasource屬性的後,
再過濾對應所要欄位的資料感知元件.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |