Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
14-44808
Jumbo
2003-06-28 06:12
2003.07.14
error.log


14-44897
sancho
2003-06-28 00:05
2003.07.14
Ария-1100


14-44870
Bill
2003-06-27 12:27
2003.07.14
Преобразование строки в математическое выражение


1-44650
Darrin
2003-07-02 12:08
2003.07.14
Как перекрыть прорисовку системного меню окна?


1-44665
unnamed777
2003-07-02 15:20
2003.07.14
Scroll мыша





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский