2

Delphi 2010コンポーネントのフォルダ(ディレクトリ)プロパティエディタを作成するにはどうすればいいですか?

コンポーネントのフォルダ(ディレクトリ)プロパティエディタを作成するにはどうすればよいですか?

私は簡単に使用してFileNameプロパティのための1つを作成することができました。私はそれは私が登録するクラスを作成する必要があると思うと、alittleがより多くの仕事を取り、何とかselDir APIを呼び出すかもしれないと思う

TFileProperty = class(TStringProperty) 
public 
    function GetAttributes: TPropertyAttributes; override; 
    procedure Edit; override; 
end; 

RegisterPropertyEditor(TypeInfo(TFileName),nil, '', TFileProperty); 

を他の誰かが何か良いを考え出すことができない限り、任意のヘルプルーチンまたは何か

おかげで、あなたは、私が動作するように何かを得たと思う

答えて

3

を提供することがあります

type 
    TFolderName = String; 

    TFolderNameProperty = class(TStringProperty) 
    public 
    function GetAttributes: TPropertyAttributes; override; 
    procedure Edit; override; 
    end; 

function TFolderNameProperty.GetAttributes: TPropertyAttributes; 
begin 
    Result := [paDialog] 
end {GetAttributes}; 

procedure TFolderNameProperty.Edit; 
var 
    Dir: String; 
begin 
    SelectDirectory('Select a directory', '', Dir) 
    SetValue(Dir); 
end {Edit}; 

procedure Register; 
begin 
    RegisterPropertyEditor(TypeInfo(TFolderName),nil, '', TFolderNameProperty) 
end; 
+5

プロパティタイプの定義を以下のように変更します: 'TFolderName = type string'。これにより、新しいRTTI型は、組み込みの 'string'型のものとは区別されます。これがなければ、プロパティエディタは 'TFolderName'として宣言されたものだけでなく、すべての' string 'プロパティに適用されます。 'TFileName'と比較してください。 –

+0

@Robが言ったことに加えて、(それが空の文字列にあっても)Dirを使用する前に(ちょっとした習慣として)初期化し、2)呼び出しの結果を確認するDirを使用してプロパティを設定する前に、SelectDirectory()を呼び出します。 SelectDirectoryは、ディレクトリが選択されたか、ダイアログがキャンセルされたかを示すブール値を返します。 –

関連する問題