Следующий код взят из 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;
|
|