Форум: "Основная";
Текущий архив: 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.035 c