首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

onmousemove移动控制多个BitBtn的位置。解决思路

2012-03-04 
onmousemove移动控制多个BitBtn的位置。varForm3: TForm3setcap:booleanfalseprocedure TForm3.onmousem

onmousemove移动控制多个BitBtn的位置。
var
  Form3: TForm3;
  setcap:boolean=false;
procedure TForm3.onmousemove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);


begin
if timer1.Enabled=false then
  begin
  BitBtn2.Left :=832;
  //BitBtn3.Left :=808;

  timer1.Enabled :=true;

  end
  else

  begin
  BitBtn2.Left :=960;
  //BitBtn3.Left :=936;

  timer1.Enabled :=false;
  end;


  end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin

  if setcap=false then
  begin

  setcapturecontrol(BitBtn2);

  setcap:=true;

  end
  else

  begin

  setcapturecontrol(nil);
  //timer1.Enabled :=true;
  setcap:=false;
  end;

end;
怎么还是一闪一闪的?还有要做到鼠标移到那个按钮那个就冒出来离开就变回原来的样子,要怎么写啊? 求教!

[解决办法]
闪烁其实是在调用控件刷新
1 你可以把父容器例如panel和form的doublebuffer打开
2 如果方法一不管用可以试下,移动之前,把父容器例如panel的visable设为false,移动后设为true,看一下还会闪么?
[解决办法]
还有要做到鼠标移到那个按钮那个就冒出来离开就变回原来的样子
这个你要自己弄个图片代替按钮了
[解决办法]
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
b: boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if b then exit;
if (sender as TButton).Left = 5 then
(sender as TButton).Left := 5- (sender as TButton).Width
else
(sender as TButton).Left := 5;
b:= true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
b:= false;
end;

end.

[解决办法]
这样能否达到要求:

...
implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
button1.Left :=10-button1.Width;
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Button1.Left := 0;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
button1.Left :=10-button1.Width;
end;

end.

热点排行