Компоненты Delphi страницы StandartКомпонент Delphi ComboBox |
Уроки Delphi
1. Первая программа
2. Использование компонентов
3. События Delphi
4. Типы данных Delphi
5. Создание своих типов данных
6. Выражения и операторы
7. Работа с файлами в Delphi
8. Дополнительные формы
9. Подпрограммы в Delphi
10. Исключительные ситуации
11. Взаимодействие приложения с пользователем
12. Указатели в Delphi
13. Обзор компонентов
14. Работа со строками
15. Создание интерфейса
16. Графика в Delphi
17. Многопоточность в Delphi
18. Динамическое создание
компонентов Поиск по сайту Это важно:
Метод Application.ProcessMessages;
Это полезно:
Параметр Sender в обработчиках событий;
Бояться не надо |
Компонент Delphi ComboBox представляет собой комбинацию списка строк ListBox со строкой ввода Edit. При этом "список строк" компонента Delphi ComboBox вначале скрыт, и раскрывается при щелчке мышкой по треугольничку раскрытия, который находится справа в строке ввода:
Количество строк, видимых при раскрытии списка, равно DropDownCount. Если реальное количество сохранённых строк больше этого количества, то автоматически появляется полоса прокрутки. Программист может заставить список раскрыться в нужный момент. Для этого нужно свойству DroppedDown присвоить значение True. Для этой же цели пользователь может использовать клавиатурную комбинацию ALT+ВНИЗ. Максимально допустимое количество символов в текстовой строке задаётся параметром MaxLength, причём значение 0 означает отсутствие ограничений. Свойство CharCase управляет преобразованием вводимого текста к верхнему (значение Основными событиями компонента Delphi ComboBox являются:
Обзор компонентов Delphi
В начало урока
Компонент Delphi ScrollBarВопросы и комментарии (33) Решение задач в Delphi
Илья, добавлено 26.12.11, 19:51:17
как при создание ComboBox на программном уровне записать данные в этот список? (стиль csDropDownList), кликаю по нему а он не открывается... (не скомпилировал) Автор, добавлено 27.12.11, 11:52:08 Прочитайте про ListBox, свойства записи в них аналогичны. Ну кому я ссылку давал вверху? Илья, добавлено 28.12.11, 10:54:10 большое спасибо, нашел все, возник еще вопрос: как считать данные из ComboBox? то есть допусти в комбобоксе записаны числа, юзер выбрал 2, мне надо 1. считать из комбобокс то что выбрал юзер, 2. записать в x, предварительно превратив тип числа в (к примеру) integer Автор, добавлено 28.12.11, 14:55:43 То что выбрал пользователь выделяется цветом, и имеет номер ComboBox.ItemIndex. Содержимое этой строки: ComboBox.Items[ComboBox.ItemIndex]; Это значение типа String. Его можно записать в переменную того же типа
Затем его можно преобразовать в Integer:
А чтобы два раза не писать ComboBox пользуемся оператором присоединения with, в зоне действия которого имя компонента можно не указывать, а сразу свойство:
Михаил, добавлено 28.07.12, 12:46:38 Здравствуйте, можете подсказать решение проблемы с dbcombobox( пишу суда, т.к. это самый близкий раздел к теме вопроса). У меня есть табличная база данных с 2мя разделами: name и prise. dbcombobox заполнен значениями name. Так же на форме есть и dbedit в котором должны высвечиваться значения prise. При запуске программы в dbcombobox высвечивается последнее значение базы данных, в dbedit высвечивается соответствующее значение prise, но при выборе другого значения в dbcombobox значение dbedit не менятся. можно ли как-то это исправить? Автор, добавлено 28.07.12, 13:26:37 Терпеть ненавижу БД. Долго пытался забыть как с ними работать. Наконец, получилось. И вспоминать не хочу. Хотя когда-нибудь и придётся. Но не сейчас... Аноним, добавлено 20.10.12, 20:44:33 1 Артем, добавлено 5.06.13, 07:01:03 что означает s[i] Автор, добавлено 5.06.13, 07:27:12 Если S это переменная типа String, то S[i] означает символ, стоящий на i-м месте в переменной S. Отсчитывается от 1 (не от нуля). Артём, добавлено 5.07.13, 19:33:40 Здравствуйте, у меня вопрос,подскажите пожалуйста, как мне объединить combobox.text и combobox.items.text , есть FPath который добавляет пути файлов в combobox.items.append(FPath) и есть combobox.text:= FPath. Мне надо, чтобы при выделении текстового поля и его удаления combobox.text:= FPath , автоматически удалялась строка ComboBox1.Items.Delete(ComboBox1.ItemIndex). Евгений, добавлено 25.09.13, 17:32:07 Здравствуйте подскажите пожалуйста я хочу чтобы по выбору индекса в ComboBox'е показывались или скрывались мемо, но они только скрываются вот код begin If ComboBox1.ItemIndex = 0 Then begin Label11.Visible:=True; Memo3.Visible:=True; end else begin Label11.Visible:=False; Memo3.Visible:=False; end; end; begin If ComboBox1.ItemIndex = 1 Then begin Label11.Visible:=True; Memo3.Visible:=True; end else begin Label11.Visible:=False; Memo3.Visible:=False; end; end; Евгений, добавлено 25.09.13, 17:36:12 В первой процедуре If ComboBox1.ItemIndex = 0 Then begin Label9.Visible:=True; Memo1.Visible:=True; end else begin Label9.Visible:=False; Memo1.Visible:=False; end; end; Евгений, добавлено 25.09.13, 18:03:44 Да только если я добавляю и на другие индексы такой код и мемо не 1, а 2 или 3, то тогда при выборе 1-го индекса мено1 скрывается и прочие тоже У меня 9 индексов код длинный и поэтому я не стал писать его весь. ставлю на событие OnChange в ComboBox'е Автор, добавлено 25.09.13, 18:03:56 Зря не указали в каком событии выполняете данную процедуру. У меня в OnCloseUp всё работает правильно. Автор, добавлено 25.09.13, 18:07:38 Ну вот, теперь всё понятно. В OnChange неправильно работает, так как в этом событии значение ItemIndex не тот, который сейчас выбрали, а предыдущий. Евгений, добавлено 25.09.13, 18:10:49 Но перед 0 ничего нет! как тогда написать? Автор, добавлено 25.09.13, 18:18:20
А если вас беспокоит, что ItemIndex в первый момент не определён, присвойте ему нужное значение, в OnCreate. Евгений, добавлено 25.09.13, 18:30:29 А потом начинать сразу с If ComboBox1.ItemIndex = 2? Автор, добавлено 25.09.13, 18:32:15 Ну да. Событие OnCloseUp Вернёт правильное значение ItemIndex. Евгений, добавлено 25.09.13, 20:04:29 Пришлось для каждого индекса своё мемо ставить и на OnChange так всё работает по другому не получилось! спасибо за помощь. Евгений, добавлено 30.11.13, 18:54:46 Здравствуйте. Подскажите пожалуйста как скрыть в ComboBoxe некоторое количество элементов например если в ComboBox1 выбран элемент 0 тогда в ComboBox2 показывать элементы с 0 10, а если в ComboBox1 выбран элемент 1 тогда в ComboBox2 показывать элементы с 11 20, а если нет выбранных в ComboBox1 тогда скрыть всё. Автор, добавлено 30.11.13, 19:23:04 Нужно не скрывать, а добавлять в пустой combobox те элементы, которые нужно показать. Делается это по событию OnChange первого бокса. Вначале очищаем второй бокс, а затем добавляем только то что нужно. Евгений, добавлено 30.11.13, 19:30:43 А скрыть можно? Автор, добавлено 30.11.13, 20:58:57 Нельзя. Евгений Александрович, добавлено 22.01.14, 11:16:16 Здравствуйте. На форме ComboBox1 со строками: 1 2 3 и ComboBox2 со строками: 3 1 1 procedure TForm1.ComboBox1Change(Sender: TObject); begin ComboBox2.ItemIndex:=ComboBox1.ItemIndex; end; При выборе из ComboBox1 3-го значения, в ComboBox2 выбирается 2-е. Почему не работает? Причём, если б в ComboBox2 2-е и 3-е значения были бы разные, то работало бы... Автор, добавлено 22.01.14, 12:35:01 У меня работает. Именно с вашими строчками. Может, вы не учитываете, что Index отсчитывается от 0? Поэтому, выбирая вторую строку, ItemIndex равен 1. Евгений Александрович, добавлено 22.01.14, 14:44:40 Нет, учитываю. Но при выборе 3-ей строки ComboBox1 (ItemIndex=4), в ComboBox2 тоже ведь должна выбраться строка №3? Ан нет, выбирается вторая. Если добавить ещё подобных строк, то можно заметить, что в ComboBox2 будет выбираться первая сверху строка, значение которой равно значению, той строки, которая должна быть выбрана. Допустим, если в моём примере добавить ещё n строк в ComboBox1 и столько же единичек в ComboBox2, будет всё равно выбираться строка №2, потому что в ней единица встречается первый раз... Delphi у меня седьмая Автор, добавлено 22.01.14, 14:51:53 При выборе 3-й строки ItemIndex=2 а не 4. Сами вот убедитесь: ComboBox2.ItemIndex:=ComboBox1.ItemIndex; Caption:=IntToStr(ComboBox2.ItemIndex); Евгений Александрович, добавлено 22.01.14, 15:10:03 Ой. Да ItemIndex=2. А про всё остальное? Почему строка ComboBox1 не равна строке ComboBox2? Автор, добавлено 22.01.14, 15:19:42 Да почему не равны??? Равны. Ну сравните ItemIndex'ы. Вы щёлкаете по последней (3-й) строке, в заголовке высвечивается 2, в тексте 2-го бокса - 1. 1 - это же содержимое 3-й (последней) строки 2-го бокса, или нет? Евгений Александрович, добавлено 22.01.14, 16:25:00 Да. Но это также содержимое и 2-й строки и когда я открываю список 2-го бокса, видно, что выделена именно 2-я строка, а не 3-я. Автор, добавлено 22.01.14, 17:11:28 Я понял. Вы говорите о выделении цветом, а не об изменении ItemIndex. ItemIndex'ы совпадают, а вот почему цветом выделяется другая строка... Возможно, таков алгоритм выделения цветом строки - находит первую строку, где значение совпадает с искомым, и выделяет её. Я пробовал и на 4 строках, похоже так. Автор, добавлено 22.01.14, 17:15:32 Если взять 4 строки 4 1 3 1 и поставить кнопку и написать ComboBox2.ItemIndex:=3;//последняя строка то цветом будет выделена 2 строка - там значение совпадает с 4 строкой. |
|