Announcement

Collapse
No announcement yet.

Referenz auf Objekt gleichen Typs / sowie Vererbung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Referenz auf Objekt gleichen Typs / sowie Vererbung

    Bei einer Komponenten möchte ich eine Referenzbeziehung zu
    einer anderen Komponenten <b>gleichen Typs</b> hinterlegen.</p>

    TVorfahr=<b>class</b>(TComponent)</br>
    <b>private</b></br>
    FRefControl: ???; //hier TVorfahr</br>
    <b>published</b></br>
    RefControl: ??? <b>read</b> FRefControl <b>write</b> FRefControl;</br>
    <b>end</b>;</p>

    Die Bedingung &quot;gleichen Typs&quot; soll auch dann
    gelten, wenn eine Klasse von TVorfahrKomp abgeleitet wird, mit anderen Worten:</p>

    Für TNachkomme=class(TVorFahr) müßte RefControl vom Typ TNachkomme sein.</p></p>

    Ist eine &quot;dynamische&quot; Typzuweisung bereits in der Definition von TVorfahr möglich?</p>

    MFG Uwe

  • #2
    Ja

    <pre>

    type
    TVorfahr = class
    private
    FRef: TVorfahr;
    function SetRef(Value: TVorfahr);
    published
    property Ref: TVorfahr read FRef write SetRef;
    end;<br>

    procedure TVorfahr.SetRef(Value: TVorfahr);
    begin
    if Value <> FRef then
    begin
    if (Value <> nil) and (Value.ClassType <> ClassType) then
    raise Exception.Create('Ref muss vom typ ' + ClassName + ' sein');
    FRef := Value;
    end;
    end;<br>

    </pre>

    Gruß Hage

    Comment


    • #3
      Besten Dank,</p>

      Wenn ich die Einstellung über den Objektinspektor vornehmen möchte,</p>
      1. wie kann ich jene Komponenten ausblenden, welche nur vom Typ TVorfahr abstammen?</br>
      2. wie kann ich mich selbst ausblenden?</p>

      MFG Uw

      Comment


      • #4
        Hi

        1.) Du musst einen eigenen Eigenschafteditor abgeleitet von TClassPropertyEditor schreiben und diesen dann mit RegisterPropertyEditor() registrieren.<br>

        2.) Hm, nimm ne 45'er Magnum, halt sie an den Kopf und drück ab ))
        Ne, Spaß beiseite: wie im Punkt 1.) beschrieben kannste mit so einem Editor dann jede beliebige Filterung vornhemen, da Du nämlich dann für das Erstellen aller möglichen Einträge in der Dropdownliste zuständig wirst. Ein zusätzliches Feature ist das Du ohne weiteres die angezeigten Listbox Texte bestimmen kannst, es muss also NICHT der Componentname sein.

        Gruß Hage

        Comment

        Working...
        X