Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизСобытия мыши для потомка 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?
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c