Autor |
Beitrag |
Jakane
      
Beiträge: 257
|
Verfasst: Mo 06.05.13 14:10
Hallo liebe Delphi-Helfer
ich habe mich endlich in die Komponentenprogrammierung gewagt und direkt mal eine Frage.
Ich bastle grade am TEdit rum und finde manche Eigenschaften lässtig.
Kann ich überflüssige Eigenschaften irgendwie löschen, z.B. BiDiMode?
Bitte nicht den Sinn oder Unsinn des Vorhabens diskutieren
Danke für Antworten
|
|
Jon Good
      
Beiträge: 22
Erhaltene Danke: 2
|
Verfasst: Mo 06.05.13 14:22
wenn du nicht über Sinn / Unsinn diskutieren willst, und nur ne kurze Antwort möchtest: Nein, ist nicht möglich.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 06.05.13 14:23
Viele VCL-Controls sind von einem "TCustom"-Objekt abgeleitet (TCustomEdit, TCustomMemo etc.), bei dem die Eigenschaften noch protected sind. Du kannst dann in einer Ableitung selbst entscheiden, welche Du veröffentlichen möchtest. Dadurch sind sie zwar nicht "gelöscht", werden aber zumindest nicht nach außen sichtbar.
Für diesen Beitrag haben gedankt: Jakane
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 06.05.13 14:30
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 06.05.13 16:10
Eines musst Du immer bedenken: Was willst Du mit Deiner Klasse anfangen? Soll sie von TEdit abgeleitet werden? Dann brauchst Du doch nur diejenigen Methoden/Ereignisse ... zu ändern, welche Du meinst, ändern zu müssen. Alle anderen kannst du einfach leer lassen (in der neuen Klasse). Dann wird automatisch die Methode von TEdit verwendet. Wenn Du sozusagen eine komplett "leere" TEdit erzeugen willst, gehe zu dem Vorgänger von TEdit (TCustomEdit, TWinControl ..), der Deinen Ansprüchen genügt.
Aber eine zusätzliche Methode/Eigenschaft stört doch eigentlich nicht, oder? Ich benutze BiDiMode eigentlich auch nie. Benötigst Du soweit ich weiß nur für Sprachumgebungen mit Rechts-nach-links-Schrift (z.B. Hebräisch). Außerdem, was dies anbetrifft, ist diese Eigenschaft schon in TControl definiert! (Also noch vor TWinControl) Nur zur Info.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Jon Good
      
Beiträge: 22
Erhaltene Danke: 2
|
Verfasst: Mo 06.05.13 19:11
Eine weitere Möglichkeit wäre, du nimmst erbst von TCustomControl und fügst dein TEdit als Child hinzu und linkst Eigenschaften und Events von deinem CustomControl an dein Child-TEdit.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 06.05.13 19:27
|
|
Jon Good
      
Beiträge: 22
Erhaltene Danke: 2
|
Verfasst: Mo 06.05.13 21:34
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mo 06.05.13 22:45
Jon Good hat folgendes geschrieben : | Verständlicher? |
Nennt sich auch Delegieren (im Gegensatz zu Erben).
Wenn ich mich nicht irre kann man die Sichtbarkeit von properties auch ändern:
Delphi-Quelltext 1: 2: 3: 4:
| type TMyEdit = class(TEdit) protected property BiDiMode; end; |
Nach Möglichkeit die property nicht private setzen, sonst kann man sie in erbenden Klassen überhaupt nicht mehr ansprechen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 06.05.13 23:42
Moin!
Xion hat folgendes geschrieben : | Wenn ich mich nicht irre kann man die Sichtbarkeit von properties auch ändern: |
IIRC aber nur in eine Richtung: was einmal "sichtbar" ist, kann man nicht wieder "verstecken".
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: Xion
|
|
ml-kuen
      
Beiträge: 17
Win 95, Win 98, Win 2000, Win XP, Win 7
Delphi 7 personal
|
Verfasst: Mo 06.05.13 23:45
Hallo Xion,
Zitat: |
Wenn ich mich nicht irre kann man die Sichtbarkeit von properties auch ändern:
Delphi-Quelltext 1: 2: 3: 4:
| type TMyEdit = class(TEdit) protected property BiDiMode; end; |
Nach Möglichkeit die property nicht private setzen, sonst kann man sie in erbenden Klassen überhaupt nicht mehr ansprechen. |
Die Sichtbarkeit lässt sich meines Wissens nur erhöhen - nicht verringern.
Michael
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 07.05.13 08:05
Genauso ist es. Und genau dafür gibt es ja die TCustomXXX-Klassen, bei denen die Properties protected sind. Wozu da jetzt noch TCustomControl samt Childklasse gut sein sollen, ist mir immer noch nicht klar.
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Di 07.05.13 09:45
Also...
90% von dem was ich wollte habe ich mit CustomEdit erreicht und bin glücklich damit
und die anderen 10% kann ich ignorieren.
Ausserdem, geht es doch nur um das Verstehen wie es geht oder nicht?
(CustomControl mit Child hab ich nicht verstanden xD brauch ich aktuell aber auch nicht)
|
|