Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обработка строк в ComboBox Delphi: использование словарей для связки отображаемых и внутренних значений

Delphi , Базы данных , SQL

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

Подготовка к решению

Для начала, добавим в наш форму TForm1 переменную FLookUp типа TDictionary<string, Integer>, которая будет использоваться для хранения связей между отображаемыми значениями и их внутренними индексами.

TForm1 = class(TForm)
  ...
private
  FLookUp: TDictionary<string, Integer>;
  ...
end;

Создание и уничтожение словаря

Далее, в событиях FormCreate и FormDestroy создадим и уничтожим наш словарь.

procedure TForm1.FormCreate(Sender: TObject);
begin
  FLookUp := TDictionary<string, Integer>.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FLookUp.Free;
  inherited;
end;

Заполнение ComboBox

Теперь, в процессе заполнения ComboBox, мы будем сохранять индексы отображаемых элементов и связывать их с внутренними значениями.

procedure TForm1.FillCombo;
var
  Index, I: Integer;
begin
  FLookUp.Clear;
  for i := Low(_VerkaufTypenBez) to High(_VerkaufTypenBez) do
  begin
    Index := CBBelegart.Items.Add(VerkaufTypenBez[i]);
    FLookUp.Add(VerkaufTypenShort[i], Index);
  end;
end;

Поиск индекса по значению

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

function TForm1.GetIndexOfString(const Value: string): Integer;
begin
  if not FLookUp.TryGetValue(Value, Result) then
    Result := -1;
end;

Использование словаря

Пример использования функции GetIndexOfString для установки индекса в ComboBox:

CB.ItemIndex := GetIndexOfString(SetIndexWithSQL(...));

Альтернативный подход

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

function GetIndexFromShortString(const Value: string): Integer;
begin
  for Result := Low(_VerkaufTypenBez) to High(_VerkaufTypenBez) do
    if VerkaufTypenShort[Result] = Value then
      exit;
  Result := -1;
end;

Заключение

Использование словарей в Delphi для связывания отображаемых и внутренних значений в ComboBox является эффективным и удобным способом организации данных. Это позволяет избежать сложностей, связанных с динамическим изменением данных и упрощает процесс поиска и обработки информации.

Создано по материалам из источника по ссылке.

одним предложением В статье рассматривается использование словарей для связывания отображаемых значений в ComboBox с внутренними идентификаторами в среде разработки Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-10 16:40:32/0.003648042678833/0