Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ComboBox


Страницы:   1 2 3

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]

Я имею ввиду что нет разницы для текущей проблемы в каком обработчике формы он заполняет список.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо