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

Вниз

Отличие Sender от Self   Найти похожие ветки 

 
vintik   (2004-03-30 13:10) [0]

В чём отличие вызова процедуры или функции с параметром Sender от вызова с параметром Self


 
-SeM-   (2004-03-30 13:15) [1]

А что говорит англо-русский переводчик? ;)


 
Pirat ©   (2004-03-30 13:22) [2]

Self - "указатель" на объект класса, членом является данная процедура/функция
Sender - "указатель" на объект от которого пришло событие
:))


 
vintik   (2004-03-30 13:54) [3]

так разница в чём (как я пострадаю от того или иного)
где, когда что лучше


 
Алхимик ©   (2004-03-30 13:55) [4]

Конкретный случай давай. Думу думать будем.


 
Anatoly Podgoretsky ©   (2004-03-30 13:56) [5]

Использовать лучше то, что подходит по задаче, а не гадать лучше/хуже. Но это разные вещи, одно параметр, второе литерал для компилятора, про который он знает.


 
vintik   (2004-03-30 13:59) [6]

так всётаки не конкретизируя можно сказать это лучше использовать здеся а это здеся


 
Алхимик ©   (2004-03-30 14:00) [7]

Не конкретезируя что лучше function или procedure?


 
vintik   (2004-03-30 14:03) [8]

Н удопустим есть кнопка - событие соответственно
Button1Click

Мне допустим надо гдето вдругом месте выполнить её код,
как лучше Button1Click(Sender) или Button1Click(self)


 
Algol   (2004-03-30 14:05) [9]


> vintik


Если не знаете что лучше, делайте Button1Click(nil) :))


 
Семен Сорокин ©   (2004-03-30 14:07) [10]

Button1Click(Button1)


 
Алхимик ©   (2004-03-30 14:09) [11]

procedure Form1.Button1Click(Sender : TObject);
begin
  if Sender IS TButton then ShowMessage("Я, блин, кнопка")
                       else ShowMessage("Я, блин, Онопко");
end;

Теперь разницу чувствуете?


 
Ozone ©   (2004-03-30 14:13) [12]

Лучше Button1.Click  ;-)


 
KSergey ©   (2004-03-30 14:25) [13]

>  [8] vintik   (30.03.04 14:03)
> Мне допустим надо гдето вдругом месте выполнить её код,
> как лучше Button1Click(Sender) или Button1Click(self)

А откуда у вас имеется в данном случае Sender? А в общем случае откуда?
А вообще, [12] Ozone  безусловно прав ;)


 
vintik   (2004-03-30 14:31) [14]


procedure Form1.Button2Click(Sender : TObject);
begin
Button1Click(Sender)
end;
-------------------
procedure Form1.Button2Click(Sender : TObject);
begin
Button1Click(self)
end;
-----------------------
procedure Form1.Button2Click(Sender : TObject);
begin
Button1Click(nil)
end;
-----------------------------
procedure Form1.Button2Click(Sender : TObject);
begin
Button1Click(Button1)
end;
------------
procedure Form1.Button2Click(Sender : TObject);
begin
Button1.Click
end;

И везде результат тот-же


 
Семен Сорокин ©   (2004-03-30 14:33) [15]

орех


 
Алхимик ©   (2004-03-30 14:34) [16]

См.[11]
Если пофиг в обработчике кто Sender, то не парься.


 
KSergey ©   (2004-03-30 14:39) [17]

>  [14] vintik   (30.03.04 14:31)
> И везде результат тот-же

До тех пор, пока внутри Form1.Button1Click этот самый Sender не используете ;)
Это ведь просто параметр данного метода! Равно как и у метода Form1.Button2Click.

О, а попробуйте ка такой обработчик для Form1.Button1Click:

procedure Form1.Button1Click(Sender : TObject);
begin
 if Assigned(Sender) then ShowMessage (Sender.ClassName)
 else                     ShowMessage ("Sender = nil");
end;


>  [15] Семен Сорокин ©   (30.03.04 14:33)
> орех

Да ладно, постичь человек хочет...


 
vinter   (2004-03-30 14:49) [18]

Спасибочки с senderom понятно, а Self


 
Юрий Зотов ©   (2004-03-30 15:03) [19]

> vintik

Чтобы все стало совсем понятно, на бросьте на форму несколько любых контролов (кнопок, Edit"ов, панелей - в общем, чего угодно) и всем им назначьте один общий обработчик OnClick:  

procedure Form1.AnyClick(Sender: TObject);
begin
 Caption := Format("Sender - %s, Self - %s",
   [TComponent(Sender).Name, TComponent(Self).Name])
end;

Этот же обработчик назначьте и на OnClick самой формы. А потом пощелкайте по контролам и по форме - все увидите сами.



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
6-1076771254
MAC
2004-02-14 18:07
2004.04.18
Анализатор протокола


14-1080155355
YurikGl
2004-03-24 22:09
2004.04.18
Центр сертификации


1-1080473109
ss300
2004-03-28 15:25
2004.04.18
Расширение экрана


3-1079907333
garry79
2004-03-22 01:15
2004.04.18
Как активировать уникальные(внешние) ключи?


3-1079606598
AlexLine
2004-03-18 13:43
2004.04.18
Почему не работает оператор not Memo like ... ?





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