Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Отличие 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
1-1080392550
Yuri Btr
2004-03-27 16:02
2004.04.18
Отрисовка background в строке List View


4-1076419821
Islander
2004-02-10 16:30
2004.04.18
Вставить текст из буфера в чужое приложение


1-1080914299
P_a_s_h_a
2004-04-02 17:58
2004.04.18
Как уменьшить мерцание формы при перерисовке?


7-1076938204
Falendysh
2004-02-16 16:30
2004.04.18
Удаление файлов


1-1080912067
P_a_s_h_a
2004-04-02 17:21
2004.04.18
Три вопроса по прорисовке/анимации форм