|
Тема |
Re: Sender [re: нoвoбpaнeц] |
|
Автор |
PhantomAS (стар ерген®) |
|
Публикувано | 24.02.02 10:54 |
|
|
Преди да говорим конкретно за параметъра бих те посъветвал да проу4иш така наре4ената класова иерархия в Делфи - и ще забележиш 4е вси4ки класове запо4ват от TObject - защо ли???? ;-)))
Каква е идеята конкретно за твоя въпрос - когато имаме обработка на събитие - като параметър (по4ти при вси4ки слу4аи ) се предава и обекта викащ събитието - той се намира именно в този параметър - само 4е ако искаш да разботиш с него ще трябва да го сведеш до "истинския" му тип - ако искаш да ползваш нещо конкретно от обекта пращаш генериращ съобщението
Например - просто свържи един бутон с неговия OnClick метод- появява се
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Ако искаш да направиш нещо конкретно свързано с "изпраща4а" на това събитие - примерно да промениш неговия Caption - просто добави следното
(Sender as TButton) .Caption := 'ABC';
Оба4е трябва да си сигурен в така наре4ения cast - опертор - в слу4ая разглеждаме Sender като тип бутон. За да си сигурен 4е вси4ко е коректно (ако примерно Button1Click(...) можеш да дадеш не само на метода OnClick на бутона, ами и на вси4ки On.... събития от типа TNotifyEvent - (това е най простото събитие )
Примерно можеш освен с OnClick на бутона - да асоциираш ве4е готовата обраобтка едновременно и с OnClick на меню - в този слу4ай оба4е когато извикаш събитието от меню - параметъра Sender ще бъде от друг тип.
ето ти един пример как да проверяваш то4но какъв тип е параметъра (не само за Sender се отнася - а за вси4ки обекти предавани като параметри )
if (Sender is TButton) then
(Sender as TButton) .Caption := 'ABC';
ако имаш меню - можеш да направиш проверка по следния на4ин
if (Sender is TMenuItem) ....
Като цяло трябва да обърне пове4е внимание на класовете в делфи - те са основата на програмирането - VCL библиотеката е доста голяма - но можеш да извадиш на първо време най- важните - тези на контролите и формите с които работиш за да можеш по лесно да се ориентираш
---
Е т'ва е живот!
|
| |
|
|
|