Главная страница
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.029 c
2-1142337389
Emik
2006-03-14 14:56
2006.04.02
Interbase


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


9-1127337583
Ricks
2005-09-22 01:19
2006.04.02
Люди, подскажите


15-1141829808
Dimedrol
2006-03-08 17:56
2006.04.02
На кухне вытяжка и 2 оголенных провода...


9-1127285948
Kerk
2005-09-21 10:59
2006.04.02
Игра "Точки"