TScrollBox的用法 滚动事件

//滚轮事件:ScrollBox1: TScrollBox; 
procedure TfrmReleateGQAccount.ScrollBox1MouseWheel(Sender: TObject; //也可以写在窗体事件中
  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  var Handled: Boolean);
begin
   if WheelDelta<0 then
    ScrollBox1.Perform(WM_VSCROLL,SB_LINEDOWN,0) //发送消息
  else
    ScrollBox1.Perform(WM_VSCROLL,SB_LINEUP,0);
end;
object scrlbx1: TScrollBox
  Left = 1
  Top = 1
  Width = 479
  Height = 379
  Align = alClient
  Color = clBtnFace
  ParentColor = False
  TabOrder = 0
  ExplicitLeft = 6
  ExplicitTop = 2
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 := 0;
{$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等文档时,滚动条也会出现。

posted @ 2016-08-18 17:15  海蓝7  阅读(1130)  评论(0编辑  收藏  举报