如何将ScrollBar Flat化(50分)

  • 主题发起人 主题发起人 Teny
  • 开始时间 开始时间
T

Teny

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将Memo、ScrollBox、ListBox等控件上面的ScrollBar改成Flat类型
(就如同ViewList本身可将ScrollBar设为Flat类型)
 
以前讨论过,不过效果不是特别好。

设置控件的滚动条为Flat类型的。
uses
commctrl;

InitializeFlatSB(Memo1.Handle);
 
这个效果不好,最好自己写一个
 
InitializeFlatSB是不怎么样,不知道哪位还好别的好办法否
 
有一套这种控件,有源代码的,如果想自己写可以参考一下,当然也可以拿来用,下载
地址: http://wolfsoft.nugoo.com/download/d6control/flatstyle.zip
 
FlatStyle中所带的FlatMemo是继承了Memo控件,故此其ScrollBar仍然是3D的
 
你看这样行不行??混了点,不过也还勘用。
uses
commctrl;

type
TMyMemo = class(TMemo)
private
procedure WMHScroll(var msg:TWMHScroll);message WM_HScroll;
procedure WMVScroll(var msg:TWMVScroll);message WM_VScroll;
procedure WMMousemove(var msg:TWMMousemove);message WM_MouseMove;
public

end;

var
Form1: TForm1;

memo:TMyMemo;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
memo:=TMyMemo.Create(self);
memo.Parent:=self;
memo.Lines:=memo1.Lines;
memo.Align:=alLeft;
memo.ScrollBars:=ssBoth;
memo.Ctl3D:=false;
InitializeFlatSB(memo.Handle);
end;

{ TMyMemo }

procedure TMyMemo.WMHScroll(var msg: TWMHScroll);
begin
InitializeFlatSB(memo.handle);
inherited;
end;

procedure TMyMemo.WMMousemove(var msg: TWMMousemove);
begin
cursor:=crHandpoint;
end;

procedure TMyMemo.WMVScroll(var msg: TWMVScroll);
begin
InitializeFlatSB(memo.Handle);
inherited;
end;
 
后退
顶部