:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Не отображается выбранное значение в ComboBox
Дата: 19.05.05 17:37:30 ОтветитьЦитировать

Проблема

Когда фокус находится в ComboBox, то не отображается выбранное значение. Как только фокус уходит с ComboBox выбранное значение сразу отображается.

Причина

Это BUG (ошибка) работы с ComboBox. В версии Visual FoxPro 9 по-прежнему наблюдается. Проявляется при следующих настройках:

  • ComboBox вставлен в столбец Grid. Также возможно проявление этого BUG и в ComboBox отдельно лежащем на форме
  • В качестве ComboBox.ControlSource указано поле числового типа. Соответственно, сделана настройка ComboBox.BoundTo = .T.
  • В качестве ComboBox.RowSourceType указано значение 2 - Alias или 6 - Fields

    Т.е. это конфликт настроек BoundTo и RowSourceType.

    Решение

    Следует изменить тип источника данных для выпадающего списка в ComboBox. Т.е. изменить значение ComboBox.RowSourceType на что-нибудь другое кроме 2 или 6.

    Ниже приведены два возможных варианта решения исходя из следующих предположений:

  • В качестве источника данных для раскрывающегося списка используются поля таблицы MyTab
  • В качестве выбираемого значения используется поле числового типа MyTab.ID
  • В качестве отображаемого значения используется символьное поле MyTab.Name


    Использование в качестве источника данных Select-SQL

    Сделайте следующие настройки

    ComboBox.RowSource='SELECT Name,ID FROM MyTab INTO CURSOR curCombo'
    ComboBox.RowSourceType=3 - SQL Statment

    В предложении Select-SQL указание опции INTO обязательно, поскольку в противном случае, после выполнения запроса будет отображено BROWSE-окно с результатами выполнения запроса.

    Для порядка, не забудьте при закрытии формы закрыть и временный курсор с именем curCombo


    Использование в качестве источника данных массива

    В этом случае Вам необходимо предварительно создать свойство формы типа "массив". Признаком того, что новое свойство это именно массив является указание его размерности, например:

    ThisForm.AddProperty("aCombo[1,1]")

    Метод AddProperty() появился только в 6 версии FoxPro. В младших версиях вам придется создать это свойство вручную на этапе проектирования формы

    Теперь где-то в событии Init-формы следует наполнить этот массив

    SELECT Name,ID FROM MyTab INTO ARRAY ThisForm.aCombo

    И сделайте следующие настройки в ComboBox

    ComboBox.RowSource='ThisForm.aCombo'
    ComboBox.RowSourceType=5 - Array
    Ratings: 0 negative/0 positive


  • Тема Просмотров Написано Написано
      ComboBox 5466 Владимир Максимов 01.03.05 22:12
      Как автоматически раскрыть выпадающий список 12115 Владимир Максимов 15.05.05 18:58
      Как ввести новое значение непосредственно в ComboBox 10109 Владимир Максимов 15.05.05 19:35
      Не отображается выбранное значение в ComboBox 12417 Владимир Максимов 19.05.05 17:37


    Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

    On-line: 2 (Гостей: 2)

    © 2006 Fox Club 
    Яндекс.Метрика