Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Propertyeditor für "Path" (https://www.delphipraxis.net/162232-propertyeditor-fuer-path.html)

stahli 13. Aug 2011 21:13

Propertyeditor für "Path"
 
Ich habe eine Komponente mit einer Eigenschaft Path (String).
Wie kann ich am leichtesten einen passenden Propertyeditor zur Path-Auswahl zuweisen?

Muss ich den selbst erstellen (ich weiß, wie das geht) oder gibt es nicht doch eine fertige Variante, die das realisiert?
Ein Test mit dem Typ TFileName brachte noch nichts.

Ich hatte gehofft, es gäbe z.B. TPathName mit zugeordnetem Eigenschaftseditor.

DeddyH 13. Aug 2011 21:14

AW: Propertyeditor für "Path"
 
Darf man nach dem Sinn fragen? Der Pfad kann doch auf jedem Rechner anders sein, falls es um irgendwelche Systempfade gehen sollte.

stahli 13. Aug 2011 21:26

AW: Propertyeditor für "Path"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich weise einen Pfad zu, der zur Designtime verwendet wird.
Um das komfortabler zu machen, möchte ich ein Auswahlformular (Propertyeditor) zuweisen.
Ich kann das ohne weiteres selbst machen, hatte aber gedacht, für eine Pfadauswahl müsste es eine fertige Lösung geben...!?

geskill 13. Aug 2011 21:37

AW: Propertyeditor für "Path"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Huhu habe gerade bisschen in den Komponenten gestöbert und TIBDatabaseINI macht genau das was du suchst denke ich. Komisch ist aber, dass intern die property FileName als String deklariert ist oO.

EDIT: sehe gerade du brauchst NUR den Pfad. Hmm ich glaub dann hilft dir dies nicht so viel.

stahli 13. Aug 2011 21:47

AW: Propertyeditor für "Path"
 
Ja, genau so meinte ich das. Und nur für den Pfad.
Falls niemand eine Idee hat, muss ich es eben mal selbst machen. Ist ja nicht schwer, aber die Arbeit würde ich mir trotzdem gern sparen.

Edit: @geskill
Einen Eigenschaftseditor kann man für einen Typ, eine Klasse und/oder einen Eigenschaftsnamen zuweisen.
Es kann also ein Editor für eine Property Namens FileName der Klasse TMyClass zugewiesen werden, auch wenn die Eiugenschaft ein einfacher String ist.
Oder man kann einen Editor an den Typ TPathName binden, der dann für alle Eigenschaften aller Klassen zugewiesen wird, wenn sie von diesem Typ sind.

stahli 16. Aug 2011 09:23

AW: Propertyeditor für "Path"
 
*push*
(falls doch noch jemand eine Idee hat)

Stevie 16. Aug 2011 10:19

AW: Propertyeditor für "Path"
 
Folgende Unit in ein Designtime Package und du hast für die InitialDir property des TOpenDialog einen Ordnerauswahldialog.

Delphi-Quellcode:
unit PropertyPathEditor;

interface

uses
  DesignEditors,
  DesignIntf;

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

procedure Register;

implementation

uses
  Dialogs,
  FileCtrl;

procedure Register;
begin
  RegisterPropertyEditor(TypeInfo(string), TOpenDialog, 'InitialDir', TPathProperty);
end;

{ TPathProperty }

procedure TPathProperty.Edit;
var
  LPath: string;
begin
  LPath := GetValue();
  if SelectDirectory('', '', LPath, [sdNewFolder, sdNewUI, sdValidateDir]) then
  begin
    SetValue(LPath);
  end;
end;

function TPathProperty.GetAttributes: TPropertyAttributes;
begin
  Result := inherited GetAttributes + [paDialog];
end;

end.

stahli 16. Aug 2011 10:26

AW: Propertyeditor für "Path"
 
Ok danke.
Ich dachte, ich hätte einen Typ (ähnlich TPathName) übersehen, für den dies standardmäßig registriert ist...

Stevie 16. Aug 2011 10:47

AW: Propertyeditor für "Path"
 
Zitat:

Zitat von stahli (Beitrag 1117180)
Ok danke.
Ich dachte, ich hätte einen Typ (ähnlich TPathName) übersehen, für den dies standardmäßig registriert ist...

Kannste selber machen.
Delphi-Quellcode:
type
  TPathName = type string;

....

procedure Register;
begin
  RegisterPropertyEditor(TypeInfo(TPathName), nil, '', TPathProperty);
end;
Sollte auch kein Problem sein, den Code im Edit so zu ändern, dass ein relativer Pfad gespeichert wird, so dass zum Beispiel ein anderer Entwickler oder du selber auf einem anderen Rechner oder in einem anderen Projektverzeichnis immernoch damit arbeiten können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz