TFrame versus WM_NCHITTEST
От: vitorg Россия  
Дата: 01.10.04 20:00
Оценка:
Хочу таскать форму за любое место, но на форме у меня расположены динамически созданные фреймы с контроллами, соответственно для того, чтобы можно было тасать за фрейм, в класс фрейма я добавил код:
procedure Tframe_clist.WMNCHitTest(var msg: TWMNCHitTest);
begin
 inherited;
 if msg.Result=htClient then msg.Result:=htTransparent;
end;

Но фрейм не хочет пропускать под себя сообщения и форма не таскается за фрейм, что можно в этом случае сделать?

PS: в самой форме конечно же имеется:
procedure Tform_main.WMNCHitTest(var msg: TWMNCHitTest);
begin
 inherited;
 if msg.Result=htClient then msg.Result:=htCaption;
end;


12.10.04 08:28: Оставлено модератором в 'Delphi & Builder' — Sinclair
Jabber: vitorg@jabber.org
Re: TFrame versus WM_NCHITTEST
От: vitorg Россия  
Дата: 04.10.04 11:32
Оценка:
Да, и ещё почему-то динамически созданные фреймы не хотят обрабатывать события On*, (например OnClick, OnMouseMove ...)
Создаю вот так:
SetLength(frames_array,Length(frames_array)+1);
frames_array[High(frames_array)]:=Tframe_clist.Create(form_my);
with Tframe_my(frames_array[High(frames_array)]) do
    begin
     Name:='frame_my_'+IntToStr(High(frames_array));
     Parent:=form_my;
     Left:=0; Top:=130;
    end;
[ RSDN@Home 1.1.4 beta 3 rev. 185 ]

12.10.04 08:28: Оставлено модератором в 'Delphi & Builder' — Sinclair
Jabber: vitorg@jabber.org
Re[2]: TFrame versus WM_NCHITTEST
От: Softwarer http://softwarer.ru
Дата: 12.10.04 06:50
Оценка:
Здравствуйте, vitorg, Вы писали:

V>Да, и ещё почему-то динамически созданные фреймы не хотят обрабатывать события On*, (например OnClick, OnMouseMove ...)


Это может быть (и должно быть), если обработчики событий присвоены не самому фрейму, а фрейму, брошенному на форму.

P.S. В семи строках четырежды используется одно и то же значение, и каждый раз оно добывается с помощью вызова функции — имхо это моветон. Тем более, при программировании на C.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.