Главная страница
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.018 c
14-44836
Дмитрий К.К.
2003-06-26 06:04
2003.07.14
Именинники 26 июня


1-44664
Yura123
2003-07-02 14:10
2003.07.14
Импорт библиотеки типов.


3-44565
Карелин Артем
2003-06-09 12:56
2003.07.14
Как скрыть имя пользователя от не слишком крутых хацкеров?


1-44725
denis24
2003-07-01 10:46
2003.07.14
Как создать новый файл ворда на основании шаблоннного?


1-44691
ss300
2003-06-29 17:02
2003.07.14
Выбрать из ста 20 случайных неповторяющихся чисел