在程序里做了一个标签,单击弹出菜单..
现在问题是我想实现:拖动此标签等于拖动窗口,且释放鼠标时不弹出菜单..怎么做?这里大虾如云,会有人救我的!我相信!

解决方案 »

  1.   

    鼠标点中LABEL触发拖动事件,句柄是FORM不是LABEL,否则动不了
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Label1: TLabel;
        procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure Label1Click(Sender: TObject);
        procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        bDrag : Boolean;
        bDown : boolean;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    const
      SC_DRAGMOVE:Longint=$F012;
    begin
      if bDown then
      begin
        ReleaseCapture;
        SendMessage(Self.Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);    bDrag:= TRUE;
      end;
    end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      bDrag:= false;
      bDown:= false;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      bDown:= false;
      bDrag:= false;
    end;procedure TForm1.Label1Click(Sender: TObject);
    begin
      if not bDrag then
      begin
        // 显示菜单吧
        ShowMessage('aaa');
      end;
    end;procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      bDown:= true;
    end;end.