建立新元件的問題 |
尚未結案
|
TATSU
版主 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
參考過 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 發送簡訊給我 |
|
TATSU
版主 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
我有加入處理 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 ?
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |