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

Свойство FileName в невизуальном компоненте

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

Свойство FileName в невизуальном компоненте

Следующий код взят из dsgnintf.pas (иногда стоит покопаться в файлах!) для свойства TMPLayer.filename, с помощью C.Calvert..

В заголовке модуля компонента...


TFileNameProperty = class (TStringProperty)
  public
    function getattributes: TPropertyattributes; override;
    procedure Edit; override;
end;

добавьте функцию регистрации...


RegisterPropertyEditor(Typeinfo(String),
TMyComponent, 'Filename', TFileNameProperty);

и код...


function TFileNameProperty.GetAttributes;
begin
  Result := [paDialog];
end;

Procedure TFilenameProperty.edit;
var
  MFileOpen: TOpenDialog;
begin
  MFileOpen := TOpenDialog.Create(Application);
  MFileOpen.Filename := GetValue;
  MFileOpen.Filter := 'Правильный тип файлов|*.*'; (* Поместите здесь ваш собственный фильтр...*)
  MFileOpen.Options := MFileOpen.Options + [ofPathMustExist,ofFileMustExist];
  try
    if MFileOpen.Execute then 
      SetValue(MFileOpen.Filename);
  finally
    MFileOpen.Free;
  end;
end;

Код, который вы предоставили, - это кастомный редактор свойств для компонента TMPLayer в Delphi, специально разработанный для обработки свойства FileName. Редактор свойств реализован с помощью класса TStringProperty и переопределяет его методы GetAttributes и Edit.

Следующий разбор кода:

  • TFileNameProperty = class(TStringProperty): эта строка объявляет новый класс TFileNameProperty, который наследуется от TStringProperty.
  • Метод GetAttributes возвращает массив атрибутов свойства. В этом случае, он возвращает [paDialog], что означает, что редактор свойств будет отображать диалоговое окно при редактировании свойства.
  • Метод Edit переопределяется для реализации кастомного поведения редактора свойств. Он создает экземпляр класса TOpenDialog и настраивает его свойства:
    • Filename: устанавливается в текущее значение свойства FileName, полученное с помощью метода GetValue.
    • Filter: настраивается для конкретного типа файлов ('Правильный тип файлов|*.*') для ограничения файлов, отображаемых в диалоговом окне. Вы можете заменить это на свой собственный кастомный фильтр.
    • Options: настраивает параметры диалогового окна, включая:
      • ofPathMustExist: обеспечивает, что только существующие директории отображаются.
      • ofFileMustExist: обеспечивает, что только существующие файлы отображаются.
  • Метод Edit затем выполняет экземпляр класса TOpenDialog, используя его метод Execute. Если пользователь выбирает файл и нажимает на кнопку "Открыть", выбранный файловый путь сохраняется в свойстве FileName, используя метод SetValue.

Для регистрации этого кастомного редактора свойств вам нужно добавить следующий код:

  • RegisterPropertyEditor(Typeinfo(String), TMyComponent, 'Filename', TFileNameProperty);

Эта строка регистрирует класс TFileNameProperty как редактор свойства для типа String и компонента TMyComponent, с именем 'Filename'.

В целом, этот кастомный редактор свойств обеспечивает удобный способ редактирования свойства FileName вашего компонента TMPLayer, позволяя пользователям просматривать и выбирать файлы с помощью диалогового окна.

Свойство FileName в невизуальном компоненте позволяет пользователю выбрать файл с помощью диалогового окна 'Открыть' для задания значения свойства.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:04:34/0.0052139759063721/1