C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Query + ComboBox
Gedeon
Отправлено: 20.02.2004, 15:05


Ветеран

Группа: Модератор
Сообщений: 1742



QType — ADOQuery, возвращающее запрос из двух столбцов Id, Type первый int, второй String, с помощь вот этого кода
CODE

while(!QType->Eof){
       cbFindType->AddItem(QType->FieldByName("Type")->AsString, (TObject*)QType->FieldByName("Id")->AsInteger);
       QType->Next();
}

Заганяю в ComboBox их значения. Это нужно для того, чтобы потом без всяких запросов по выбранному значению в боксе поучать их Id вот так
CODE

(int)cbFindRubric->Items->Objects[cbFindRubric->ItemIndex];


Вопрос: можно ли их как-то туда загнать без цикла?
Valdemar
Отправлено: 20.02.2004, 16:43


Мастер участка

Группа: Участник
Сообщений: 433



Я думаю, что без цикла не получится.
А чем вам цикл не нравится? Можете попробовать сделать так:
CODE

   TField *f1,*f2;
   f1=QType->Fields->Fields[0];
   f2=QType->Fields->Fields[1];
   while(!QType->Eof)
   {
      cbFindType->AddItem(f1->AsString, (TObject*)f2->AsInteger);
      QType->Next();
   }

Может чуть-чуть быстрее будет, а может и нет smile.gif .
Gedeon
Отправлено: 23.02.2004, 11:36


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Valdemar @ 20/02/2004, 17:45)
А чем вам цикл не нравится?

Да вот из-за скорости и не нравится, второй возможный вариант заметной разницы в скорости не дал, что ж придется жертвовать временем загрузки для быстрой работы дальше.
olegenty
Отправлено: 24.02.2004, 09:08


Ветеран

Группа: Модератор
Сообщений: 2412



Хочешь скорость, воспользуйся TRxLookupEdit. В отличие от TLookupComboBox, TRxLookupEdit работает с одним TDataSet, указываемом в LookupSource. Замечу, что он также способен отображать более одной колонки в выпадающем списке. В общем, вещь приятная, аналогов не имеет. Замечу, что скачать RxLib можно прямо тут. Библиотека стара, как мир, но до сих пор остаётся актуальной.
Gedeon
Отправлено: 24.02.2004, 09:36


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (olegenty @ 24/02/2004, 10:10)
Библиотека стара, как мир, но до сих пор остаётся актуальной.

Про нее родимую то я знаю.
Уже есть обновление этой библиотеки, теперь она называется PolarisLibrary, очень много приятных дополнений, находится она тут
PolarisLibrary
olegenty
Отправлено: 24.02.2004, 09:45


Ветеран

Группа: Модератор
Сообщений: 2412



ну вот и пользуйся, или принципиально, чтобы это был именно TComboBox?
Gedeon
Отправлено: 24.02.2004, 10:08


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (olegenty @ 24/02/2004, 10:47)
ну вот и пользуйся, или принципиально, чтобы это был именно TComboBox?

Да нет, просто не хочется пол пректа переделывать, но деваться пожалуй некуда, лучше сейчас, чем спустя пол года, когда юзеры завоют.

Вернуться в Работа с базами данных в C++Builder