Scrollbox的滚动条事件scrollbar事件的处理(Lazarus)
2024-08-31 18:47:46
没办法,改源代码:
找到:Forms单元中scrollbox的父类:
TScrollingWinControl = class(TCustomControl)
改:
{ TScrollingWinControl }
//
//begin
TOnAfterScroll=procedure(ScrollKind: TScrollBarKind; OldPosition: Integer) of object;
//end
//
TScrollingWinControl = class(TCustomControl)
private
FHorzScrollBar: TControlScrollBar;
FVertScrollBar: TControlScrollBar;
FAutoScroll: Boolean;
FIsUpdating: Boolean;
FonAfterScroll:TOnAfterScroll;//*********add by aliyagoo.com
procedure SetHorzScrollBar(Value: TControlScrollBar);
procedure SetVertScrollBar(Value: TControlScrollBar);
function StoreScrollBars: Boolean;
protected
class procedure WSRegisterClass; override;
procedure AlignControls(AControl: TControl; var ARect: TRect); override;
procedure CreateWnd; override;
function GetClientScrollOffset: TPoint; override;
function GetLogicalClientRect: TRect; override;// logical size of client area
procedure DoOnResize; override;
procedure WMHScroll(var Message : TLMHScroll); message LM_HScroll;
procedure WMVScroll(var Message : TLMVScroll); message LM_VScroll;
function ComputeScrollbars: Boolean; virtual;
procedure ScrollbarHandler(ScrollKind: TScrollBarKind;
OldPosition: Integer); virtual;
procedure SetAutoScroll(Value: Boolean); virtual;
procedure Loaded; override;
property AutoScroll: Boolean read FAutoScroll write SetAutoScroll default False;
public
constructor Create(TheOwner : TComponent); override;
destructor Destroy; override;
procedure UpdateScrollbars;
function HasVisibleScrollbars: boolean; virtual;
class function GetControlClassDefaultSize: TPoint; override;
procedure ScrollBy(DeltaX, DeltaY: Integer);
property OnAfterScroll:TOnAfterScroll read FonAfterScroll write FonAfterScroll;//***********add by aliyagoo.com
published
property HorzScrollBar: TControlScrollBar
read FHorzScrollBar write SetHorzScrollBar stored StoreScrollBars;
property VertScrollBar: TControlScrollBar
read FVertScrollBar write SetVertScrollBar stored StoreScrollBars;
end;
然后在Scrollbox里公开属性【公开,不是发布】。
插入事件:ScrollingWinControl.inc 文件
procedure TScrollingWinControl.ScrollbarHandler(ScrollKind: TScrollBarKind;
OldPosition: Integer);
begin
if ScrollKind = sbVertical then
ScrollBy(0, FVertScrollBar.Position - OldPosition)
else
ScrollBy(FHorzScrollBar.Position - OldPosition, 0);
//***********add by aliyagoo
if Assigned(OnAfterScroll) then FOnAfterScroll(ScrollKind,OldPosition);
//***********end add
end;
http://blog.sina.com.cn/s/blog_56294d0a0100w4lx.html
最新文章
- 基于webmagic的爬虫项目经验小结
- 报错:Failed to instantiate the default view controller for UIMainStoryboardFile 'MainStoryboard' - perhaps the designated entry point is not set?
- information_schema系列四(跟踪,列约束,表和列)
- Nginx学习笔记(八) Nginx进程启动分析
- UItableView 编辑
- Unable to execute dex: Multiple dex files define 解决方法
- bzoj3878
- 转载:svn clean up 失败解决方法
- listview的条目(item)如何做出卡片效果
- 开源电子商务平台:OfBiz
- Python(列表操作应用实战)
- IT职业后半段发展问题
- Android Bitmap操作问题之Canvas: trying to use a recycled bitmap
- 软件设计模式之工厂模式(JAVA)
- Floyd 和 bellman 算法
- IIS Web 服务器/ASP.NET 运行原理基本知识概念整理
- HDU6024 Building Shops 2017-05-07 18:33 30人阅读 评论(0) 收藏
- [UI] 精美UI界面欣赏[7]
- tcp与http的区别
- openlayers研究(一) 初始化流程