Hallo,
ich habe die Version 1.6.4 unter Ubuntu installiert, läuft soweit rund, aber mir ist folgendes aufgefallen:
Bei der Erstellung einer neuen Komponente gibt es in der Liste der Basisklassen weder TCustumEdit noch TCustomPanal...oder habe ich gerade einen "DenkKnoten" ?
Es gibt (für meinen Bedarf) nur TEdit, TPanel oder aber TCustomControl auszuwählen...
Bin dankbar für Hinweise
Udo
Komponenten
Re: Komponenten
Wie die Auwahlliste da zustande kommt, weiß ich gerade auch nicht, aber es ist ja kein großes Problem.
Wähle einfach TEdit und ändere es nachher im Quelltext in TCustomEdit, wenn das für dich richtig ist.
Wähle einfach TEdit und ändere es nachher im Quelltext in TCustomEdit, wenn das für dich richtig ist.
Re: Komponenten
Die LCL ist genau wie Delphis VCL so aufgebaut, dass es zu jeder Komponente in der Palette einen Vorfahren TCustomXXXX gibt, der bereits die volle Funktionalität hat, aber noch keine Properties für den Objektinspektor veröffentlicht. Damit tut man sich als Komponentenentwickler leichter, von TCustomXXXX eine neue Klasse abzuleiten, die aber nicht alle Eigenschaften des Vorgängers haben soll. Das liegt daran, dass im Zuge der Komponentenhierarchie die Sichtbarkeiten von Properties nur erhöht werden kann, aber nie erniedrigt (protected --> published ist ok, aber nie published --> protected). In der Regel sind die Properties der TCustomXXXX-Klassen immer protected, so dass man auf diese von der Anwendungsebene aus auch zur Laufzeit nicht zugreifen kann, dagegen aber auf Komponentenebene von einem Nachfahren aus.
Also, wenn du Anwendungen schreibst, sind TCustomEdit und die anderen TCustomXXXX-Klassen nicht wichtig, sie haben insbesondere auf der Komponentenpalette nichts zu suchen. Wenn du Komponenten schreibst, brauchst du die TCustomXXXX-Klassen sehr wohl, aber zum Ableiten einer neuen Klasse müssen sie ebenfalls nicht auf der Komponentenpalette sein.
Also, wenn du Anwendungen schreibst, sind TCustomEdit und die anderen TCustomXXXX-Klassen nicht wichtig, sie haben insbesondere auf der Komponentenpalette nichts zu suchen. Wenn du Komponenten schreibst, brauchst du die TCustomXXXX-Klassen sehr wohl, aber zum Ableiten einer neuen Klasse müssen sie ebenfalls nicht auf der Komponentenpalette sein.