Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 17:17   #1
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию invalid class typecast

Есть такой код:
Код:
begin
  button[((Sender as TButton).Tag)].caption:=edit1.Text;
end;
Не работает, выдает ошибку invalid class typecast, понятия не имею из-за чего.
heart вне форума Ответить с цитированием
Старый 09.01.2010, 17:31   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

heart, а для чего этот код? Чтоб получать надписи нажатых кнопок? Может так попробывать:

Код:
(Sender as TButton).caption:=edit1.Text;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 09.01.2010, 17:45   #3
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

для обычной кнопки работает, но мои создаются динамически, потому не катит... ошибка, таже...

button[((Sender as TButton).Tag)].caption:=edit1.Text;

button - это массив кнопок.
((Sender as TButton).Tag) - определяет, какая именно кнопка нажата, и берет у нажатой кнопки числовое свойство(идентификатор), который ей дается при создание. Допустим мы нажали кнопку, которая была создана пятой (Sender as TButton).Tag, вернет число пять и того мы получим :

button[5].caption:=edit1.Text;

Надписси пятой кнопки присвоить, текст из едит. Вот зачем код.
heart вне форума Ответить с цитированием
Старый 09.01.2010, 17:49   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

heart, тогда нужно при создании кнопки ей присваивать свой tag и увеличивать его с каждым разом. Потому что для всех кнопок tag=-1

Без всяких тегов:

на формкреэйт
Код:
MyGlobVar:=1;
Код:
procedure TfrmMain.imgNewClick(Sender: TObject);
begin
  MyButton:=TImage.Create(Owner);
  MyButton.Parent:=self;
  MyButton.Height:=25;
  MyButton.Width:=75;
  MyButton.Name:='MyButton'+IntToStr(MyGlobVar);
  Inc(MyGlobVar);
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 09.01.2010 в 17:59.
Marsel737 вне форума Ответить с цитированием
Старый 09.01.2010, 18:03   #5
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

это тут не причем, я создаю все правильно и с таг у меня все правильно. Я ж выше написал:

Цитата:
и берет у нажатой кнопки числовое свойство(идентификатор), который ей дается при создание
И у каждой кнопки свое значение. Мну не это нужно, Вопрос в первом посте.
heart вне форума Ответить с цитированием
Старый 09.01.2010, 18:41   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Sender этот объект который вызвал событие.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.01.2010, 20:59   #7
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

я знаю, для чего нужен Sender, по моему я вполне конкретно задал вопрос в первом посте.
heart вне форума Ответить с цитированием
Старый 09.01.2010, 21:06   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а Sender точно TButton?
судя по ошибке нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.01.2010, 21:09   #9
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а Sender точно TButton?
судя по ошибке нет.
Кажется понял в чем ошибка)))) событие вызывает другой объект, спасибо)))) а я и забыл про такой расклад.
heart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Filename LobsterOK Общие вопросы Delphi 7 27.04.2010 16:56
class solomon123456789 Общие вопросы C/C++ 5 03.08.2009 22:29
raised exception class EIdSocketError with message' Socket Error # 10022 Invalid argument eldar Работа с сетью в Delphi 16 08.08.2008 23:49
class zzzzz Общие вопросы по Java, Java SE, Kotlin 2 03.04.2008 01:14