想請教自訂vcl的TabOrder屬性 |
尚未結案
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
各位前輩及版主大人:
想請教自訂vcl的TabOrder屬性,一些概念問題? 雖然我已經達到我要的目的。 話說從頭: 因為自己寫了一個複合元件的自訂元件Lable DBEDIT Button ,想說簡化資料編輯頁面的撰寫,寫了後總有一關一關的挑戰在等著 元件特性寫的差不多了,卻發現拉到自訂元件拉到Form上後,屬性表內無TabOrder屬性,本想說只要加入一TabOrder然後多一個FTabOrder 去紀錄該複合元件的TabOrder屬性,但是不寫還好,寫起來後,才發現原來自己觀念一塌糊塗,因為我寫了Set_TabOrder和Get_TabOrder 去操作FTabOrder欄位,屬性表示出現這個屬性可以看到並且操作,但是卻無法影響真正的TabOrder順序,也就是no use(台語所說得"無三小路用!") 沮喪之餘,記得KTOP前輩,曾經一再提醒,不要只要一直問問題,其實答案都在你的電腦中(C:\Program Files\Borland\Delphi7\Source\Vcl) 後來我就找了元件盤上註明的LabeledEdit(有前輩說這個範例是典型的複合元件),好在我沒忘記,不然我真的要哭了! 痛苦的事情又發生了,我參考了Borland vcl LabeledEdit的程式碼,發現繼承關係為 TLabeledEdit = class(TCustomLabeledEdit) ->TCustomLabeledEdit = class(TCustomEdit) ->TCustomEdit = class(TWinControl) ,哇塞!真漂亮的繼承規劃,我的都是單一方式繼承 物件的祖先只有TWinControl(真想銷毀自己撰寫的元件!),我看TCustomEdit 這一層的宣告"灰熊"簡單,人家什麼都沒寫就是寫了(或者是寫了我看不出來) ,published很簡單的一行property TabOrder; ....這...只有一行,昏倒中,那他存放的TabOrder值會在哪裡,腦容量太小,我心想,會不會是放在TWinControl 的心裡,當然我將自己一大堆混亂的程式碼,Set_TabOrder和Get_TabOrder移除後,心想說,不會吧!人家寫一行property TabOrder就是可以動了起來,我的呢? 心中的最後一點自信心終於潰堤(2006/10/16凌晨Ktop一樣斷線中..一樣連不上!)....這一夜我失眠了! 想起了...世界上最遙遠的距離.... 不是 生與死而是 我就站在妳前面 妳卻不知道我愛妳(Delphi我真的很愛你!你說話啊!) 世界上最遙遠的距離....不是 明明無法抵擋這一股氣息 卻還得故意裝 作毫不在意(我快起肖了! 到底要怎麼弄才會有TabOrder!)..... 就在愛恨交雜,欲走還留之際,我看到了一行,我完全搞不懂的代碼,FreeNotification(Self);,這是什麼!不過人家LabeledEdit的Create有寫到,老師說不會也要 抄起來,所以我就給他放到自己的複合元件內的Create,話說...一時傾盆大雨、雷電交加,竟然可以用了! 為什麼? 為什麼? 我想不透,肚子搞大了,我一樣 不知道為什麼? 懇請前輩和版主大大,給予指正!萬分感謝,叩首! (我上述的胡言亂語,您就大人不計小人過,寫程式真的會讓人起肖!) KTOP 不要在斷線啦!這樣我就失去依靠~嗚嗚!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
首先 TabOrder 是宣告在 TWinControl, 也就是所有可視元件都一定有 TabOrder (繼承父階, 它是宣告在 public 區段), 如果你要在 Property Editor 中給 Designer setting 就在 published 宣告
published property TabOrder; // 這是省略式宣告 (因為已經在 public 已經有詳細的宣告) 至於 FreeNotification 是元件在被 Free 時要通知其他的元件用的, 如 DBEdit 中有 DataSource, Designer 移除掉 DataSource 時, 會通知 DBEdit 此 DataSource 已經不在了, 不然 DBEdit 會存取到不知名的記憶體區段而產生錯誤! 在物件導向的世界中有二大派, 一種是單一繼承, 如 Delphi, C#, JAVA. 另一種是多重繼承, 如 C (BCB), 所以你寫的元件需要組合多種元件時, 就必需自己產生各個元件. 個人建議你看 深入Delphi元件設計 http://library.slvs.tcc.edu.tw/webopac/DETDATA.PHP?QROW=1&AU=(ray,konopka) 縣市及各大學圖書館有. 如果可以找到 Delphi Component Design http://www.amazon.com/Delphi-Component-Design-Danny-Thorpe/dp/0201461366 也建議優先看, 不過此書已經絕版. 以上書籍可以建立你正確的元件概念. ===================引 用 文 章=================== 各位前輩及版主大人: 想請教自訂vcl的TabOrder屬性,一些概念問題? 雖然我已經達到我要的目的。 話說從頭: 因為自己寫了一個複合元件的自訂元件Lable DBEDIT Button ,想說簡化資料編輯頁面的撰寫,寫了後總有一關一關的挑戰在等著 元件特性寫的差不多了,卻發現拉到自訂元件拉到Form上後,屬性表內無TabOrder屬性,本想說只要加入一TabOrder然後多一個FTabOrder 去紀錄該複合元件的TabOrder屬性,但是不寫還好,寫起來後,才發現原來自己觀念一塌糊塗,因為我寫了Set_TabOrder和Get_TabOrder 去操作FTabOrder欄位,屬性表示出現這個屬性可以看到並且操作,但是卻無法影響真正的TabOrder順序,也就是no use(台語所說得"無三小路用!") 沮喪之餘,記得KTOP前輩,曾經一再提醒,不要只要一直問問題,其實答案都在你的電腦中(C:\Program Files\Borland\Delphi7\Source\Vcl) 後來我就找了元件盤上註明的LabeledEdit(有前輩說這個範例是典型的複合元件),好在我沒忘記,不然我真的要哭了! 痛苦的事情又發生了,我參考了Borland vcl? LabeledEdit的程式碼,發現繼承關係為? TLabeledEdit = class(TCustomLabeledEdit) ->TCustomLabeledEdit = class(TCustomEdit) ->TCustomEdit = class(TWinControl) ,哇塞!真漂亮的繼承規劃,我的都是單一方式繼承 物件的祖先只有TWinControl(真想銷毀自己撰寫的元件!),我看TCustomEdit 這一層的宣告"灰熊"簡單,人家什麼都沒寫就是寫了(或者是寫了我看不出來) ,published很簡單的一行property TabOrder; ....這...只有一行,昏倒中,那他存放的TabOrder值會在哪裡,腦容量太小,我心想,會不會是放在TWinControl 的心裡,當然我將自己一大堆混亂的程式碼,Set_TabOrder和Get_TabOrder移除後,心想說,不會吧!人家寫一行property TabOrder就是可以動了起來,我的呢? 心中的最後一點自信心終於潰堤(2006/10/16凌晨Ktop一樣斷線中..一樣連不上!)....這一夜我失眠了! 想起了...世界上最遙遠的距離.... 不是 生與死而是 我就站在妳前面 妳卻不知道我愛妳(Delphi我真的很愛你!你說話啊!) 世界上最遙遠的距離....不是 明明無法抵擋這一股氣息 卻還得故意裝 作毫不在意(我快起肖了! 到底要怎麼弄才會有TabOrder!)..... 就在愛恨交雜,欲走還留之際,我看到了一行,我完全搞不懂的代碼,FreeNotification(Self);,這是什麼!不過人家LabeledEdit的Create有寫到,老師說不會也要 抄起來,所以我就給他放到自己的複合元件內的Create,話說...一時傾盆大雨、雷電交加,竟然可以用了! 為什麼? 為什麼? 我想不透,肚子搞大了,我一樣 不知道為什麼? 懇請前輩和版主大大,給予指正!萬分感謝,叩首! (我上述的胡言亂語,您就大人不計小人過,寫程式真的會讓人起肖!) KTOP 不要在斷線啦!這樣我就失去依靠~嗚嗚! ?
------
將問題盡快結案也是一種禮貌! |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
首先 TabOrder 是宣告在 TWinControl, 也就是所有可視元件都一定有 TabOrder (繼承父階, 它是宣告在 public 區段), 如果你要在 Property Editor 中給 Designer setting 就在 published 宣告
published property TabOrder; // 這是省略式宣告 (因為已經在 public 已經有詳細的宣告) 至於 FreeNotification 是元件在被 Free 時要通知其他的元件用的, 如 DBEdit 中有 DataSource, Designer 移除掉 DataSource 時, 會通知 DBEdit 此 DataSource 已經不在了, 不然 DBEdit 會存取到不知名的記憶體區段而產生錯誤! 在物件導向的世界中有二大派, 一種是單一繼承, 如 Delphi, C#, JAVA. 另一種是多重繼承, 如 C (BCB), 所以你寫的元件需要組合多種元件時, 就必需自己產生各個元件. 個人建議你看 深入Delphi元件設計 http://library.slvs.tcc.edu.tw/webopac/DETDATA.PHP?QROW=1&AU=(ray,konopka) 縣市及各大學圖書館有. 如果可以找到 Delphi Component Design http://www.amazon.com/Delphi-Component-Design-Danny-Thorpe/dp/0201461366 也建議優先看, 不過此書已經絕版. 以上書籍可以建立你正確的元件概念. ===================引 用 文 章=================== 各位前輩及版主大人: 想請教自訂vcl的TabOrder屬性,一些概念問題? 雖然我已經達到我要的目的。 話說從頭: 因為自己寫了一個複合元件的自訂元件Lable DBEDIT Button ,想說簡化資料編輯頁面的撰寫,寫了後總有一關一關的挑戰在等著 元件特性寫的差不多了,卻發現拉到自訂元件拉到Form上後,屬性表內無TabOrder屬性,本想說只要加入一TabOrder然後多一個FTabOrder 去紀錄該複合元件的TabOrder屬性,但是不寫還好,寫起來後,才發現原來自己觀念一塌糊塗,因為我寫了Set_TabOrder和Get_TabOrder 去操作FTabOrder欄位,屬性表示出現這個屬性可以看到並且操作,但是卻無法影響真正的TabOrder順序,也就是no use(台語所說得"無三小路用!") 沮喪之餘,記得KTOP前輩,曾經一再提醒,不要只要一直問問題,其實答案都在你的電腦中(C:\Program Files\Borland\Delphi7\Source\Vcl) 後來我就找了元件盤上註明的LabeledEdit(有前輩說這個範例是典型的複合元件),好在我沒忘記,不然我真的要哭了! 痛苦的事情又發生了,我參考了Borland vcl? LabeledEdit的程式碼,發現繼承關係為? TLabeledEdit = class(TCustomLabeledEdit) ->TCustomLabeledEdit = class(TCustomEdit) ->TCustomEdit = class(TWinControl) ,哇塞!真漂亮的繼承規劃,我的都是單一方式繼承 物件的祖先只有TWinControl(真想銷毀自己撰寫的元件!),我看TCustomEdit 這一層的宣告"灰熊"簡單,人家什麼都沒寫就是寫了(或者是寫了我看不出來) ,published很簡單的一行property TabOrder; ....這...只有一行,昏倒中,那他存放的TabOrder值會在哪裡,腦容量太小,我心想,會不會是放在TWinControl 的心裡,當然我將自己一大堆混亂的程式碼,Set_TabOrder和Get_TabOrder移除後,心想說,不會吧!人家寫一行property TabOrder就是可以動了起來,我的呢? 心中的最後一點自信心終於潰堤(2006/10/16凌晨Ktop一樣斷線中..一樣連不上!)....這一夜我失眠了! 想起了...世界上最遙遠的距離.... 不是 生與死而是 我就站在妳前面 妳卻不知道我愛妳(Delphi我真的很愛你!你說話啊!) 世界上最遙遠的距離....不是 明明無法抵擋這一股氣息 卻還得故意裝 作毫不在意(我快起肖了! 到底要怎麼弄才會有TabOrder!)..... 就在愛恨交雜,欲走還留之際,我看到了一行,我完全搞不懂的代碼,FreeNotification(Self);,這是什麼!不過人家LabeledEdit的Create有寫到,老師說不會也要 抄起來,所以我就給他放到自己的複合元件內的Create,話說...一時傾盆大雨、雷電交加,竟然可以用了! 為什麼? 為什麼? 我想不透,肚子搞大了,我一樣 不知道為什麼? 懇請前輩和版主大大,給予指正!萬分感謝,叩首! (我上述的胡言亂語,您就大人不計小人過,寫程式真的會讓人起肖!) KTOP 不要在斷線啦!這樣我就失去依靠~嗚嗚! ?
------
將問題盡快結案也是一種禮貌! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |