Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Выделение области для перетаскивания формы.   Найти похожие ветки 

 
Конопелька   (2006-02-26 18:12) [0]

Здравствуйте !
Подскажите: у меня есть форма имеющая свойство BorderStyle:="bsNone", мне нужно выделить определенную область на форме за которую можно будет перетаскивать ее, например выделить 10на10 пикселей в середине формы! Как это сделать !?????
Заранее спасибо !


 
Leonid Troyanovsky ©   (2006-02-26 19:02) [1]


> Конопелька   (26.02.06 18:12)  

> ="bsNone", мне нужно выделить определенную область на форме
> за которую можно будет перетаскивать ее, например выделить
> 10на10 пикселей в середине формы! Как


Например, Rect (x-4, y-4, x+5, y+5),
где x, y - точка в середине, скажем, x = Width div 2; y = Height div 2.

--
Regards, LVT.


 
Конопелька   (2006-02-26 22:34) [2]

Как задать точки и область я понимаю !!! А как зделать что бы за нее можно было перетащить приложение !!!???????


 
Dmitrij_K   (2006-02-26 22:51) [3]

Это?

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; { a magic number }  
begin
ReleaseCapture;  
Form1.perform(WM_SysCommand, SC_DragMove, 0);    
end;


www.drkb.ru musT have


 
Конопелька   (2006-02-26 22:58) [4]

Спасибо это почти то что нужно ! Только мне нужно что бы форму можно было перетаскивать только за ту область которую мне нужно !
Например форма 500х400 пикселей а мне нужно что областью перетаскивания была область от 0х0 (x,y) пикселей до 50х50 ! Что бы только за этот уголок можно было перетянуть форму !
Заранее спасибо еще раз ! :)


 
Конопелька   (2006-02-26 23:00) [5]

А еще вопрос такой ! Что дает комманда ReleaseCapture; ? Обьясни если не трудно ! :)


 
Dmitrij_K   (2006-02-26 23:01) [6]

Не проверял, но имхо так
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; { a magic number }  
begin
if (x in [0..50]) and (y in [0..50]) then
begin
 ReleaseCapture;  
 Form1.perform(WM_SysCommand, SC_DragMove, 0);    
end
end;


 
Конопелька   (2006-02-26 23:02) [7]

Благодарю за помощь ! :)


 
Dmitrij_K   (2006-02-26 23:06) [8]


> Благодарю за помощь ! :)

НЗШТ, обращайся Ж)


 
Eraser ©   (2006-02-26 23:20) [9]


> Конопелька   (26.02.06 18:12)

Нужно обрабатывать сообщение WM_NCHITTEST окна, примерно так

procedure TMyForm.WMNCHitTest(var M: TWMNCHitTest);  
begin
 inherited;
 if M.Result = htClient then
   M.Result := htCaption;
end;

только в этом коде необходимо проверять, находится ли указатель мыши в нужной области окна.
см. справку по WM_NCHITTEST.



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1142886213
makvell
2006-03-20 23:23
2006.04.02
isql


2-1142598661
ttt_111
2006-03-17 15:31
2006.04.02
Как свернуть программу в tray?


15-1141903126
iamdanil
2006-03-09 14:18
2006.04.02
Java


15-1141973153
Аноним
2006-03-10 09:45
2006.04.02
Создание wizard - ов


4-1137272874
Delphi_is_cool
2006-01-15 00:07
2006.04.02
Убрать края у окна