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

Заполнение ComboBox перечислениями ролей из MySQL в Delphi

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

Вопрос пользователя связан с необходимостью заполнения компонента ComboBox данными из перечисления ролей, хранящихся в базе данных MySQL, и работы с этими данными в контексте приложения на Delphi. Пользователь имеет перечисление TRole, содержащее два значения: Admin и Common, и хочет отобразить их в ComboBox как "Administrator" и "Common User" соответственно. При сохранении данных в базу, значения должны быть записаны как 0 для роли Admin и 1 для роли Common.

Решение проблемы

Для решения задачи можно использовать функцию EnumAsText, которая будет возвращать строковое представление перечисления, и функцию FillComboBox, которая заполнит ComboBox соответствующими значениями. Вот пример реализации:

function EnumAsText(const pEnum: TRole): string;
const
  cResults: array[TRole] of string =
  (
    {Admin}            'Administrator',
    {Common}           'Common User'
  );
begin
  Result := cResults[pEnum];
end;

procedure FillComboBox(const pComboBox: TComboBox);
var
  iRole: TRole;
begin
  pComboBox.Items.Clear;
  for iRole := low(TRole) to Hi(TRole) do
  begin
    pComboBox.Items.Add(EnumAsText(iRole));
  end;
end;

При этом индекс элемента ComboBox будет соответствовать числовому значению роли в базе данных.

Сохранение данных в базу

Для сохранения выбранного значения из ComboBox в базу данных можно использовать свойство ItemIndex. Например, при сохранении данных:

if RoleComboBox.ItemIndex in [0..1] then
begin
  // Сохранение данных в базу
  Query.SQL.Text := 'update table set Role = :Role where ID = :ID';
  Query.ParamByName('Role').AsInteger := RoleComboBox.ItemIndex;
  Query.ExecSQL;
end
else
  raise Exception.Create('Invalid role index');

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

Также можно заполнить ComboBox напрямую, не используя перечисление, а просто добавив строки, соответствующие ролям:

procedure PopulateComboBox(const cb: TComboBox);
begin
  cb.Clear;
  cb.Items.Add('Administrator'); // ItemIndex = 0
  cb.Items.Add('Common User'); // ItemIndex = 1
  cb.Style := csDropDownList; // Установка стиля ComboBox
end;

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

Заключение

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

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

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


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

Получайте свежие новости и обновления по 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-05 13:56:41/0.003432035446167/0