RadioGroup是否可以有滾動條 |
尚未結案
|
Leonli
一般會員 發表:23 回覆:21 積分:18 註冊:2004-03-31 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
Leonli
一般會員 發表:23 回覆:21 積分:18 註冊:2004-03-31 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
Leonli
一般會員 發表:23 回覆:21 積分:18 註冊:2004-03-31 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
難!既使做出來,也很醜。 會遮住Caption
使 TRadioGroup 有滾動條並不難。
在 procedure TRadioGroup.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin Style := Style or WS_VSCROLL; end; end; 但這樣不夠的,除了要設定 ScrollInfo 的Range 及接管WM_VSCROLL訊息外。 還需自行設定 Item 的位置。主要是 TRadioGroup 是用平均分配位置的方式, 透過 ArrangeButtons 。 因此也需接管AlignControls 事件並 Override; 像是如下: procedure TRadioGroup.AlignControls(AControl: TControl; var Rect: TRect); Const ButtonHeight = 15; var I,CaptionH:Integer; begin CaptionH := Canvas.TextHeight('H'); if AControl is TRadioButton then for I:=0 to ControlCount-1 do if Controls[I]=AControl then begin SetWindowPos(AControl.Handle,HWND_TOP ,2,2 CaptionH (ButtonHeight*I) ,Width-4,ButtonHeight,SWP_NOZORDER or SWP_NOACTIVATE); Break; end; end;因此...... !@#$%^ 除了重新改寫 TRadioGroup外,不會有更好的作法。 建議用 TGroupBox CheckListbox 。頂多將方塊改為選項的方式。 從這裡著手,會比較容易些! ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ 發表人 - wameng 於 2005/07/22 11:02:02 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |