关于拖曳控件(10分)

  • 主题发起人 主题发起人 ezero
  • 开始时间 开始时间
E

ezero

Unregistered / Unconfirmed
GUEST, unregistred user!
在做界面时,我想做一个滑块(图片),用鼠标左键上下拖动。
以下是代码。但实际操作的时候,画面抖动的厉害。
请帮忙看一下或者告诉我有没类似的控件。
谢谢。当然还有10分逢上。
var
col,row:integer;{用来固定拖动范围,只能上下拖动}

procedure TForm1.FormShow(Sender: TObject);
begin
col:=Image1.left;
row:=Image1.top;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If Shift=[ssleft] then
if sender=Image1 then
begin
self.Update;
Image1.Left:=col;
Image1.Top:=y;
end;
end;
 
我明天就要加图片了,各位帮帮忙
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MPos: TPoint; {用来固定拖动范围,只能上下拖动}

var
Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
PS: TPaintStruct;
begin
if ssLeft in Shift then
begin

Image1.Left := Image1.Left - (MPos.X - X);
Image1.Top := Image1.Top - (MPos.Y - Y);
end;
end;

end.
 
上面代码还是会闪烁的。你要打开双缓冲才行。
在Form的OnShow里面加上一句
DoubleBuffered := True;
 
to:wr960204
谢谢!如过说真正的delphi是宝马的话,我只能算是一部破自行车.
以后还请不吝赐教.
哈哈.
在次谢谢.
分已经给你了.
 
to:wr960204
谢谢!如过说真正的delphi高手是宝马的话,我只能算是一部破自行车.
以后还请不吝赐教.
哈哈.
在次谢谢.
分已经给你了.
 
后退
顶部