Форум: "KOL";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизПеретаскивать форму за клиентскую часть в 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 вся ветка
Форум: "KOL";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.015 c