全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1349
推到 Plurk!
推到 Facebook!

TComboBox 加入一個 Button 到右邊

尚未結案
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-18 06:26:44 IP:203.218.xxx.xxx 未訂閱
其實將 TComboBox 加入一個 Button 到右邊可行嗎? 我曾嘗試做出:    TButtonComboBox = class(TWinControl) private FButton : TSpeedButton ; FCombo  : TComboBox ; . . .    但只可以做到一個獨立的 ComboBox 右旁加上一個 Button 而且要加入大量跟 ComboBox 相關的 property 及 event 。 我想問問是否可以以 TComboBox(或 TCustoComboBox) 為基礎,加入一個 button ,第一外觀上可以做得更連貫,第二可以省卻加入 ComboBox 相關的 property 及 event?
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-18 10:37:40 IP:61.155.xxx.xxx 未訂閱
组合控件combobox Button http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37558
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-19 01:14:55 IP:203.218.xxx.xxx 未訂閱
謝謝你的回覆,不過這一個元件我早已嘗試制作,最大的問題是如果以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event ,所以才想在這裏求教,看看有沒有別的方法可以用 TComboBox 或 TCustomComboBox 為基礎去制作這一個元件。
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-19 06:04:06 IP:203.222.xxx.xxx 未訂閱
引言: 謝謝你的回覆,不過這一個元件我早已嘗試制作,最大的問題是如果以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event ,所以才想在這裏求教,看看有沒有別的方法可以用 TComboBox 或 TCustomComboBox 為基礎去制作這一個元件。
你的話很矛盾 以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event別的方法可以用 TComboBox 或 TCustomComboBox 為基礎 這兩者都會 compile TComboBox 所有的 property 及 event, 即使你是用 TCustomComboBox 也是一樣, TComboBox 與 TCustomComboBox 是同一個東西, 只是 publish 出來的東西不同, 另外除非你不要 TComboBox 的功能, 不然你還是得乖乖的加編有關 TComboBox 的 property 及 event, 在不你自己寫一個功能沒那麼多的 ComboBox 省卻加入 ComboBox 相關的 property 及 event 沒有輪子與引擎的車 ? ComboBox 相關的 property 及 event 的程式碼都去掉後, ComboBox 還剩什麼 ?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-19 08:24:00 IP:218.163.xxx.xxx 未訂閱
引言: 謝謝你的回覆,不過這一個元件我早已嘗試制作,最大的問題是如果以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event ,所以才想在這裏求教,看看有沒有別的方法可以用 TComboBox 或 TCustomComboBox 為基礎去制作這一個元件。
用 TComboBox 或 TCustomComboBox 為基礎當然也可以, 不過實作上更麻煩, 由於原TCustomComboBox之Rect區須含入一個SpeedButton位置, size, fontsize與width之關係都須重算, 所有paint相關之procedure也須重寫. 用TwinControl或一個Panel為基礎,放入兩個不須改寫的元件,TCombobox及speedButton, 只須將要在Design Time設定之property, Event Map出去,是最簡單的方法了 如果是Delphi7, 在此WinControl中直接將Combobx,及SpeedButton published出去, 在Object Inspector中就可直接展開下層去編輯其property了
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-19 09:01:14 IP:218.102.xxx.xxx 未訂閱
引言: 你的話很矛盾 以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event別的方法可以用 TComboBox 或 TCustomComboBox 為基礎 這兩者都會 compile TComboBox 所有的 property 及 event, 即使你是用 TCustomComboBox 也是一樣, TComboBox 與 TCustomComboBox 是同一個東西, 只是 publish 出來的東西不同, 另外除非你不要 TComboBox 的功能, 不然你還是得乖乖的加編有關 TComboBox 的 property 及 event, 在不你自己寫一個功能沒那麼多的 ComboBox 省卻加入 ComboBox 相關的 property 及 event 沒有輪子與引擎的車 ? ComboBox 相關的 property 及 event 的程式碼都去掉後, ComboBox 還剩什麼 ?
syntax 兄,可能你有所誤解,ccchen 兄的解釋可以幫我解釋問題的所在。
引言: 用 TComboBox 或 TCustomComboBox 為基礎當然也可以, 不過實作上更麻煩, 由於原TCustomComboBox之Rect區須含入一個SpeedButton位置, size, fontsize與width之關係都須重算, 所有paint相關之procedure也須重寫. 用TwinControl或一個Panel為基礎,放入兩個不須改寫的元件,TCombobox及speedButton, 只須將要在Design Time設定之property, Event Map出去,是最簡單的方法了 如果是Delphi7, 在此WinControl中直接將Combobx,及SpeedButton published出去, 在Object Inspector中就可直接展開下層去編輯其property了
ccchen 兄,你的說明我明白,討論區內 code6421 兄曾經列出一個十分好用的元件, TEdit TSpeedButton 就是一個 TEdit 上附加一個 TSpeedButton ,我修改部份原碼,元件以 TEdit 為基礎,加入 TSpeedButton 後,只開放 TSpeedButton 的 Glyph、 width 的 property ,做出的新元件外觀上亦較連貫。 但相對上這一個 TComboBox 加入 TSpeedButton 就不易做,如果跟你說的簡單將兩個元件直接 publish 當中有很多重疊的 property 及 event ,雖然我最後都是以 TWinControl 為基礎,做出的元件亦可以應用,但外觀上就不十分連貫。
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-19 11:12:51 IP:61.155.xxx.xxx 未訂閱
但相對上這一個 TComboBox 加入 TSpeedButton 就不易做,如果跟你說的簡單將兩個元件直接 publish 當中有很多重疊的 property 及 event ,雖然我最後都是以 TWinControl 為基礎,做出的元件亦可以應用,但外觀上就不十分連貫。    外觀上就不十分連貫?不太了解您是什么意思! 如果您不需要那么多的属性,关于这部分您可以自己写一些代码实现;比如我为
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-19 19:34:15 IP:203.222.xxx.xxx 未訂閱
嗯,因為你說的也不清楚 不過大概瞭解了 但是你說[greeb]省卻加入 ComboBox 相關的 property 及 event    無論是用哪種作法,都要同時調整兩個元件的外觀,即使是你自己寫的,你也要同時調整下拉框框與按鈕的外觀,所以這只是程式碼要寫在哪裡的問題,是無法省略的    所以我想 ccchen 說的用TwinControl或一個Panel為基礎,放入兩個不須改寫的元件,TCombobox及speedButton, 只須將要在Design Time設定之property, Event Map出去是較理想的方式,至於外觀的一致性,還是要你寫程式碼來完成 不過你所說的外觀上一致性,可是指同時調整兩的元件相同屬性的值?還是另有所指? 至於重疊的 property 及 event [/green],那是設計上的問題,不要將兩元件都直接 pubilsh,只要 pubilsh 你要的屬性,然後寫程式碼來調整兩者 如 property Align:TAlign read GetAlign write SetAlign; 然後在 GetAlign 與 SetAlign 中統一調整兩者 在電腦的世界中,一個命令都只能做一個動作,沒有一個命令可以做多個動作的情況,因為這是電腦設計時的基本規範,至於可以做多個動作的指令,其實是指令集,是其他程式設計師幫你寫成指令的集合(procedure or function or object),所以設計程式時若沒有人幫你做這種工作時,我們就要自己來動手,就像 Delphi 已經幫我們做了許多! 很多人都認為,是否可以寫的簡單一點、少一點,但是若是在程式在演算法層次上已經是最簡化的狀況,那程式碼是無法再加以簡略的,除非有人幫你寫成指令集,那你只要用一個指令(集)就解決,但是並不代表目的碼有所縮短,最後邊出來的大小是一樣的,因為所做的動作一樣多,不會因為你用了巨集碼就讓結果縮小,認為用一行指令會比較快、結果比較小,其實是不懂程式設計的人才會有的想法,因為用一行指令,所能有的好處只是打比較少字,但有時反而有讓速度嚴重拖慢的壞處,如 Delphi 的 log 函數,用起來只有一行,但比我寫的慢3分鐘左右(執行10000次),可是我寫的要 8 ~ 9 行,而編出來的目的碼大小卻差不到 10 Byte 所以不要怕要寫很多程式碼,新釐清你要的結果,規劃出演算法與規則,接者合併簡化演算法與規則,然後實做出來,這樣就可以了 所以現在的問題只在於什麼叫做 "外觀上就不十分連貫" ,可否詳加解釋或圖解? 發表人 - syntax 於 2003/09/19 19:49:15
code6421
版主


發表:43
回覆:223
積分:208
註冊:2002-08-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-20 01:00:24 IP:61.216.xxx.xxx 未訂閱
引言: 謝謝你的回覆,不過這一個元件我早已嘗試制作,最大的問題是如果以 TWinControl 為基礎,要加入大量的程式碼去加編有關 TComboBox 的 property 及 event ,所以才想在這裏求教,看看有沒有別的方法可以用 TComboBox 或 TCustomComboBox 為基礎去制作這一個元件。
the combobox do not provides CB_SETRECT/CB_GETRECT message, this meaning you can't know size of ComboBox Edit Control, if you don't know size,how can you adjust button size?? so the easy solution is use TWinControl or TCustomEdit to simulate combobox button. adaptation combobox property/event is mess,but is easy,right? Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing...
系統時間:2024-05-18 16:14:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!