Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

События мыши для потомка TPanel 


Nicke   (2002-01-27 05:42) [0]

Hi, All!

Проблема в следующем:
Создаю потомок TPanel для перетаскивания по форме в run-time:

type
TMovePanel = class(TPanel)

private
FMoveable : Boolean;
procedure WMNCHitTest(var M : TWMNCHitTest);
message WM_NCHitTest;
published
// можно перемещать или нет
property Moveable:Boolean read FMoveable write FMoveable;
end;

var
Form1: TForm1;
Panel : TMovePanel;

.....

procedure TMovePanel.WMNCHitTest(var M : TWMNCHitTest);
begin
inherited;
if (not (csDesigning in ComponentState)) and FMoveable then
if M.Result = htClient then
M.Result:=htCaption;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel := TMovePanel.Create(self);
Panel.Parent := Form1;
Panel.Left := 20;
Panel.Top := 20;
Panel.Height := 50;
Panel.Width := 50;
Panel.Moveable := true;
Panel.Visible := true;
end;

Как теперь заставить приложение реагировать на события мыши(MouseDown, OnClick
и т.д.) на этой панели?



LLL   (2002-01-27 13:21) [1]

Был как то пример перетаскивания
панели используя SC_MOVE. К сожалению,
поиск по форуму ничего не дал.
Наверно уже удалили.
Может кто напомнит?



LLL   (2002-01-27 13:36) [2]

Так, разобрался!
Следует применять
SC_DragMove = $F012;
ReleaseCapture;
Panel1.Perform(WM_SYSCOMMAND,SC_DragMove,0);



Dimaond Cat   (2002-01-29 00:17) [3]

Смотря что ты имееш в виду, но в принципе все сообщения проходят через application соответственно подмена application.onmessage может дать желаемый результат если нужен пример пиши.



Satrap   (2002-01-29 16:46) [4]

Если я Вас правильно понял, Вы делаете новый компонент только чтобы таскать его мышью.
Не проще ли будет экземпляру TPanel установить DragKind:=dkDock и DragMode:=dmAutomatic?




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.029 c
3-90731           Snake                 2002-02-27 18:39  2002.03.28  
BDE в терминал-клиенте.


3-90762           af                    2002-03-01 18:04  2002.03.28  
Что за ошибка такая и как устанить =Blob already open =?


6-91021           Sregey                2001-11-22 17:49  2002.03.28  
Все та же ошибка 10055 при попытке подключения TClientSocket


3-90790           ev                    2002-02-22 21:05  2002.03.28  
IB или MS SQL Server


1-90923           Брат                  2002-03-13 09:47  2002.03.28  
Вопрос по Паскалю: как сделать курсор невидимым?