線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1011
推到 Plurk!
推到 Facebook!

建立新元件的問題

尚未結案
TATSU
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-22 19:38:44 IP:203.218.xxx.xxx 未訂閱
參考過 code6421 兄的一篇關於 TEdit 旁加上 TButton 的元件,我嘗試建立一個 TComboBox 加上一個 TButton 的元件,但有問題出現。 Button 的高度會較 ComboBox 的為少,而且排放的位置會跟 combobox 內的 button 相同。 FButton.height := FCombo.Height - 4 ; FButton.Top := FCombo.Top 2 ; 但問題就出在這裏,ComboBox 的高度起始值為 25 ,程式取得 25 ,然後計算出 Button 的高度為 21,原來 ComboBox 計算過 Font size, clientwindow height 後,高度會調整到 21 。 我在處理 WM_SIZE 時加入 procedure TOptionComboBox.WMSize(var Message : TWMSize); var nMinWidth : Integer ; begin inherited ; nMinWidth := (GetSystemMetrics( SM_CXVSCROLL ) * 4) ; if Height > FCombo.Height then height := FCombo.Height ; if Width < nMinWidth then Width := nMinWidth ; DrawCtrlRect ; end; procedure TOptionComboBox.DrawCtrlRect ; var nBtnWidth : Integer ; begin invalidate ; if FShowButton then nBtnWidth := FButton.Width else nBtnWidth := 0 ; FCombo.Width := Width - nBtnWidth ; if FShowButton then begin FButton.Left := FCombo.Width ; FButton.Top := FCombo.Top 2 ; FButton.Height := FCombo.Height - 4 ; end; Height := FCombo.Height ; end; 雖然可以解決第一個問題,但第二個問題又到,當更改 combobox 字體大小後,元體會出現不正常的顯示。 請問該如何解決??
code6421
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-22 20:36:21 IP:61.216.xxx.xxx 未訂閱
i think you missing this. procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing...
TATSU
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-22 21:57:41 IP:203.218.xxx.xxx 未訂閱
我有加入處理 Font changed 的問題,但情況仍然,最後我更改: TOwnComboBox = Class(TComboBox) private protected procedure ComboWMSize(var Message : TWMSize) ; message WM_SIZE; published end; TOptionComboBox = class(TWinControl) private FButton : TSpeedButton ; FCombo : TOwnComboBox ; . . . end; implementation procedure TOwnComboBox.ComboWMSize(var Message : TWMSize); begin Inherited ; if self.Parent.ClassType = TOptionComboBox then self.Parent.Height := Message.Height ; end; 雖然已經可以解決有關問題,但我仍在摸索如何加入個別的 event,就以 ComboBox 的 Onkey 為例,因為接數 message 為 TOptionComboBox ,應該如何將該 message 通知 (send) 給內裏的 ComboBox control ?
系統時間:2024-05-18 13:41:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!