带OnMouseUp、OnMouseDown、OnMouseMove事件的TrackBar控件

本文讲述了在Delphi中为TTrackBar控件添加OnMouseUp、OnMouseDown、OnMouseMove事件,以解决在播放器中使用TTrackBar时出现的播放卡顿问题。作者通过继承TTrackBar类并发布受保护的鼠标事件,实现了更流畅的用户体验。
摘要由CSDN通过智能技术生成

    写一个播放器,用了Delphi自带的TTrackBar,实时显示当前播放进度,以及响应用户通过鼠标或者键盘来调整当前的播放进度。

    起初这两个事件我都是在TTrackBar.OnChange里处理的。然而实际使用当中你会发现,这样的播放效果是在是让人难以恭维,因为啥,你看看:

    我用一Timer来定期取当前的播放进度,在播放函数里:

    procedure OnPlay();

    begin

        TrackBar1.Position := FilePlayedPos;

    end;

    在Onchange里:

   procedure TTrackBar1.OnChange();

    begin

        FilePlayedPos := TrackBar1.Position;

    end;

    这样你看到了吧,在播放的时候同时触发了TrackBar的OnChange事件,而OnChange事件又调整了当前播放进度,那么实际的效果肯定是“卡”,卡的厉害。。。。。。

   回头想了想,总觉着在OnChange里手动调整播放进度不大合适,要是能够只在每次用户抬起鼠标左键这个事件里去实现似乎更加合理。然而让人费解的是,VCL里的TrackBar竟然没有OnMouse家族事件。得,这次可得想想法子。在TTrackBar上按着Ctrl加鼠标左键跳到了ComCtrls单元,原来TrackBar的老祖宗是TComponent->TControl->TWinControl,这下好办了,TCom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值