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