Как заполнить combobox

DBLookupComboBox

Как заполнить combobox

          IComponent

          IControl

          IDBLookupControl

          IDBLookupComboBox

          DBLookupComboBox

Описание

Компонент DBLookupComboBox позволяет задавать значение некоторого поля одного набора данных путём выбора соответствующего значения из списка, сформированного из элементов другого набора данных. Данные отображаются посредством стандартного компонента ComboBox.

Список в DBLookupComboBox формируется из подходящих элементов поискового набора ListSource. Выбор в списке устанавливает значение поля в наборе данных DataSource. Обычно в списках отображаются значения тех полей (ListField), которые наилучшим образом описывают реальное значение поля (DataField).

Если свойство DataField в компоненте DBLookupListBox указывает на поле поиска, то зависимость между значением поля и списком поиска устанавливается автоматически. Если DataField указывает на поле, не являющееся полем поиска, то зависимость задается явно с помощью установки свойств ListField, ListSource.

Свойства компонента DBLookupComboBox

Имя свойстваКраткое описание
AlignСвойство Align определяет, как поведет себя компонент при изменении размеров содержащего его родительского компонента.
AllowDragСвойство AllowDrag определяет возможность взять у компонента перетаскиваемый объект.
AllowDropСвойство AllowDrop определяет, будет ли возможность у компонента принять перетаскиваемый объект.
AnchorsСвойство Anchors возвращает настройки, определяющие в процентном соотношении изменение размеров текущего компонента при изменении размеров родительского компонента.
BrushСвойство Brush определяет кисть, используемую для заливки области компонента.
ClientHeightСвойство ClientHeight используется для получения или задания высоты клиентской области компонента.
ClientWidthСвойство ClientWidth используется для получения или задания ширины клиентской области компонента.
ColorСвойство Color определяет цвет фона компонента.
ComponentCountСвойство ComponentCount возвращает количество дочерних компонентов.
ComponentsСвойство Components возвращает дочерний компонент.
CursorСвойство Cursor определяет вид курсора над компонентом.
DataСвойство Data предназначено для хранения любых пользовательских данных.
DataFieldСвойство DataField определяет поле источника данных, которое будет отображаться данным компонентом.
DataSourceСвойство DataSource связывает компонент группы «Доступ к данным» с набором данных, который содержит поле DataField .
DropDownRowsСвойство DropDownRows определяет количество отображаемых элементов раскрывающегося списка.
EnabledСвойство Enabled определяет доступность компонента для пользователя.
FieldСвойство Field возвращает параметры поля, с которым связан компонент.
FocusedСвойство Focused возвращает True, если фокус установлен на данном компоненте.
FontСвойство Font определяет множество характеристик, описывающих шрифт, используемый при отображении текста.
HeightСвойство Height определяет высоту компонента.
HelpContextСвойство HelpContext определяет уникальный индекс раздела контекстно-зависимой справки для данного компонента.
HintСвойство Hint определяет текст подсказки для компонента.
KeyFieldСвойство KeyField определяет поле из набора данных ListSource , значение которого должно соответствовать значению поля DataField .
KeyValueСвойство KeyValue определяет значение ключевого поля в активной строке источника данных.
LeftСвойство Left определяет координату левого края компонента.
ListFieldСвойство ListField определяет одно или несколько полей, значения которых отображаются в данном компоненте.
ListSourceСвойство ListSource определяет источник данных для компонента поиска, то есть источник, содержащий поля KeyField и ListField .
ListVisibleСвойство ListVisible возвращает значение видимости элементов раскрывающегося списка.
NameСвойство Name определяет наименование компонента.
ParentСвойство Parent определяет родительский компонент.
ParentColorСвойство ParentColor определяет, будет ли для компонента заимствован цвет родительского компонента.
ParentFontСвойство ParentFont определяет, будет ли для компонента использоваться шрифт родительского компонента.
ParentShowHintСвойство ParentShowHint определяет условие отображения всплывающей подсказки.
PopupMenuСвойство PopupMenu определяет контекстное меню, которое будет появляться при щелчке дополнительной клавишей мыши на компоненте.
ReadOnlyСвойство ReadOnly определяет возможность редактирования данных компонента.
ScrollsСвойство Scrolls возвращает параметры полос прокрутки компонента.
ShowHintСвойство ShowHint включает и выключает показ всплывающего окна подсказки для компонента.
TabOrderСвойство TabOrder определяет позицию компонента в последовательности табуляции.
TabStopСвойство TabStop определяет признак необходимости компоненту получать фокус при нажатии кнопки «TAB».
TagСвойство Tag не используется компилятором. Пользователь может изменить значение свойства Tag и использовать его по своему усмотрению.
TextСвойство Text определяет строку, идентифицирующую компонент для пользователя.
TopСвойство Top определяет координату верхнего края компонента.
VisibleСвойство Visible определяет видимость компонента во время выполнения.
WidthСвойство Width определяет ширину компонента.

Методы компонента DBLookupComboBox

Имя методаКраткое описание
BringToFrontМетод BringToFront располагает компонент на передний план.
ClientToScreenМетод ClientToScreen преобразовывает координаты точки, указанные относительно системы координат компонента, в экранные координаты.
DoDragDropМетод DoDragDrop позволяет начать операцию перетаскивания.
GetImageМетод GetImage возвращает изображение компонента со всеми дочерними компонентами.
ScreenToClientМетод ScreenToClient преобразовывает экранные координаты точки в координаты, указываемые относительно системы координат компонента.
SendToBackМетод SendToBack располагает компонент на задний план.
SetFocusМетод SetFocus устанавливает фокус на данный компонент.

События компонента DBLookupComboBox

Имя событияКраткое описание
OnBeginDragСобытие OnBeginDrag для компонента наступает, когда пользователь начинает перетаскивать объект от компонента.
OnCloseUpСобытие OnCloseUp наступает при сворачивании списка компонента.
OnClickСобытие OnClick наступает, если пользователь осуществил щелчок основной кнопкой мыши в области компонента.
OnDblClickСобытие OnDblClick наступает, если пользователь осуществил двойной щелчок кнопкой мыши в области компонента.
OnDragDropСобытие OnDragDrop для компонента наступает, когда пользователь отпускает над ним перетаскиваемый объект.
OnDragEnterСобытие OnDragEnter наступает, когда перетаскиваемый объект входит в границы данного компонента.
OnDragLeaveСобытие OnDragLeave наступает, когда перетаскиваемый объект выходит за границы данного компонента.
OnDragOverСобытие OnDragOver для компонента наступает, когда пользователь протаскивает над ним перетаскиваемый объект.
OnDropDownСобытие OnDropDown наступает при разворачивании списка компонента.
OnEnterСобытие OnEnter наступает в момент получения фокуса компонентом.
OnExitСобытие OnExit наступает в момент потери фокуса компонентом.
OnHScrollСобытие OnHScroll наступает при изменении положения ползунка горизонтальной полосы прокрутки.
OnKeyDownСобытие OnKeyDown наступает, если компонент находится в фокусе и производится нажатие клавиши на клавиатуре.
OnKeyPressСобытие OnKeyPress наступает, если компонент находится в фокусе, при нажатии пользователем символьной клавиши.
OnKeyPreviewСобытие OnKeyPreview наступает перед каждым событием, связанным с нажатием клавиш.
OnKeyUpСобытие OnKeyUp наступает, если компонент находится в фокусе, при отпускании пользователем любой, ранее нажатой клавиши.
OnMouseDownСобытие OnMouseDown наступает, если указатель находится в области компонента и была нажата любая кнопка мыши.
OnMouseEnterСобытие OnMouseEnter наступает в момент входа курсора мыши в область компонента.
OnMouseHoverСобытие OnMouseHover наступает при задержке курсора мыши в области компонента.
OnMouseLeaveСобытие OnMouseLeave наступает в момент выхода курсора мыши за пределы области компонента.
OnMouseMoveСобытие OnMouseMove наступает при перемещении курсора мыши над компонентом.
OnMouseUpСобытие OnMouseUp наступает при отпускании кнопки мыши, когда указатель находится в области компонента.
OnMouseWheelСобытие OnMouseWheel наступает, если компонент находится в фокусе при вращении колеса мыши.
OnVScrollСобытие OnVScroll наступает при изменении положения ползунка вертикальной полосы прокрутки.

См. также:

Компоненты доступа к данным

Источник: https://help.fsight.ru/ru/mergedProjects/uidevenv/02_components_constructor_forms/03_components_of_the_access_to_data/dblookupcombobox.htm

Комбобокс — Компоненты — Контур.Гайды

Как заполнить combobox

Комбобокс — это поле ввода со списком подсказок.

Комбобокс используют:

  • для выбора значения из справочника,
  • для добавления своего значения в справочник.

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

Комбобокс со стрелкойКомбобокс без стрелки

Поле работает по аналогии с раскрывающимся списком — при клике в поле сразу появляется список всех вариантов. Об этом подсказывает стрелка и плейсхолдер.Используйте этот режим, если вы точно знаете, что справочник не будет содержать больше 50 строк, либо уверены, что пользователю удобней выбирать значение, просматривая список.Список вариантов появляется только после ввода первого символа. Поэтому в поле нет стрелки, а плейсхолдер подсказывает, что достаточно ввести первые буквы.Используйте это поле, если в справочнике больше 50 строк или пользователь привык заполнять подобные поля, вводя значение с клавиатуры.

Состояние по умолчанию

Плейсхолдер подсказывает, что в поле можно ввести свое значение или выбрать его из списка вручную:

Фокус по пустому полю

При получении фокуса плейсхолдер становится чуть светлее, открывается список вариантов.

https://www.youtube.com/watch?v=drfSIv-tMoU

Когда курсор находится над списком, скроллинг страницы блокируется.

Начало ввода

При вводе первого символа список фильтруется. Первый пункт в списке подсвечивается:

Выбор пункта из списка

Выбор значения может быть сделан двумя способами — при управлении с клавиатуры и мышью.

При выборе значения мышью или клавишей Enter список закрывается, фокус остается в поле. Список будет показан снова при следующем клике в поле или изменении значения.

Фокус по заполненному полю

При получении фокуса введенное значение выделяется, раскрывается список, прокрученный до выбранного значения:

Нет совпадений

Если в справочнике не найдено совпадений с введенным значением, комбобокс показывает соответствующий текст. Важно показать подсказку, чтобы пользователь понял, что поле обработало его запрос.

В этом состоянии, при нажатии на клавиатуре Enter ничего не происходит, фокус остается в поле.

Потеря фокуса без выбора пункта из списка

Если введенное значение совпадает со значением из справочника, при потере фокуса это значение выбирается:

Если ничего не найдено или список не успел загрузиться, покажите ошибку:

В целом комбобокс без стрелки работает так же как со стрелкой с некоторыми исключениями.

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

Чтобы заполнить такое поле, пользователь должен помнить первые буквы нужного значения, по которым комбобокс найдет подходящие варианты.

При клике или получению фокуса плейсхолдер в поле становится чуть светлее.

Поиск запускается и появляется список при вводе хотя бы одного символа.

Оптимальное количество строк в списке — 5. Если после фильтрации список может быть очень большим, это число можно увеличивать до 20.

При получении фокуса полем с уже введенным значением это значение выделяется:

Поиск запускается и список появляется только после изменения значения.

Если у каждой записи справочника есть несколько параметров, показывайте в списке самые важные. По ним должен работать поиск.

Основное значение — короткое, емкое и уникальное.

Выбор сделан

После выбора показывайте дополнительное значение в поле серым цветом. Если оно полностью не входит, показывайте при наведении хинт:

Фокус по пустому полю

Эти варианты показываются над основным списком, отделяются чертой.

Если это комбобокс в режиме автокомплита сразу по фокусу показывайте список из 3-5 вариантов с заголовком. Заголовок нужен для того, чтобы было понятно, что это не полный список:

Если справочник может быть неактуальным, дайте пользователю возможность указать свое значение. При этом значение пользователя не добавляется в справочник, а на странице выводится предупреждение, чтобы обратить внимание пользователя на возможную ошибку.

Если пользователь сам наполняет справочник, то при вводе нового значения не показывайте текст «Нет совпадений». Добавляйте значение в список и при следующем заполнении предлагайте его наравне с остальными.

Фокус потерян без выбора из справочника

Если пользователь может сам наполнять справочник, и каждая запись это набор полей — добавьте в раскрывающийся список пункт для добавления новой записи в справочник. По клику на него открывается лайтбокс.

Фокус на пустом поле

Если добавление карточки частый сценарий — выбирайте пункт «Добавить» по умолчанию, чтобы пользователь мог нажать Enter и быстро перейти к добавлению новой карточки:

Ввод первого символа

В открывающемся лайтбоксе добавления карточки поле «Название» предзаполняется уже введенным значением.

Потеря фокуса

Если в предыдущем состоянии поле теряет фокус, срабатывает валидация: поле красится в красный, показывается сообщение об ошибке.

Если обработка запроса для построения списка занимает дольше 0,3 секунды, показываем спиннер минимум 1 секунду. Если список уже открыт, и при получении ответа возникла задержка — показываем спиннер в поле справа, список до обновления остается в прежнем состоянии.

Нажатие Enter при пустом/не загрузившемся списке ни к чему не приводит, фокус остается в этом же поле.

Лоадер специальный, серый, не привлекающий слишком много внимания:

Если происходит ошибка сервера, показываем сообщение:

Поле ввода комбобокса, как и кнопка, может быть трех размеров. Подробнее смотри в гайде поля ввода.

Список с подсказками всегда открывается вниз. Оптимальная высота списка 300-450 px. Чтобы список не выходил за границу страницы, проследите чтобы под ним было достаточное количество места.

При клике по полю и при переходе табом поле выглядит одинаково: появляется синяя рамка, которая сохраняется до потери фокуса.

Работа с клавиатурой

TabПереход к следующему контролу.
↓ ↑Если открыт список вариантов из нескольких значений — переключение между строками. Переход между строками не цикличен — с последней строки фокус не переходит на первую, как и с первой на последнюю.Если список cкрыт, содержит только один вариант, сообщение об ошибке или о том, что нет совпадений — перенос текстового курсора в начало или конец строки (стандартное поведение для текстового поля).
← →Перемещение текстового курсора в поле ввода.
EscСкрывает список, фокус не исчезает. Список появится вновь при вводе или удалении символа.
SpaceВвод пробела.
EnterВыбор подсвеченного значения из списка и переход к следующему полю в форме. Если список пуст/не успел догрузиться, нажатие Enter ни к чему не приводит.

Поле с ошибкой подсвечивается красной рамкой.

Примеры ошибок и предупреждений в комбобоксе описаны в пунктах: 28, 51, 60.

О поведении полей ввода с ошибками читайте в гайде по валидации.

Внешне поле ничем не отличается от обычного поля ввода. Если поле с выбором, в правой части есть стрелочка  — символ из шрифта Kontur Iconic.

Поле может быть трех размеров, как и обычное поле ввода.

Название поля выравнивается по базовой линии текста в поле:

Стиль списка подсказок совпадает с раскрывающимся списком.

Ширина списка должна быть не меньше ширины поля. Красиво, когда список шире поля ввода на 30−40 px.

Названия пунктов показывают полностью, при необходимости переносятся на несколько строк.

Состояния:

Источник: https://guides.kontur.ru/components/combobox/

Класс ComboBox — комбинированный список в VBA

Как заполнить combobox

Элемент управления ComboBox VBA языка позволяет формировать комбинированный список. Он предоставляет возможность, как выбирать готовые значения, так и вводить собственные данные. Вообще, стоит сказать, что робота со списками требует отдельной темы по определению, так как наиболее ярким примером создания сложных и комбинированных списков является  — формирование базы данных.

Однако и тут есть один момент – большая часть возможностей языка VBA отходит на задний план. Даже продукт Microsoft Access (работа с базами данных), который в былые времена я скрупулезно изучал на уроках информатики, мне на практике ни разу не пригодился.

Поэтому, и в этой статье я не буду вникать во все премудрости компонента ComboBox.

Базовые свойства элемента управления ComboBox VBA языка:

  • ColumnCount – позволяет задать количество столбиков в списке
  • ColumnWidth – ширина столбиков
  • ColumnHeads – определяет, отображать (значение true) или не отображать (значение false) заголовки столбиков.
  • RowSource – позволяет задать диапазон для элементов списка
  • Value и Text – собственно, текущее значение, что хранится в списке.

Как и для компонента TextBox, для ComboBox главным событием является Change. Событие Change возникает при вводе данных в список.

Ладно, пора приступать к практике. Сначала мы напишем пример использования объекта языка VBA ComboBox в Excel, а потом в Word.

VBA ComboBox Excel

И так, добавьте в окно Проекта новый модуль и новую форму. Модуль назовите ComboBox, а форму – CB_Form, за имена отвечает свойство Name. В редакторе кода для модуля пропишите следующую процедуру:

Sub ComboBox()    CB_Form.ShowEnd Sub

Процедура сделает форму видимой.

Теперь нужно приступить к созданию и настройке формы. Как она выглядит, вы можете просмотреть на картинке, но… для “слепого” браузера я ее опишу.

Параметры формы (UserForm): название (Caption) — работа с ComboBox в VBA, ширина – 340, высота – 190.

Параметры надписи (Label): Имя (Name) L_CB, свойство Caption оставляете пустым, ширина 324, высота 30, отступ слева и сверху равен 6.

Далее нам следует добавить четыре элемента управления vba ComboBox excel, разместите их так: по два в одну строку, имена для каждого компонента задайте такие: CB_A, CB_B, CB_C и CB_D. Я выбрал такие имена потому, что в каждом списке будет отображаться содержимое текущего листа Excel для колонок A, B, C и D.

Это важно!!! Позаботьтесь, что бы содержимое колонок A-B не было пустым и что бы количество  в них элементов не было слишком огромным, достаточно 100 записей максимум. В противном случае у вас возникнут ошибки.

Для наглядности над каждым объектом ComBox vba можете поставить надписи вида: Ячейка А, Ячейка В и так далее.

В самом низу, разместите, кнопку с именем CommandButton1 и напишите на ней “Объединить”.

Ладно, теперь в редакторе кода для форму пропишите следующие процедуры:

Private Sub CommandButton1_Click()L_CB.Caption = CB_A.Value & » » & _CB_B.Value & » » & _CB_C.Value & » » & _CB_D.ValueEnd Sub Private Sub UserForm_Initialize()Dim oColumn As RangeDim oCell As Range 'Заполняем первый списокSet oColumn = Columns(«A»)For Each oCell In oColumn.CellsIf oCell.Value «» ThenCB_A.AddItem oCell.ValueEnd IfNextCB_A.ListIndex = 0 'Заполняем второй списокSet oColumn = Columns(«B»)For Each oCell In oColumn.CellsIf oCell.Value «» ThenCB_B.AddItem oCell.ValueEnd IfNextCB_B.ListIndex = 0 'Заполняем третий списокSet oColumn = Columns(«C»)For Each oCell In oColumn.CellsIf oCell.Value «» ThenCB_C.AddItem oCell.ValueEnd IfNextCB_C.ListIndex = 0 'Заполняем четвертый списокSet oColumn = Columns(«D»)For Each oCell In oColumn.CellsIf oCell.Value «» ThenCB_D.AddItem oCell.ValueEnd IfNextCB_D.ListIndex = 0 End Sub

Процедура CommandButton1_Click – тут происходит обработка клика по кнопке. После клика, произойдет считывание выбранных данных для каждого объекта ComboBox vba excel, далее, все четыре значения объединяются и записываются в содержимое свойства Caption объекта Надпись.

Процедура UserForm_Initialize – тут происходит заполнение списков содержимым колонок сразу после инициализации формы. Происходит выбор заданной колонки листа Excel, потом циклично идет перебор всех ее значений и их добавление (метод AddItem) в выбранный список.

VBA ComboBox Word

Тут мы создадим список, состоящий из трех колонок, как он выглядит, можно посмотреть на рисунке. Не буду вникать во все премудрости, а сразу покажу код:

Private Sub UserForm_Initialize() With ComboBox1.ColumnCount = 3.ColumnWidths = «50;50;50».ColumnHeads = False.RowSource = «»End With ComboBox1.AddItem «Украина»ComboBox1.List(0, 1) = «Киев»ComboBox1.List(0, 2) = «Украинский» ComboBox1.AddItem «Россия»ComboBox1.Column(1, 1) = «Москва»ComboBox1.Column(2, 1) = «руский» ComboBox1.AddItem «Белоруссия»ComboBox1.List(2, 1) = «Минск»ComboBox1.List(2, 2) = «русский» ComboBox1.ListIndex = 0 End Sub

Как видим, при инициализации мы сначала заполняем свойства объекта ComboBox1 в блоке with … wend: три колонки, равной длины, заголовки отсутствуют. Далее происходит ручное заполнение списка. Как видим, элемент первой колонки добавляется с помощью метода AddItem, остальные колонки заполняются как массивы с помощью метода List.

Источник: http://scriptcoding.ru/2013/08/28/combobox-vba/

Делаем просто
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: