Combobox delphi добавить строку

Компонент Delphi ComboBox представляет собой комбинацию списка строк ListBox со строкой ввода Edit. При этом "список строк" компонента Delphi ComboBox вначале скрыт, и раскрывается при щелчке мышкой по треугольничку раскрытия, который находится справа в строке ввода:

Таким образом, с помощью Delphi ComboBox место на Форме экономится для расмещения других элементов интерфейса программы. А при необходимости раскрытие списка строк можно вообще запретить.

Многие свойства и возможности компонента Delphi ComboBox по работе со строками (объектами Items) такие же как и у компонента Delphi ListBox, поэтому повторно описывать их не буду. Опишу отличия и дополнительные возможности.

Итак, за возможность раскрытия компонента ComboBox отвечает стиль — свойство Style:

Стиль компонента ComboBox1 равен
ComboBox1.Style = csDropDown
(список может быть раскрыт, можно писать в строке ввода)

Стиль компонента ComboBox2 равен
ComboBox1.Style = csSimple
(список не может быть раскрыт, можно писать в строке ввода)

При стиле csDropDownList компонент может быть раскрыт, но свойство Text может принимать значения только одной из строк, сохранённых в компоненте, то есть пользователь лишён возможности писать в строке ввода.
Количество строк, видимых при раскрытии списка, равно DropDownCount. Если реальное количество сохранённых строк больше этого количества, то автоматически появляется полоса прокрутки. Программист может заставить список раскрыться в нужный момент. Для этого нужно свойству DroppedDown присвоить значение True. Для этой же цели пользователь может использовать клавиатурную комбинацию ALT+ВНИЗ.

Максимально допустимое количество символов в текстовой строке задаётся параметром MaxLength, причём значение означает отсутствие ограничений. Свойство CharCase управляет преобразованием вводимого текста к верхнему (значение ) или нижнему (значение ) регистру. Значение ecNormal означает, что текст вводится без преобразования.

Основными событиями компонента Delphi ComboBox являются:

Событие Условие генерации
OnChange Изменился текст в строке ввода.
OnDropDown Список раскрывается. Это событие нужно обработать, если содержимое списка может изменяться во время работы программы. Тогда в обработчике этого события можно заново сформировать содержимое списка.

Обзор компонентов Delphi В начало урока Компонент Delphi ScrollBar

Илья, добавлено 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. Содержимое этой строки:

Читайте также:  Continue not properly in loop

Это значение типа String. Его можно записать в переменную того же типа

var S: String;

S:=ComboBox.Items[ComboBox.ItemIndex];

Затем его можно преобразовать в Integer:

var N: Integer;

N:=StrToInt(ComboBox.Items[ComboBox.ItemIndex]);

А чтобы два раза не писать ComboBox пользуемся оператором присоединения with, в зоне действия которого имя компонента можно не указывать, а сразу свойство:

with ComboBox do
begin //Между begin и end ComboBox можно не писать. Но если оператор там всего один, то begin/end необязательны.
N:=StrToInt(Items[ItemIndex]);
end; Михаил, добавлено 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

Читайте также:  Oriel 750 не включается горит зеленый светодиод

procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
If ComboBox1.ItemIndex = 0 Then
begin
Memo1.Visible:=True;
end
else
begin
Memo1.Visible:=False;
end;
end;

А если вас беспокоит, что 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 строки

Читайте также:  Установка андроид в авто

и поставить кнопку и написать

то цветом будет выделена 2 строка — там значение совпадает с 4 строкой.

Иерархия наследования

Описание

Компонент ComboBox представляет собой комбинированный список, объединяющий функции компонентов ListBox и EditBox.

Работа с компонентом

Компонент позволяет пользователю выбрать значение из списка или задать собственное.

Отличие компонента ComboBox от схожего по функциям компонента ListBox заключается в следующем:

ComboBox разрешает пользователю вводить собственные значения;

ComboBox может быть как развернутым, так и свернутым (ListBox всегда развернут);

ComboBox не допускает множественного выбора.

Основное свойство компонента — Items. Заполнить данный список можно во время разработки (проектирования) формы, для этого следует нажать кнопку с многоточием около свойства в окне « Инспектор объектов » либо в контекстном меню компонента выбрать пункт « Элементы ».

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

Стиль отображения компонента определяется свойством Style.

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

Индекс выбранного пользователем элемента можно определить по значению свойства ItemIndex.

Компонент Delphi ComboBox представляет собой комбинацию поля редактирования (Edit) и список (ListBox), что дает возможность ввести данные путем набора на клавиатуре или выбора из списка. Работа с ComboBox почти не отличается от работы со списком ListBox. Отличие заключается только тем, что можно выбрать один элемент списка и данный элемент отображается в поле редактирования списка (в свойстве Text). Компонент ComboBox дает возможность сделать пользователю выбор необходимой строки или прописать свою строку в качестве выбора(рис 1).

При нажатии на стрелку появляется выпадающий список похожий ListBox. С помощью компонента ComboBox место на форме программы экономится для размещения других элементов. При необходимости раскрытие можно вообще запретить с помощью свойства Style описанном ниже.