Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TPropertyEditor (https://www.delphipraxis.net/48012-tpropertyeditor.html)

Pseudemys Nelsoni 19. Jun 2005 13:01


TPropertyEditor
 
Moin,

ich habe schon ALLES hier im Forum gelesen was TPropertyEditor angeht, falls gleich kommt "Suche benutzen", hab auch deren Links zu anderen (englischen) Seiten gelesen usw...

Aber irgendwie kapier ichs immernoch nicht, mal steht da was von 2 Packages und in extra unit packen usw, aber irgendwie werd ich da nicht schlau draus, auch nicht aus den Methoden die man da überschreibt, z.b diese:

Delphi-Quellcode:
  function TFileNameProperty.GetAttributes: TPropertyAttributes;
  begin
    Result := [paDialog]
  end {GetAttributes};
Kann mir jemand genau beschreiben wie ich einen einfach Info Dialog erstelle, den ich vom OI aus aufrufen kann?

SirThornberry 19. Jun 2005 13:24

Re: TPropertyEditor
 
wann soll denn der Info-Dialog kommen? bei einem Doppelklick auf die Komponente (wäre ein Component-Editor) oder beim klick auf "..." bei einem Property. Und wozu einen Info-Dialog? Property-Editoren sind dazu da properties zu verändern...
Am besten du sagst mal was du überhaupt vorhast...

Pseudemys Nelsoni 19. Jun 2005 13:32

Re: TPropertyEditor
 
moin SirThornberry,

ich möchte natürlich keinen Info-Dialog, aber ich denke soetwas wäre vielleicht am einfachsten zu erklären....

Also es ist so,

ich brauche eine Property die ca so aussieht:

Zitat:

[MeineProperty [...]]
Bei einem klick auf den "[...]" Button soll sich ein von mir erstellter Dialog mit einem Listview öffnen, in dem man verschiedene Sachen eintragen kann.
So sollte die ListView ca aussehen:

http://80.171.82.129/prop.JPG


Hast du ne Idee wie ich das machen könnte?

SirThornberry 19. Jun 2005 13:39

Re: TPropertyEditor
 
also gehts um einen PropertyEditor.
Am besten du legst dir erstmal ein neues Form an für deinen Propertyeditor und baust dieses so das es voll funktionsfähig ist. Wenn du dies fertig hast kannst du dann daran gehen das ganze als property-editor zu registrieren.

Delphi-Quellcode:
unit uPropertyEditors;

interface

uses
  DesignEditors, DesignIntf, TheUnitOfYourComponent;

type
  TYourPropertyEditor = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;


implementation

procedure Register;
begin                   //If it's an Integer Property
  RegisterPropertyEditor(TypeInfo(integer), TYourComponent, 'YourPropertyName', TYourPropertyEditor);
end;


procedure TYourPropertyEditor.Edit;
var LObj: TYourComponent;
    LEditForm: TYourEditForm;
begin
  if (GetComponent(0) is TYourComponent) then
  begin
    LObj := TYourComponent(GetComponent(0));
    //Now You can do something with LObj
    //For exampel you can show a form for Editing
    {
    LEditForm := TYourEditForm.Create(nil);
    if LEditForm.ShowModal = mrOK then
    begin
      LObj.YourPropertyName := EditingForm.Value;
      //If the Property has Changed
      Self.Designer.Modified;
    end;
    LEditForm.Free;
    }
  end;
end;

function TYourPropertyEditor.GetAttributes: TPropertyAttributes;
begin
   Result := [paMultiSelect, paDialog, paRevertable];
end;

end.

Pseudemys Nelsoni 19. Jun 2005 13:41

Re: TPropertyEditor
 
Besten Dank :)

Edit: Schaut super aus, danke für deine Mühe :)

Noch ein paar Fragen:

wozu ist der erste Parameter von "RegisterPropertyEditor"? eine Property könnte ja auch strings UND integer enthalten, oder?

Was ist GetComponent(), bzw was ist die 0 darin? in der Hilfe steht das es ein Index sei, aber auf was bezieht sich der?

MfG

SirThornberry 19. Jun 2005 14:23

Re: TPropertyEditor
 
Mit dem "GetComponent(0)" wird die Instanz zur aktuellen Componente geholt. Wenn du mehrere Componenten markierst solltest du über "GetComponent" alle markierten Componenten ansprechen können. In diesem beispiel wird nur die erste Componenten editiert. Über "PropCount" solltest du die Anzahl der markierten Componenten herausfinden können. Der Erste Parameter bei "RegisterPropertyEditor" gibt den Typ an. Je nach dem um welchen Typ es sich handelt musst du da eben was anderes hinschreiben (die Hilfe ist dein Freund)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.

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