Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Eigenschaft im Property-Editor ausblenden
RainerT - Fr 12.09.03 18:46
Titel: Eigenschaft im Property-Editor ausblenden
Ums vorweg zu nehmen:Ich bin relativ neu in das Thema Komponenten-Entwicklung eingestiegen...
Jetzt habe ich eine Komponente entwickelt, die letztendlich von TScrollBox abgelitten ist. Dadruch habe ich im Property-Editor immer die Eigenschaften "HorzScrollBar" und "VertScrollBar". Die müssen aber immer zwingend auf Visible=False stehen, sonst sieht meine Kompoente recht bescheiden aus. Daher wäre es am besten, wenn ich diese Eigenschaften gar nicht erst angezeigt bekäme.
Wie ich neue Eigenschaften in den Property-Editor reinkriege habe ich jetzt raus. Aber jetzt möchte ich gerne eine ausblenden. Wie mache ich das?
RainerT - So 14.09.03 15:52
War die Frage so dämlich oder weiß das wirklich keiner? Oder geht das nicht?
barfuesser - Mo 15.09.03 09:15
Hi,
Du mußt die Properties mit einer geringeren Sichtbarkeit (also als public, protected oder private) redeklarieren.
barfuesser
RainerT - Mo 15.09.03 09:36
Habe ich. Geht trotzdem nicht. Oder ich habe es nicht richtig gemacht. Wenn ich das mal kurz demonstrieren darf:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| TNewCompontent = class(TScrollBox) private FEigenschaft : Integer; procedure SetEigenschaft(const Value: integer); function GetEigenschaft: Integer; protected property HorzScrollBar; published Constructor Create(AOwner : TComponent);override; Property Eigenschaft: Integer read GetEigenschaft write SetEigenschaft; end; |
Damit habe ich meiner TNewComponet zwar eine neue Eigenschaft ("Eigenschaft") verpasst, die ich auch über den Property-Editor prima setzen kann.
Aber eigentlich hatte ich gehofft, dass die Eigenschaft "HorzScrollbar" dann auch aus dem Property-Editor verschwindet, weil ich Sie doch potected habe.
Tut aber nicht...
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
barfuesser - Mo 15.09.03 09:45
Hi,
also ich habe mir noch mal die Onlinehilfe dazu durchgelesen. Man kann durch überschreiben der property die Sichtbarkeit nicht herabsetzen. Eigentlich schade. Aber Du könntest mal versuchen, ob es durch verdecken der property möglich ist. Dazu mußt Du die Property unter Angabe des Types komplett neu deklarieren.
barfuesser
Klabautermann - Mo 15.09.03 10:37
Hallo,
aus Vererbungstechnischen gründen geht dies nicht. Denn eine Kind-Objekt muss immer alle Schnitstellen enthalben, die auch der vorfahr hat. Wenn du da einfach eine public/published Variable als private/protected redefinieren könntest dan würde der ganze komplex der Polimorphie nicht mehr sinvoll funktioniernen.
Du wirst also damit leben müssen.
Gruß
Klabautermann
maximus - Mo 15.09.03 13:56
für diesen zweck sind die 'custom' klassen vorgesehen, in denen die properties eine geringe sichtbarkeit haben und die man dann für die echte compo freischaltet.
glaub aber nicht, dass es für scrollbox ein TCostumScrollbox gibt!?
Klabautermann - Mo 15.09.03 14:27
Hallo,
maximus hat folgendes geschrieben: |
glaub aber nicht, dass es für scrollbox ein TCostumScrollbox gibt!? |
das ist das Problem. Zu vielen Komponenten, wie dieser gibt es keine Custom kasse :(.
Gruß
Klabautermann
barfuesser - Mo 15.09.03 14:28
versuch mal statt:
RainerT hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| TNewCompontent = class(TScrollBox) private FEigenschaft : Integer; procedure SetEigenschaft(const Value: integer); function GetEigenschaft: Integer; protected property HorzScrollBar; published Constructor Create(AOwner : TComponent);override; Property Eigenschaft: Integer read GetEigenschaft write SetEigenschaft; end; | |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| TNewCompontent = class(TScrollBox) private FEigenschaft : Integer; procedure SetEigenschaft(const Value: integer); function GetEigenschaft: Integer; function getHorzScrollBar: TControlScrollBar; procedure setHorzScrollBar(Value: TControlScrollBar); protected property HorzScrollBar: TControlScrollBar read getHorzScrollBar write setHorzScrollBar; published Constructor Create(AOwner : TComponent);override; Property Eigenschaft: Integer read GetEigenschaft write SetEigenschaft; end; |
mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function TNewComponent.getHorzScrollBar: TControlScrollBar; begin Result := inherited HorzScrollBar; end;
procedure TNewComponent.setHorzScrollBar(Value: TControlScrollBar); begin if inherited HorzScrollBar <> Value then inherited HorzScrollBar := Value; end; |
also verdecken statt überschreiben.
nicht getestet!
barfuesser
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!