![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Sender [D7, WinXP]
Ag2002 © (2003-01-09 18:54:00)Подскажите пожалуйста,
я создал ActionList в нём создал оброботчик оди и привезал его к двум кнопкам и я пытаюсь сделать так чтобы по нажатию на одну из них происходило немного другое действие чем при другом, в обработчике написал следующие:
if (Sender is TButton) then
if (Sender as TButton).Name = "Button4" then;
Но почему-то когда я нажимаю на кнопку этот код не срабатывает получается что Sender is НЕТTButton ?
почему ????
Immortal (2003-01-10 10:31:00) [1]Можно сделать так:
// Условие выполняемое при нажатии Button1:
if TButton(Sender).Name = "Button1" then
Begin
[Ваш код программы]
end;
// Условие выполняемое при нажатии Button2:
if TButton(Sender).Name = "Button2" then
Begin
[Ваш код программы]
end;
// и т.д.
TTCustomDelphiMaster (2003-01-09 22:01:00) [2]
> function TCustomActionList.ExecuteAction(Action: TBasicAction):
> Boolean;
> begin
> Result := False;
> if Assigned(FOnExecute) then FOnExecute(Action, Result);
> end;
Извеняюсь не из той оперы
function TBasicAction.Execute: Boolean;
begin
if Assigned(FOnExecute) then
begin
FOnExecute(Self);// Передает в обработчик Self - то есть себя TBasicAction, а не кнопку.
Result := True;
end
else Result := False;
end;
TTCustomDelphiMaster (2003-01-09 21:45:00) [3]function TCustomActionList.ExecuteAction(Action: TBasicAction): Boolean;
begin
Result := False;
if Assigned(FOnExecute) then FOnExecute( Action, Result);
end;
Или так
procedure TForm1.Action1Execute(Sender: TObject);
begin
ShowMessage(TControl(Sender).Name);
end;
Vcoder (2003-01-09 21:19:00) [4]
> Переяслов Григорий © (09.01.03 19:00)
> А Sender-то форма
Была аналогичная проблема. Выяснял подробности - Sender действительно форма.
Пришлось извращаться: кнопку, по которой вызван метод, определял черезSelf.ActiveControl
Пожалуйста объясните, почему Sender форма и как сделать, чтобы это была Button?
z1288 (2003-01-09 19:29:00) [5]Ну незнаю, в том куске кода, что привел Ag2002 все прекрасно работает (только что проверил), может быть ошибка где-то еще???
Ag2002 (2003-01-09 19:11:00) [6]ПОчему ?
Переяслов Григорий (2003-01-09 19:00:00) [7]А Sender-то форма