Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка с function(Components[i]) as TsomeControl), There is no overloaded version... 
V
    Опции темы
Bose
  Дата 10.8.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



есть ф-ция: 
Код

Procedure PrepareCombobox(var ComboBox : TDBComboBoxEh; SetFirst: boolean); overload;
begin
     if (ComboBox.Items.Count > 0) and SetFirst
       then ComboBox.ItemIndex := 0;

     ComboBox.DropDownBox.Rows := Max(ComboBox.DropDownBox.Rows,Min(8, ComboBox.Items.Count));
end;

и аналогичная
Код

Procedure PrepareCombobox(var ComboBox : TDBLookupComboBoxEh; SetFirst: boolean); overload;
begin
     if (ComboBox.Items.Count > 0) and SetFirst
       then ComboBox.ItemIndex := 0;

     ComboBox.DropDownBox.Rows := Max(ComboBox.DropDownBox.Rows,Min(8, ComboBox.Items.Count));
end;



вызваю её вот так вот:
Код

  For i := 0 To Self.ComponentCount-1 Do
    Begin
      If (Self.Components[i] is TDBComboBoxEh)
         Then
      begin
           PrepareCombobox( (Self.Components[i]) as TDBComboBoxEh ,False);
      end;


и получаю ошибку: 
There is no overloaded version of 'PrepareCombobox' that can be called with these arguments.
 smile не понимаю в чём там дело .  smile Кто-нибудь знает почему так?

и в то же время, если создать переменную типа TDBComboBoxEh. Присвоить ей
Self.Components[i]) as TDBComboBoxEh и передать в виде параметра уже переменную, то всё происходит на ура. Но такой вариант меня не устраивает, потому что планируется по ходу работы добавлять перезагруженные варианты ф-ции для других типов контролов. 
п.с. Дельфи 6.
PM MAIL WWW Skype   Вверх
Bose
Дата 10.8.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



п.с. только что выяснил, что подобное поведение появляется, только в случае, если используются перегруженные (overload) функции. 
PM MAIL WWW Skype   Вверх
Snowy
Дата 10.8.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Поправь параметр на 
ComboBox : TCustomComboBox;

Добавлено @ 16:02 
Или сделай один вариант функции, принимающеё TWinControl, а уже в ней разбирайся, что за контрол пришёл.

Добавлено @ 16:02 
И var убери smile Он там не нужен. Только мешать будет.
PM MAIL   Вверх
Bose
Дата 10.8.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Snowy @  10.8.2006,  15:58 Найти цитируемый пост)
И var убери  Он там не нужен. Только мешать будет.


Убрал и всё заработало.  smile  smile  smile  ни-че-го ни понимаю.

Спасибо, Snowy! 

 
добавлено: 
Цитата

Поправь параметр на 
ComboBox : TCustomComboBox;

там не получилось бы. у этих контролов почему-то нет общего предка, обладающего нужными мне свойствами. А менять код готовых чужих компонентов - ой как не хочется. smile 

Это сообщение отредактировал(а) Bose - 10.8.2006, 16:10
PM MAIL WWW Skype   Вверх
Matematik
Дата 10.8.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Цитата(Bose @  10.8.2006,  17:07 Найти цитируемый пост)
там не получилось бы. у этих контролов почему-то нет общего предка, обладающего нужными мне свойствами.

Можно использовать as и is
Код

if Sender is TButton then
begin
  (Sender as TButton).
end
else if Sender is TMemo then
begin
  (Sender as TMemo).
end
else

PM MAIL WWW ICQ   Вверх
Snowy
Дата 10.8.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Bose @  10.8.2006,  16:07 Найти цитируемый пост)
Убрал и всё заработало.        ни-че-го ни понимаю.
Просто варом можно передавать только переменные. Приведённая переменная уже таковой не считается.

Цитата(Bose @  10.8.2006,  16:07 Найти цитируемый пост)
Спасибо, Snowy! 
Всегда пожалуйста.

Добавлено @ 16:27 
ЗЫ. Передавать объекты варом - нет смысла - они и так указатели.
Если только ты не хочешь создать новый объект, вместо переданного.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.