怎样使TrackBar实现鼠标点到哪个位置划块就到哪个位置呢

966126 2003-08-20 08:57:45
现在划块是按照pagesiza的大小来翻页的,很不方便
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rustle 2003-08-20
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;

type
TMytrack = class(TTrackBar)
property Onclick;
property OnMouseDown;
end;
TForm1 = class(TForm)
TrackBar1: TTrackBar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
t: TMytrack;
procedure TrackMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
t := TMytrack.Create(self);
t.Parent := self;
t.OnMouseDown := TrackMouseDown;
end;

procedure TForm1.TrackMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
t.Position := round(((x-t.Left) / t.Width) * (t.Max - t.Min) + t.Min);
end;

end.

参考一下吧
rustle 2003-08-20
  • 打赏
  • 举报
回复
min和max之间的差大一点就会好一点,主要是由于要根据鼠标位置取整丧失精度
966126 2003-08-20
  • 打赏
  • 举报
回复
将trackbar拉大后发现在滑快右边点击也有这个问题

就是当点击的位置越靠两边的时候,滑快往中间偏移的量就越大
966126 2003-08-20
  • 打赏
  • 举报
回复
基本上可以了,但是当鼠标点在滑快原来位置的左边时,定位就不准,滑快会定位到鼠标稍微靠右一点的地方

点在滑块右边的位置滑快能够正常定位

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧