Главная страница
    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.031 c
1-1080709051
rosl
2004-03-31 08:57
2004.04.18
форма "сверху"


14-1079564171
Rouse_
2004-03-18 01:56
2004.04.18
С Днем Рождения 18 Марта


3-1080121143
Dimedrol
2004-03-24 12:39
2004.04.18
Создаю процедуру, FB говорит - parameter mismatch.


11-1059471662
Snak
2003-07-29 13:41
2004.04.18
Клавиша


3-1079610906
ikondakov
2004-03-18 14:55
2004.04.18
Частичная автоматизация.





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