Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

Окна   Найти похожие ветки 

 
iiiymaxep ©   (2008-01-19 20:55) [0]

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


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

Можно.


 
iiiymaxep ©   (2008-01-19 21:01) [2]

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

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

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


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

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


 
iiiymaxep ©   (2008-01-19 21:09) [4]

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


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

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


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


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


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


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


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

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


 
iiiymaxep ©   (2008-01-19 21:16) [7]

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

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

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

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

end;

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


 
iiiymaxep ©   (2008-01-19 21:17) [8]

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


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

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


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

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


 
turbouser ©   (2008-01-19 21:23) [11]


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

TWinControl(Sender).Perform(...)


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


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


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


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

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


 
iiiymaxep ©   (2008-01-19 21:30) [14]

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

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

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


 
iiiymaxep ©   (2008-01-19 21:31) [15]

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


 
iiiymaxep ©   (2008-01-19 21:36) [16]

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

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


 
iiiymaxep ©   (2008-01-19 21:43) [17]

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

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


 
turbouser ©   (2008-01-19 21:52) [18]


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

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


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


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


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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1193752142
Иван_А
2007-10-30 16:49
2008.02.10
WebBrowser


2-1200390541
umbra
2008-01-15 12:49
2008.02.10
как лучше загрузить данные в базу? (ADO, Access)


15-1199134940
Anatoly Podgoretsky
2008-01-01 00:02
2008.02.10
С Новым Годом!


2-1200583087
zeroed
2008-01-17 18:18
2008.02.10
Java - Delphi, помогите с переходом


2-1200481828
Василий
2008-01-16 14:10
2008.02.10
Не могу связать таблицы =(





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский