![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ComboBox
Alex8 © (2008-04-01 12:31:00)Уважаемые мастера !
Помогите, пожалуйста, разобраться в следующей ситуации.
Выпадающий список компонента ComboBox формируется при
открытии формы в процедуре FormActivate() Посредством
cmb.Item.Add();
Дальше. Если мои действия стандартны (т.е. кликаю
кнопку списка, а затем выбираю одну из его позиций),
то все нормально.
А вот если после раскрытия списка кликнуть в любом
пустом месте формы (вне списка), то взникает исключение
непонятно к чему относящееся.
Текст сообщения следующий:
" 65536 is not a valid value for field 'iKod'.
The allowed range is -32768 to 32767"
При этом все это происходит только с тем ComboBox'ом,
Список которого формируется в процедуре FormActivate().
Остальные ComboBox этой формы работают нормально.
Кликай где угодно-никаких исключений.
Пробовал остановиться по событию OnClick - не останавливается.
я в полной растеряности. Спасибо
Семеныч (2008-04-01 16:08:00) [21]> Сергей М. © (01.04.08 15:44) [30]
Отсюда следует и еще один вывод - если при закрытии списка вылезает какая-то ошибка, то неплохо было видеть код обработчика OnCloseUp.
Ошибка-то ведь в нем, скорее всего. Похоже, что именно там пытаются что-то запихнуть в поле iKod, а в комбобоксе в этот момент ничего не выбрано.
Сергей М. (2008-04-01 15:44:00) [22]
> Какие отсюда выводы?
А выводы отсюда давным давно озвучены в [3] и [9] : -1, пройдя какие-то несуразные приведения типа к Cardinal и получив при этом значение 65536, тычется в поле iKod, имеющее тип Smallint.
Семеныч (2008-04-01 15:37:00) [23]> Alex8
> если после раскрытия списка кликнуть в любом
> пустом месте формы (вне списка), то взникает исключение
> У данного комбобокса задействован только onCloseup
> Исключение возникает при клике по форме.
При клике по форме закрывается список комбобокса и возникает этот самый OnCloseUp. Какие отсюда выводы?
Сергей М. (2008-04-01 15:37:00) [24]А при старте приложения какой контрол на какой форме у тебя автоматически получает фокус ?
Alex8 (2008-04-01 15:31:00) [25]> Еще раз - OnClick какого конкретно объекта ?
Формы.
Исключение возникает при клике по форме.
Сергей М. (2008-04-01 15:27:00) [26]
> По onClick не останавливается
Еще раз - OnClick какого конкретно объекта ?
Alex8 (2008-04-01 15:16:00) [27]> Ошибка не в этом коде.
И самое обидное, что нельзя перейти в пошаговый режим.
По onClick не останавливается. Сразу выдает исключение.
Сергей М. (2008-04-01 15:07:00) [28]
> Alex8 (01.04.08 14:46) [21]
Ошибка не в этом коде.
Alex8 (2008-04-01 14:57:00) [29]> Вообще неплохо бы onChange ComboBox-а привести, а не это.
Так onChange ComboBox пустой.
У данного комбобокса задействован только onCloseup
tesseract (2008-04-01 14:51:00) [30]Вообще неплохо бы onChange ComboBox-а привести, а не это.
Alex8 (2008-04-01 14:46:00) [31]> А тип полей которые они редактируют?
Short и Alpha (БД- PARADOX)
> Тогда тряси бубен Или код выкладывай
procedure TfrmPoisk.FormActivate(Sender: TObject);
Var r1: String;
i: Word;
begin
frmNm := Trim(TForm(pFrm1).Name);//Фильтрация (только ParentForm)
// Определяем файл поиска
If pFrm1.Name='FrmTiz' Then pTb1 := MDMyBook.Tiz;
If pFrm1.Name='FrmTmt' Then pTb1 := MDMyBook.Tmt;
If pFrm1.Name='frmPsb' Then pTb1 := MDMyBook.TPsb;
// Подготовка
cmbRkv.Clear;
cmbRkv.Text := '';
cmbVal.Clear;
cmbVal.Text := '';
cmbValDop.Visible := False;
cmbValDop.Text:='';
cmbValDop.Clear;
//Формируем Item для cmbRkv >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MDMyBook.TPoisk.Filtered := True;
MDMyBook.TPoisk.Filter := 'CFrm =''' + frmNm +'''';
MDMyBook.TPoisk.First;
For i:= 0 to MDMyBook.TPoisk.RecordCount-1 Do
begin
r1 := MDMyBook.TPoisk.FieldByName('Rkv').AsString;
cmbRkv.Items.Add(r1);
MDMyBook.TPoisk.Next;
end;
MDMyBook.TPoisk.Filtered := False; //>>>>>>>>>>>>>>>>>>>>>>>>
end;
Reindeer Moss Eater (2008-04-01 14:18:00) [32]А рассуждения по поводу ItemIndex=-1 распространяться
на все ComboBox, а у меня остальные работают нормально.
А тип полей которые они редактируют?
Плохиш (2008-04-01 14:08:00) [33]А мой телепатор подсказывает, что ошибка у аФтара в днк.
Сергей М. (2008-04-01 14:03:00) [34]
> OnDropDown тоже не помогает. Результат тот же.
> Да и отдельная кнопка (проверил на всякий случай)
> не решает проблемы.
Тогда тряси бубен)
Или код выкладывай)
Alex8 (2008-04-01 14:00:00) [35]> {RASkov} [7]
> Какие обработчики задействованы у данного комбобокса?
У данного комбобокса задействован только onCloseup
>Сергей М. [8]
OnDropDown тоже не помогает. Результат тот же.
Да и отдельная кнопка (проверил на всякий случай)
не решает проблемы.
А рассуждения по поводу ItemIndex=-1 распространяться
на все ComboBox, а у меня остальные работают нормально.
Reindeer Moss Eater (2008-04-01 14:00:00) [36]Ну в общем да.
Если при уходе с комбо будет OnActivate, то можно нарваться.
Anatoly Podgoretsky (2008-04-01 13:57:00) [37]
> Я имею ввиду что нет разницы для текущей проблемы в каком
> обработчике формы он заполняет список.
Есть и OnShow и OnActivate могут вызываться не один раз.
tesseract (2008-04-01 13:28:00) [38]
> Это понятно что -1 кудато попадает, но где это может попадать?
>
-1 Это ItemIdex combobox-а, когда в нём не выбрано значение. Если перезаполнять ComBobox по FormActivate - оно там сбрасываться будет регулярно.
> Я имею ввиду что нет разницы для текущей проблемы
Как видишь есть, но без кода всё равно не вычислишь, где там чего.
{RASkov} (2008-04-01 13:23:00) [39]> [12] Reindeer Moss Eater © (01.04.08 13:22)
Вот и я о том же :)
Но замечания по тем местам нужно принять автору к свединию)
Reindeer Moss Eater (2008-04-01 13:22:00) [40]Я имею ввиду что нет разницы для текущей проблемы в каком обработчике формы он заполняет список.