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

onmousemove腾挪控制多个BitBtn的位置

2013-01-01 
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.

热点排行