Gedeon |
Отправлено: 18.03.2004, 12:36 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
В событии
CODE |
void __fastcall TfrmMain::cbFindAuthorCloseUp(TObject *Sender)
{
cbFindAuthor->Text;
}
//--------------------------------------------------------------------------- |
Свойство текст работает то правильно, то отстает на один выбор, ни в коде, нигде больше ничего не меняю, от свойства AutoDropDown не зависит, я уже заколебался, было такое у кого-нить?
|
|
Gedeon |
Отправлено: 18.03.2004, 16:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Дальше веселее:
CODE |
if(cbAddEdition->ItemIndex==-1){
ShowMessage("Нет такого издания");
cbAddYear->Clear();
txtAddNumbers->Text = "";
txtAddNumbers->Enabled = false;
cbAddYear->Enabled = false;
}
else{
cbAddYear->Clear();
QYear->Close();
QYear->SQL->Clear();
QYear->SQL->Add("SELECT PeriodMain.YearPublication FROM PeriodMain");
QYear->SQL->Add("WHERE PeriodMain.Title = " +
IntToStr((int)cbAddEdition->Items->Objects[cbAddEdition->ItemIndex]));
QYear->Open();
while(!QYear->Eof){
cbAddYear->Items->Add(QYear->FieldByName("YearPublication")->AsString);
QYear->Next();
}
QYear->Close();
cbAddYear->Enabled = true;
} |
cbAddEdition, cbAddYear- Ткомбобокс
txtAddNumbers — ТЭдит
QYear — ТКьюэри
После даже первого запуска программы ставим курсор в cbAddEdition набираем первые буквы какой-нить ерунды, жмакаем энтер и получаем "Нет такого издания", еще раз жмакаем энтер и все нормально.
Других обработчиков нет. И при работе проги все время оставание на 1 выбранный элемент из списка, назависимо от того выбран существующий или введено что-то левое.
Отредактировано Gedeon — 18/03/2004, 17:07
|
|
Gedeon |
Отправлено: 18.03.2004, 16:45 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
У кого есть время, плиз
Создайте пустой проект, на форму комбобокс, в конструктор формы — это
CODE |
ComboBox1->Items->Add("Sasha");
ComboBox1->Items->Add("Gedeon");
|
В обработчик комбобокса ComboBox1CloseUp — это
CODE |
ShowMessage(ComboBox1->ItemIndex);
|
Свойство ComboBox1 AutoDropDown — true
Запустите проект
фокус на комбо, там печатайте букву s и жмакайте энтер, че показывает?
|
|
Asher |
Отправлено: 18.03.2004, 17:29 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Сделал. Попробовал. Фигня какая-то. отстает на один шаг.
Может надежнее старый добрый OnChange ?
P.S. Сам я сижу пока на 5-ке, поэтому твои проблемы мне неведомы
P.P.S. Переползаю на VC, поэтому, наверное, твои проблемы и не изведаю.
P.P.P.S. Я нетрезв, сильно, поэтому, если что, то завтра
|
|
Gedeon |
Отправлено: 18.03.2004, 17:37 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Спасибо за труд.
Как по асе удалось выяснить
QUOTE | Ну надо тебе сказать что ComboBox устанавливает ItemIndex,Text после закрытия
тоесть после OnCloseUp |
Так что бросил нахер дурью маяться, OnChange не подходит, т.к. меняется постоянно если клацать, а мне надо чтобы только после закрытия.
ЗЫ Да здравcтвует RxLib, в ней сделал не так, как хотел сначала, но работает теперь правильно.
|
|
Gedeon |
Отправлено: 18.03.2004, 17:40 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Asher @ 18/03/2004, 18:31) | P.P.S. Переползаю на VC, поэтому, наверное, твои проблемы и не изведаю. |
Сам частично уже кой чего там делаю, просто ну очень мне не нравится оттуда с БД работать, а сейчас в основном базы так, что пока стою на месте.
QUOTE | P.P.P.S. Я нетрезв, сильно, поэтому, если что, то завтра |
С добрым завтра утром
|
|
exp |
Отправлено: 19.03.2004, 00:51 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Такие соображения: событие CloseUp возникает до того, как сменился Item (но ТЕКСТ к этому моменту уже сменился), так что как ни крути ты всегда будешь опаздывать...
Если конечно тебе не хочется искать Итем по тексту а потом переводить индекс комбо бокса.
На OnChahge все пахает, потому что смена итема к этому моменту произошла.
|
|