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

Вниз

Перетаскивать форму за клиентскую часть в KOL ?   Найти похожие ветки 

 
yar   (2002-11-07 14:40) [0]

У кого есть пример рабочего сабжа ?
Мои ухищрения с OnMessage не помогают ;(


 
Gandalf   (2002-11-07 16:05) [1]


> У кого есть пример рабочего сабжа ?
> Мои ухищрения с OnMessage не помогают ;(

Плохо хитрил ;)

function TForm1.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
begin
result := false;
case msg.message of
WM_NCHITTEST:
begin
Rslt:=HTCAPTION;
Result:=True;
end;
end; //case
end;


 
yar   (2002-11-07 16:18) [2]

> Плохо хитрил ;)
наверное ;)

Это было первое, что я написал ...
А ты видел, что при этом получается ?
Форма перетаскивается, если тянуть за нее, а если тянуть за контролы на форме, то они начинают по ней ползать ...
И при этом не работает ни одна кнопка, в том числе и кнопки на caption - не работают тоже ...

другие мысли есть ?


 
Gandalf   (2002-11-07 16:33) [3]

Вообще то вопрос к КОЛ никакого отношения не имеет, тебе в WinAPI.


> Форма перетаскивается, если тянуть за нее, а если тянуть
> за контролы на форме, то они начинают по ней ползать ...


if msg.hwnd=Form.Handle then
begin
Rslt:=HTCAPTION;
Result:=True;
end;



> ... в том числе и кнопки
> на caption - не работают тоже ...


Rslt:=DefWindowProc(msg.hwnd,msg.message,msg.wParam,msg.lParam);
if (Rslt<>HTZOOM) and (Rslt<>HTREDUCE) and (Rslt<>HTCLOSE) then
begin
Rslt:=HTCAPTION;
Result:=True;
end;




 
yar   (2002-11-07 17:13) [4]

> Вообще то вопрос к КОЛ никакого отношения не имеет, тебе в
> WinAPI
поправка принята ...

в целом, уже спасибо.

Но раз уж зашел такой разговор, то как заставить форму перемещаться, если тянут не за форму, а за компонент на ней ?
например, TMemo, TLabel etc ?
Я вижу, что подобная задача уже тобой решалась, так может поделишься ? Можно и самому нарыть, но это время - а его как раз и нет ...


 
Gandalf   (2002-11-07 18:00) [5]


> > Вообще то вопрос к КОЛ никакого отношения не имеет, тебе
> в
> > WinAPI
> поправка принята ...

Для дальнейшего обсуждения либо мыль, либо иди в WinAPI - там встетимся (а может и нет, там и так мастеров хватает).


> в целом, уже спасибо.

Да незачто.


> Но раз уж зашел такой разговор, то как заставить форму перемещаться,
> если тянут не за форму, а за компонент на ней ?
> например, TMemo, TLabel etc ?

Вот например если хочешь за Memo1 таскать, ставишь у него:

function TForm1.Memo1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
result := false;

case msg.message of
WM_NCHITTEST:
begin
Rslt:=HTTRANSPARENT;
Result:=True;
end;
end;
end;


 
yar   (2002-11-07 18:13) [6]

Собственно уже все ...
Спасибо


 
alex_s   (2002-11-07 23:34) [7]


> yar (07.11.02 18:13)
> Собственно уже все ...
> Спасибо


На всякий случай, на будущее:

if (Msg.Msg = WM_LBUTTONDOWN) then begin
releasecapture;
Form.Perform(WM_SYSCOMMAND, $F012, 0);
end;

Вставляется в соответствующий контрол или в код формы,
тогда таскать можно будеть за все, кроме пространства перекрытого другими контролами. Можно это вставить в
событие мыши. А WM_NCHITTEST не работает в клиентской
части окна.




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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
9-44533
ghossst
2002-12-29 13:57
2003.07.14
Внимание!Проект 3D-движка


14-44905
cvv
2003-06-27 10:12
2003.07.14
Где взять инфу про сокеты?


11-44619
Konsool
2002-11-06 14:39
2003.07.14
Не найден Exptlntf.dcu


1-44638
MetalFan
2003-06-30 14:07
2003.07.14
---|Ветка была без названия|---


1-44625
-=alive=-
2003-06-29 20:08
2003.07.14
Работа с текстовым файлом