Форум: "WinAPI";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Внизкак "ловить мышку" после ответа HTCAPTION на WM_NCHITTEST Найти похожие ветки
← →
Ruzzz © (2008-10-14 02:49) [0]нужно следить за мышкой, пока не отпущена кнопка мыши! Как это сделать?
Делаю так:procedure WMNCHITTEST(var Message : TMessage); message WM_NCHITTEST;
...
procedure TMoveControl.WMNCHITTEST(var Message: TMessage);
begin
if not (csDesigning in ComponentState) then begin
Message.Result := HTCAPTION;
if Assigned(FOnMove) then begin
FOnMove(Self);
end;
end else
Message.Result := HTCLIENT;
end;
но OnMove вызывается только после того как отпустили кнопку мышки :(
← →
Eraser © (2008-10-14 02:54) [1]OnMouseMove?
← →
Германн © (2008-10-14 03:12) [2]Опять вопрос без задачи.
← →
Ruzzz © (2008-10-15 20:37) [3]все оказалось просто! :)
вот что я писал:unit MoveControl;
interface
uses
SysUtils, Classes, Controls, Messages, WinProcs, Graphics;
type
TMoveEvent = procedure(Sender: TObject; const X, Y: Integer) of object;
TPaintEvent = procedure(Sender: TObject; Canvas: TCanvas) of object;
TMoveControl = class(TCustomControl)
private
FOnMove: TMoveEvent;
FOnPaint: TPaintEvent;
{ Private declarations }
protected
{ Protected declarations }
procedure Paint; override;
procedure WMNCHITTEST(var Message : TMessage); message WM_NCHITTEST;
procedure WMMOVE(var Message : TMessage); message WM_MOVE;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property OnMove: TMoveEvent read FOnMove write FOnMove;
property OnPaint: TPaintEvent read FOnPaint write FOnPaint;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Samples", [TMoveControl]);
end;
{ TMoveControl }
constructor TMoveControl.Create(AOwner: TComponent);
begin
inherited;
Cursor := crSizeNWSE;
end;
procedure TMoveControl.Paint;
begin
inherited;
if not (csDesigning in ComponentState) and Assigned(OnPaint) then begin
FOnPaint(Self, Canvas);
end else begin
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clRed;
Canvas.Pen.Color := clRed;
Canvas.FillRect(ClientRect);
end;
end;
procedure TMoveControl.WMMOVE(var Message: TMessage);
begin
if Assigned(FOnMove) then begin
FOnMove(Self, message.LParamLo, Message.LParamHi);
end;
end;
procedure TMoveControl.WMNCHITTEST(var Message: TMessage);
begin
if not (csDesigning in ComponentState) then begin
Message.Result := HTCAPTION;
end else
Message.Result := HTCLIENT;
end;
end.
компонент который можно двигать
← →
{RASkov} © (2008-10-15 21:16) [4]> компонент который можно двигать
Я те всю программу "там" уже написал :)
И двигать можно.... и размеры менять...
См тут:
http://delphimaster.net/view/2-1223920451/
:)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c