TScrollBox的用法 滚动事件

时间:2023-03-08 17:02:41
//滚轮事件:ScrollBox1: TScrollBox;
procedure TfrmReleateGQAccount.ScrollBox1MouseWheel(Sender: TObject; //也可以写在窗体事件中
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
begin
if WheelDelta< then
ScrollBox1.Perform(WM_VSCROLL,SB_LINEDOWN,) //发送消息
else
ScrollBox1.Perform(WM_VSCROLL,SB_LINEUP,);
end;
object scrlbx1: TScrollBox
Left =
Top =
Width =
Height =
Align = alClient
Color = clBtnFace
ParentColor = False
TabOrder =
ExplicitLeft =
ExplicitTop =
end

控件窗体文件

SendMessage(scrlbx1.Handle,WM_VSCROLL,SB_LINEDOWN,0); 也可以通过这样的方式

function TControl.Perform(Msg: Cardinal; WParam: WPARAM; LParam: LPARAM): LRESULT;
var
Message: TMessage;
begin
{$IF DEFINED(CLR)}
Message := TMessage.Create(Msg, WParam, LParam);
{$ELSE}
Message.Msg := Msg;
Message.WParam := WParam;
Message.LParam := LParam;
Message.Result := ;
{$IFEND}
if Self <> nil then
WindowProc(Message);
Result := Message.Result;
end; property WindowProc: TWndMethod read FWindowProc write FWindowProc; TWndMethod = procedure(var Message: TMessage) of object; function TWinControl.DoHandleStyleMessage(var Message: TMessage): Boolean;
begin
Result := TStyleManager.HandleMessage(Self, Message, FWindowProc)
end;

TControl.Perform代码追踪

一、简介

ScrollBox(滚动框)部件是加上了水平、垂直滚行条的群组框部件,它在Additional页上,用作在窗体中提供一个可以多方向滚行的工具。如果您只想显示较大幅面的一个部分,并允许您的用户对其进行滚行操作,ScrollBar将是理想的选择。您可以先在全幅面的滚动框中进行全面设计,然后适当地缩小外框,两个方向的滚行条将自动显示。它的Position属性是集成在HorzScrollBar和VertScrollBar两个集属性下的,编程时,可以选定这两个属性进行操作。

编程时,在scrollbox控件中放置一个panel,设置panel的Align属性为alNone(切忌设置为alClient),适当放大panel的大小,滚动条就可以出来了;

也可以在scrollbar中放置TOleContainer控件,同样设置Align为alNone,SizeMode设置为smAutoSize,当使用TOleContainer显示Excel、Word等文档时,滚动条也会出现。