Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с функцией 
:(
    Опции темы
Guzya
Дата 26.3.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.5.2006

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



Прошу прошения если косяк с названием темы. У меня на главной форме у меня располагаются другие формы на каждой есть Query1, пишу функцию .....(TForm* Form,...) в самой функции есть строчка Form->Query1->.... ну вот билдер говорит Query1 не явл. метотом Form. Что делать???
PM MAIL ICQ   Вверх
DissDoc
Дата 26.3.2007, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

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



Query1 в Form не определена?
А в остальных формах определена?
Я правильно понял?
PM MAIL WWW   Вверх
Fazil6
Дата 26.3.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 11
Всего: 60



Цитата(Guzya @  26.3.2007,  11:20 Найти цитируемый пост)
Что делать???

ну действительно, Query не является членом TForm

для решения в общем виде нужно пересматривать структуру иерархии твоих форм, либо dinamic_cast к каждому конкретному типу твоих форм, но это плохое решение

Добавлено через 8 минут и 8 секунд
пишешь наследника от TForm, например MyQForm. в нем объявляешь пустую виртуальную функцию
Код

public:
  virtual TQuery * GetQuery() const = 0;

все твои формы с этой Qurey1  делаешь public: наследником этого нового класса, а не TForm и в них реализуешь доступ к Query.
Тогда интерфейс функции (MyQForm *Form) ну и доступ Form->GetQuery()->....
PM MAIL   Вверх
DissDoc
Дата 26.3.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

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



А если проще сделать Form->Form2->Query1... (у него же все формы включены в Form)
PM MAIL WWW   Вверх
Fazil6
Дата 26.3.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 11
Всего: 60



Цитата(DissDoc @  26.3.2007,  11:36 Найти цитируемый пост)
А если проще сделать Form->Form2->Query1... (у него же все формы включены в Form)

ЧЕМ ЖЕ ЭТО ПРОЩЕ? TForm точно также не имеет члена Form2 как и Query1... Борьба ведь за обобщенность, а как определить к какому классу должен относится Query даже если передавать в функцию не TForm* , а класс формы с включенными в нее формами ? Ты предложил решение только для одной конкретной формы Form2 , а остальные ? 
PM MAIL   Вверх
DissDoc
Дата 26.3.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

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



Так я не понял - ему сразу что ли нужно все подключить? Тогда да - я не прав.
PM MAIL WWW   Вверх
Guzya
Дата 26.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.5.2006

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



Спасибо всем кто откликнулся. Форм у меня 4 и мне нужна функция которая работалабы с каждой из них не зависимо от названия.
сама функция имеет вид
Код

AnsiString GetNaim(TForm *Form, AnsiString Text)
{
  for(int i=0;i< Form->Query1->FieldCount;++i)
  {
    if(Form->Query1->Fields->operator [](i)->DisplayLabel==Text)
    {
      return Form->Query1->Fields->operator [](i)->FieldName;
    }
  }
  return "";
}

PM MAIL ICQ   Вверх
Fazil6
Дата 27.3.2007, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 11
Всего: 60



Цитата(Guzya @  26.3.2007,  19:36 Найти цитируемый пост)
пасибо всем кто откликнулся. Форм у меня 4 и мне нужна функция которая работалабы с каждой из них не зависимо от названия.

я не разбирался в логике твоей функции, но мне кажется, что тебе в эту функцию можно передавать не форму, а Query
Код

AnsiString GetNaim(TQuery *query, const AnsiString &Text)
{
  for(int i=0;i< query->FieldCount;++i)
  {
    if(query->Fields->operator [](i)->DisplayLabel==Text)
    {
      return query->Fields->operator [](i)->FieldName;
    }
  }
  return "";
}


Это сообщение отредактировал(а) Fazil6 - 27.3.2007, 08:50
PM MAIL   Вверх
Guzya
Дата 27.3.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.5.2006

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



Точно, ну я натуральный  smile . А функция по названию поля отображаю-ся пользователю (DisplayLabel) ищет его имя в таблице(FieldName), что бы по этому имени вести поиск. Встроенной функции я не нашел.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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