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.   

    额 , 用bitbtn1.onmorsemove  bitbtn2.onmorsemove 来区分开 但是一闪一闪还是没解决
      

  2.   

    闪烁其实是在调用控件刷新
    1 你可以把父容器例如panel和form的doublebuffer打开
    2 如果方法一不管用可以试下,移动之前,把父容器例如panel的visable设为false,移动后设为true,看一下还会闪么?
      

  3.   

    额 不好意思 是我的表述有问题,我的意思是原来所有的bitbtn都是拖到窗口以外,漏一小个角出来,当鼠标移动到bitbtn那个角上时,bitbtn就伸展出来 离开时又缩回去,现在有人告诉我分别用bitbtn1.onmousemove  bitbtn2.onmousemove ......  来分别控制 ,但是我试了N久了  试不出来。我先去试试funxu说的方法看看还闪不闪。
      

  4.   

    unit Unit1;interfaceuses
      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.
      

  5.   

    这样能否达到要求:...
    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.
      

  6.   

    再补充一句,这个代码貌似加上image控件以后 就不能缩回去了,所以要用的同志们注意啦 ,不信自己可以试试