ich moechte bei einer abgeleiteten Klasse einige Properties aus dem Objektinspektor loswerden, da sie der User (= mein alter ego) nicht mehr aendern sollte:
kann sein, das ich mir Ieere, aber da müstest du ggf alle Vorgänger ändern, oder gleich eine "Private Unit Ordner anlegen", und die kopieren und von TObjekt auf ändern. und das ist auf jeden Arbeit ohne ende, als nix, was am ende Meiner Meinung nach den Aufwand rechtfertigt.
Hab das mal unter Delphi gemacht. ü 4 wochen inkl. fehlersuche und co...
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache und der Kreis Segeberg meine LIEBE
ich moechte bei einer abgeleiteten Klasse einige Properties aus dem Objektinspektor loswerden, da sie der User (= mein alter ego) nicht mehr aendern sollte:
TMyGrid = class(TStringGrid)
private
property ColCount;
property FixedCols;
property FixedRows;
property Scrollbars;
public
// ...
published
// ...
end;
Funktioniert aber leider nicht ... was mache ich hier falsch?
Andersrum wird ein Schuh draus: von TCustomStringGrid ableiten, und alle Properties, die im Objectinspector erscheinen sollen unter published aufführen.
Eclipticon hat geschrieben:Bedeutet: Ein Property Override geht nur in Richtung mehr Sichtbarkeit?
Genau. Deswegen gibt's von so ziemlich allen visuellen Controls eine Custom-Variante, die die komplette Funktionalität beinhaltet, aber diverse Properties nicht veröffenlicht (in deinem Fall: TCustomStringGrid). In der eigentlichen TStringGrid-Implementation passiert dann nicht viel mehr als das veröffentlichen der entsprechenden Properties.
Use the source, Luke (STRG-Linksklick auf TStringGrid)!
Du kannst die Sichtbarkeit der Eigenschaften leider nur hinaufsetzten. Nicht herunter. Das heißt:
Wenn du eine Eigenschaft im Public Bereich hast und möchtest dies wieder verstecken, kannst du sie nicht in der Nachfolge Klasse einfach im Private Bereich dekalieren.