要将窗口中所有的Scrollbar都变成flat,有何办法?(100分)

  • 主题发起人 主题发起人 cheylin
  • 开始时间 开始时间
C

cheylin

Unregistered / Unconfirmed
GUEST, unregistred user!
对窗口中凡是带Scrollbar的控件(Treeview,listview,combobox,dbgrid等),要将scrollbar变成扁平的,请问大家有什么简便的方法?
(小弟刚注册不久,银子不多,100分意思意思,请多多包涵!)
 
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=0 to ComponentCount-1 do
begin
if (Components is TScrollBox) then
begin
(Components as TScrollBox).HorzScrollBar.Style := ssFlat;
(Components as TScrollBox).VertScrollBar.Style := ssFlat;//举一反三
end;
end;
end;
 
你试试,要Uses commctrl
InitializeFlatSB(TreeView1.Handle);

我试过,可以
 
InitializeFlatSB 对其他的控件也有效,但效果不怎么好
woyaoying,的方法不行,有多少控件是TScrollBox?即使是,也不一定能实现,!
有没有更好的方法?
 
先谢谢两位的回答;
woyaoying:我所说的控件在if (Components is TScrollBox) then处都不成立,因此后面的代码不会执行,强制转换出错;
xuxiaohan:这个函数我用过,但有几个缺陷:1、需要对每个控件处理一次;2、这样处理后在拖动时又会变成3D;3、拖动后,滑块的位置与内容的位置不符;

寻找更好的解决方案:比如能否修改comctrl32的基类?
 
有一套现成的flatstyle三方控件,都是扁平类型的
51delphi时就有
 
app2001:谢谢你提醒,其实我在两年前就用flatstyle,1stclass等控件,但一方面它能提供的控件类型和数量有限,并不能满足要求,另一方面,其中有的控件(如fccombobox)看上去是平的,但点击拉下来的scrollbar却又是3D,程序中同时出现两种scrollbar让人郁闷,所以我才提出这个问题来的。
 
我知道,我也想找到更好的方法,知道后告诉我哦!

 
这么久没人回答我了,高手们露露脸吧
 
真的没人能帮我解决这个问题吗?
 
谢谢fu_qi_ming
 
一直没人回答?这100分怎么办呢?
 
我认为一些控件的滚动条根本没有Flat属性,如何变
 
我也想知道阿~~
 
一直没人回答,散分了,来者有份
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
794
import
I
后退
顶部