Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Welches Prinzip steckt hinter TCustom* - Klassen? (https://www.delphipraxis.net/136379-welches-prinzip-steckt-hinter-tcustom%2A-klassen.html)

TheJeed 29. Jun 2009 15:09


Welches Prinzip steckt hinter TCustom* - Klassen?
 
Hallo zusammen!

Ich beschäftigte mich gerade erstmals etwas genauer mit der Entwicklung von Komponenten. Wenn ich mir Quellcodes von allen möglichen VCL-Komponenten ansehe dann fällt mir sofort ins Auge, dass es meist nicht nur die Komponentenklasse gibt, die ich auf die Form kloppe - zum Beispiel TEdit -, sondern auch eine TCustomEdit. Wohin ich auch sehe begegnet mir diese Vorgehensweise.

Könnt Ihr mir erklären, warum man das macht? Und wenn ich eine neue Komponente von einer vorhandenen ableiten möchte, sollte ich dann besser von TSülze oder TCustomSülze ableiten?

Dankesehr :)

Sven M. 29. Jun 2009 15:18

Re: Welches Prinzip steckt hinter TCustom* - Klassen?
 
Hi,
Die Custom-Klassen haben einfach den Zweck, den Programmieraufwand so gering wie möglich zu halten...
Sie implementieren Eigenschaften und Funktionen von Komponenten, die alle Nachfahren enthalten sollen, im Falle des TEdit z.B. TMaskEdit und TEdit.

Um auf dein Beispiel einzugehen: Ob du nun von TSülze oder TCustomSülze ableitest, hängt davon ab, ob die Funktionen von TSülze für dich nötig sind oder nicht. Eine generelle Aussage lässt sich hier m.E. nicht treffen.

himitsu 29. Jun 2009 15:19

Re: Welches Prinzip steckt hinter TCustom* - Klassen?
 
TCustomEdit stellt sozusagen die Basisklasse für TEdit und Co. dar
und dort sind, wie du vielleicht bemerken dürftest, noch nahezu alle Eigenschaften/Funktionen "versteckt" (protected) und in TEdit werden nur alle nötigen Eigenschaften "feigeschaltet" (die Sichbarkeiten in puplic/published geändert).

Grund: so kannst du dir selber ein TMyEdit anlegen, diese eventuell erweitern und auch nur das freigeben, was nötig ist.

Wenn schon standardmäßig alles feigegeben wäre, kannst du nix mehr verstecken, da man sie sichtbarkeit nur erhöhen (sichtbarer machen > public oder published) kannst, aber nicht verringern (z.B. private, protected)

DeddyH 29. Jun 2009 15:21

Re: Welches Prinzip steckt hinter TCustom* - Klassen?
 
Vor allem deklarieren die TCustom...-Klassen ihre Properties (in den meisten Fällen) als protected, so dass Du selbst entscheiden kannst, ob Du sie in Deiner Ableitung veröffentlichen willst oder nicht.

[edit] *Pffh* :tongue: [/edit]

TheJeed 29. Jun 2009 15:37

Re: Welches Prinzip steckt hinter TCustom* - Klassen?
 
Das war sehr aufschlussreich, danke :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.

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