![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с параметром Sender [D5, Win95/98]
Magic © (2002-09-04 10:23:00)Помогите. Никак не пойму в чем дело. В обработчике события нажатия кнопки, описанного в ActionList, я пишу следующее:
Eq: array[1..3] ofTEdit;
...
withSender asTSpeedButton do
Eq[Tag].Text:="";
...
Так вот, компилятор говорит, что я неправильно присваиваю тип ("InvalidCast"). Задействовано 3 SpeedButton"а и каждому присвоен номер от 1 до 3. Кажется, пишу все правильно, а он говорит - ошибка:( Не знаю, что делать?
Ученик (2002-09-06 14:01:00) [1]>Magic © (06.09.02 13:40)
Это объяснение, что происходит при нажатии на кнопку, но, к сожалению, для Delphi 6 (7)
MBo (2002-09-06 13:43:00) [2]Sender - Action.
В Delphi 5 у Action нет свойства ActionComponent, так что так просто не узнать, кто инициировал Action
Magic (2002-09-06 13:40:00) [3]Не понимаю, к чему мне то, что ты мне написал? Мне нужно просто понять, как работает событие, описанное в ActionList. Из всего написанного я понял, что это событие вызывается с параметром Sender = Self. Так?
Ученик (2002-09-06 13:28:00) [4]{ Controls.pas }
procedure TControl.Click;
begin
{ Call OnClick if assigned and not equal to associated action"s OnExecute.
If associated action"s OnExecute assigned then call it, otherwise, call
OnClick. }
if Assigned(FOnClick) and (Action <> nil) and (@FOnClick <> @Action.OnExecute) then
FOnClick(Self)
else if not (csDesigning in ComponentState) and (ActionLink <> nil) then
ActionLink.Execute(Self)
else if Assigned(FOnClick) then
FOnClick(Self);
end;
Magic (2002-09-06 13:25:00) [5]Да, да, правильно. Но не объясните ли вы мне подробнее: почему? Пожалуйста. А лучше: почему именно так:
if (Sender is TAction) and (TAction(Sender).ActionComponent is TSpeedButton) then
with TAction(Sender).ActionComponent do
Виктор Щербаков (2002-09-04 10:33:00) [6]
> Так вот, компилятор говорит,
Компилятор всё же молчит в таких ситуациях. Дело-то происходит в runtime, не так ли?
Ученик (2002-09-04 10:31:00) [7]if (Sender is TAction) and (TAction(Sender).ActionComponent is TSpeedButton) then
with TAction(Sender).ActionComponent do