Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Окна [D7, WinXP]


iiiymaxep ©   (2008-01-19 20:55:00) 

На форме есть компонент, есть обработчик события onmousedown для этого компонента. Можно ли сделать так, чтобы использовать этот обработчик для компонента такого же типа, но на другой форме, которая создается в процессе работы приложения?


iiiymaxep   (2008-01-19 21:56:00) [1]


> GetParentForm(TControl(Sender)).Perform(WM_SYSCOMMAND, $F012,
>  1);


turbouser!!!!  Спасибо большое!!!!! С меня пиво!!!!!!


turbouser   (2008-01-19 21:52:00) [2]


> iiiymaxep ©   (19.01.08 21:30) [14]
>
> turbouser, СПАСИБО за совет, НО в этом случае сообщение
> посылается только компоненту... А мне надо чтобы форме(((

GetParentForm(TControl(Sender)).Perform(WM_SYSCOMMAND, $F012, 1);


iiiymaxep   (2008-01-19 21:43:00) [3]

Нашел статью... Судя по ней - все должно ботать))
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=169&mode=print

Там написано, что perform посылает месаджи всем компонентам дочернего окна!
но что то не ботает))


iiiymaxep   (2008-01-19 21:36:00) [4]

Не, что то не то...

Слушайте, а кто нить может тогда пояснить, что делает Perform, если его указывать без дочернего компонента? Как компилятор дельфи его понимает в этом случае?


iiiymaxep   (2008-01-19 21:31:00) [5]

Efir ! Сейчас попробую) Спасибо!


iiiymaxep   (2008-01-19 21:30:00) [6]

turbouser, СПАСИБО за совет, НО в этом случае сообщение посылается только компоненту... А мне надо чтобы форме(((

В кокнкретно этом случае посылается сообщение о перетаскивании формы.
Я не до конца просто понимаю физику работы Perform. Но факт есть факт - если указывать тип контрола, то сообщение посылается только ему, и по форме начинает двигаца только он, а сама форма стоит на месте)))

Что то я заморочился совсем))


Efir   (2008-01-19 21:28:00) [7]

Тока лучше наверное сразу от TControl (TControl(Sender).Perform(...))


Efir   (2008-01-19 21:26:00) [8]


> turbouser ©   (19.01.08 21:23) [11]


Блин обогнал (я уже осознал свою ошибку).


turbouser   (2008-01-19 21:23:00) [9]


> iiiymaxep ©   (19.01.08 21:20) [10]
>
> Efir! Я же говорю) Не работает))))) Я ж не до такой степени
> не вменяемый)))) Может что то с Perform(WM_SYSCOMMAND, $F012,
>  1) не то? Может посылка сообщения дочерним формам не идет?
>

TWinControl(Sender).Perform(...)


iiiymaxep   (2008-01-19 21:20:00) [10]

Efir! Я же говорю) Не работает))))) Я ж не до такой степени не вменяемый)))) Может что то с Perform(WM_SYSCOMMAND, $F012, 1) не то? Может посылка сообщения дочерним формам не идет?


Efir   (2008-01-19 21:18:00) [11]

Ну и напиши для созданного компонента:
TakoygeKomponentNaDrugoiForme.OnMauseDown:=TGoogleMAP.CAPTIONMouseDown;


iiiymaxep   (2008-01-19 21:17:00) [12]

Efir! Пробовал) Не получается) Делает все что угдно, но только не это))) В смысле - не делает именно этот код из двух строк


iiiymaxep   (2008-01-19 21:16:00) [13]

Так, хорошо, буду еще более конкретным

вот исходник:

procedure TGoogleMAP.CAPTIONMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

 ReleaseCapture;
 Perform(WM_SYSCOMMAND, $F012, 1);

end;

Это не обработчик события? тогда что это???


Сергей М.   (2008-01-19 21:13:00) [14]


> Чего не понятно?


Непонятно совсем малое - какое отношение этот огрызок кода имеет к


>  простое указывание для события onmouse


Иными словами, этот код не имеет НИЧЕГО общего с назначением свойству-событию некоего дельфийского объекта метода-обработчика некоего события этого объекта.

Чего не понятно?


Efir   (2008-01-19 21:13:00) [15]

Укажи для динамически созданного компонента обработчик уже созданного.


iiiymaxep   (2008-01-19 21:09:00) [16]

Ну е мое... Этот код записан в обработчике события онмаусдаун для одного из компонентов главной формы! Потом создаю форму, динамически, но простое указывание для события onmouse... для одного из созданных на этой новой форме компонентов этого обработчика ничего не дает. Чего не понятно?


Сергей М.   (2008-01-19 21:03:00) [17]

Что-то здесь не пахнет никаким "обработчиком события"


iiiymaxep   (2008-01-19 21:01:00) [18]

Оч хорошо) Как? Что то не получается)))

Если конкретно, то не могу повторить вот такой код для динамическим созданного компонента

 ReleaseCapture;
 Perform(WM_SYSCOMMAND, $F012, 1);


Сергей М.   (2008-01-19 20:59:00) [19]

Можно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо