各位大哥,请问如何用鼠标控制进度条(ProgressBar)?

karron 2001-07-19 02:23:36
也就是说,鼠标可以拖动进度条,和鼠标点击一个地方,进度条就到那个地方?
我开始用获取鼠标当前位置坐标,然后,再转化为ProgressBar的position((Point.x-ProgressBar.left)*ProgressBar.Max/ProgressBar.Width),可是编译出错,我想是有小数的原因吧,请问大哥们有无好办法?
...全文
241 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hillside 2001-07-19
  • 打赏
  • 举报
回复
procedure TForm1.pMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
with p do Position:=Round((Max-Min)*X/Width)+Min;
end;

karron 2001-07-19
  • 打赏
  • 举报
回复
谢谢,我懂了,给分了!
playyuer 2001-07-19
  • 打赏
  • 举报
回复
//你这个问题我是用两个控件解决的!
//TrackBar 和 ProgressBar1!
unit Unit1;

interface

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

type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
TrackBar1: TTrackBar;
procedure TrackBar1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ProgressBar1.Position := TrackBar1.position;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TrackBar1.left := ProgressBar1.left;
TrackBar1.Width :=ProgressBar1.width;
TrackBar1.Height :=ProgressBar1.height;
TrackBar1.ThumbLength :=10;
TrackBar1.Min := ProgressBar1.min ;
TrackBar1.Max := ProgressBar1.Max ;

end;

end.
li_zhifu 2001-07-19
  • 打赏
  • 举报
回复
以上编译通过,并且结果正确。给分吧
li_zhifu 2001-07-19
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
procedure ProgressBar1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ProgressBar1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
D:Boolean;

implementation

{$R *.DFM}

procedure TForm1.ProgressBar1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
d:=True;
end;

procedure TForm1.ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if d then
ProgressBar1.Position:=ProgressBar1.Max*X div ProgressBar1.Width;
end;

procedure TForm1.ProgressBar1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
d:=False;
ProgressBar1.Position:=ProgressBar1.Max*X div ProgressBar1.Width;
end;

end.

5,388

社区成员

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

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