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

Использование перечислимых констант

Delphi , Компоненты и Классы , Свойства и События

Использование перечислимых констант

Автор: Dan Miser(Med Data Systems, Inc.)

В Инспекторе Объектов я пытаюсь получить раскрывающийся список для моего перечислимого типа...

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


type
  TBaudRateProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
    function GetValue: string; override;
    procedure SetValue(const Value: string); override;
  end;

  ...

type

  TBaudRate = (br110, br300, br600, br1200, br2400, br4800, br9600, br14400,
    br19200, br38400, br56000, br128000, br256000);
const
  BaudList: array[TBaudRate] of string[7] =
  ('110', '300', '600', '1200', '2400', '4800', '9600', '14400', '19200',
    '38400', '56000', '128000', '256000');

{TBaudRateProperty}

function TBaudRateProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paValueList];
end;

procedure TBaudRateProperty.GetValues(Proc: TGetStrProc);
var
  i: TBaudRate;
begin
  for i := Low(TBaudRate) to High(TBaudRate) do
    Proc(BaudList[i]);
end;

function TBaudRateProperty.GetValue: string;
begin
  Result := BaudList[TBaudRate(GetOrdValue)];
end;

procedure TBaudRateProperty.SetValue(const Value: string);
var
  i: TBaudRate;
begin
  for i := Low(TBaudRate) to High(TBaudRate) do
    if BaudList[i] = Value then
    begin
      SetOrdValue(integer(i));
      EXIT;
    end;
  inherited SetValue(Value);
end;

Этот код-снippet демонстрирует использование пользовательского редактора свойств для отображения списка значений перечисленных типов в Object Inspector Delphi.

Класс TBaudRateProperty наследуется от TStringProperty и переопределяет несколько методов, чтобы обеспечить необходимую функциональность для этого пользовательского свойства:

  • GetAttributes: Возвращает массив TPropertyAttributes, который указывает, имеет ли свойство список значений, в этом случае - paValueList.
  • GetValues: Пополняет процедуру обратного вызова всеми значениями из перечисленного типа TBaudRate.
  • GetValue: Возвращает строковое представление текущего значения на основе массива BaudList.
  • SetValue: Обновляет значение свойства, найдя соответствие в массиве BaudList и установив его как новое значение.

Константа BaudList - это массив, который maps каждый перечисленный тип TBaudRate к его строковому представлению. Это позволяет пользовательскому редактору свойств отображать эти значения для пользователя.

Вот несколько предложений по улучшению:

  1. Метод SetValue мог быть оптимизирован с помощью хэш-таблицы или словаря вместо итерации над всеми возможными значениями в массиве.
  2. Если вы планируете использовать это свойство редактора с другими типами, рассмотрите возможность сделать его более общим, введя параметры типа и используя более абстрактные методы, такие как GetValuesProc, вместо жесткого кодирования типа.
  3. Код не обрабатывает недопустимые входные данные (например, пустую строку). Вам может потребоваться добавить проверки для этого в методе SetValue.

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

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


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

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




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


:: Главная :: Свойства и События ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 05:48:04/0.0061531066894531/0