Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   eine neue Klasse mit Komponenten der Komponentenpalette (https://www.delphipraxis.net/128808-eine-neue-klasse-mit-komponenten-der-komponentenpalette.html)

BAMatze 6. Feb 2009 14:48


eine neue Klasse mit Komponenten der Komponentenpalette
 
Hallo nochmal an alle,

Habe eine Frage zu der Erzeugung von Klassen. Hab bei einem Kollegen gesehen, der C# programmiert, dass er eine Art "Komponente" in einer Unit erzeugen kann. Diese Klasse kann mehrere Komponenten der C#-Komponentenpalette haben und diese über Proceduren miteinander verknüpfen. Diese Komponente, kann er dann einfach auf seine Form ziehen und dort wird sie wie eine vorgefertigte Komponente behandelt.

Gibt es in Delphi eine ähnliche Möglichkeit? Wenn ja habt ihr mal ein kurzes "Beispiel-Programm" oder ist dies nur in C# möglich? Allgemein würde ich mal gern wissen, ob man eine Komponente aus mehreren Komponenten zusammensetzen kann. Hab dazu noch nichts gefunden.

Vielen Dank
BAMatze

Meflin 6. Feb 2009 14:55

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Zitat:

Zitat von BAMatze
Allgemein würde ich mal gern wissen, ob man eine Komponente aus mehreren Komponenten zusammensetzen kann. Hab dazu noch nichts gefunden.

Da Delphi keine Mehrfachvererbung unterstützt, geht das nicht (zumindest nicht echt. Natürlich kannst du in einer Komponente andere Komponenten verschiedener Typen benutzen).

Und natürlich kannst du auch Komponenten schreiben, die du auf deine form ziehen kannst ;) Dazu musst du nur in die Unit der Komponente
Delphi-Quellcode:
procedure Register;
begin
  RegisterComponents( [ComponentClass], 'Tab name');
end;
im implementation-Teil einfügen. Wenn es sich um eine nichtvisuelle Komponente handelt, bekommst du dann so ein kleines Quadrat auf dem Formular, wie man es z.B. vom Timer oder den Indys kennt. Und wenn es sich um eine visualle handelt, also allles was von visuellen Komponenten oder anderen visuellen Basisklassen abgeleitet ist, siehst du halt die Komponente ;)

Dazu musst du dann allerdings erst noch die Unit in ein Package einfügen und das PAckage installieren :stupid:

zum weiteren Lesen: http://www.delphi-treff.de/tutorials...en-entwicklen/

BAMatze 6. Feb 2009 15:05

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Zitat:

Zitat von Meflin

Danke dir erstmal, habe dieses Tutorial auch durchgearbeitet, was auch für die Veränderung von einzelnen Komponenten sehr gut ist (so habe ich z.B. ein reines Zahlen-Edit erstellt, wo man aussuchen kann, ob es eine Gleitkommazahl ist oder eine Ganzzahl, oder auch Ereignisse hinzugefügt).

Was ich mir auch mit deiner Erklärung noch nicht vorstellen kann, was meiner Meinung nach auch komplett offen bleibt, ist wie kann ich das mit mehreren Komponenten machen.

Vieleicht hast du ja mal ein kleines Beispiel, was nicht so aufwändig ist, wie z.B. ein Panel mit Button (als eine Komponente), wo das Panel einfach die Farbe wechselt, wenn der Button gedrückt wird. Einfach ein kleines Bsp, wäre gut.

Danke BAMatze

Meflin 6. Feb 2009 15:33

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Zitat:

Zitat von BAMatze
Vieleicht hast du ja mal ein kleines Beispiel, was nicht so aufwändig ist, wie z.B. ein Panel mit Button (als eine Komponente), wo das Panel einfach die Farbe wechselt, wenn der Button gedrückt wird. Einfach ein kleines Bsp, wäre gut.

Also, fertigen Code kann ich dir nicht bieten, habe zz Delphi nichtmal installiert, und so rein aus dem Kopf runtergeschrieben wird das sicher nix. Aber prinzipiell kannst du das so machen:
1. Du leitest deine Komponente von TPanel ab.
2. In der Komponente deklarierst du ein Feld MyButton vom Typ TButton.
3. Im Konstruktor des Panels erzeugst du den Button und weißt ihm als Parent das Panel (also self vermutlich) zu. Dann musst du ihn noch mit Top und LEft relativ zur linken oberen Ecke des Panels platzieren und schwuppdiwupp solletst du ein Panel mit Button haben.

Versuchs erstmal soweit, bevor du noch versuchst, den Button auch noch was machen zu lassen ;)

Hawkeye219 6. Feb 2009 18:19

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Hallo,

vielleicht suchst du Informationen über composite controls.

Ray Konopka zeigt in einem 45-minütigen Flash-Video, wie man solche Controls erstellt.
Du findest das Video neben zahlreichen anderen auf dieser Seite (Direktlink [.zip-Datei, ca. 20 MByte])

Gruß Hawkeye

alzaimar 6. Feb 2009 20:02

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Würden Frames nicht eine ähnliche Funktionalität unterstützen?

Hawkeye219 6. Feb 2009 20:46

Re: eine neue Klasse mit Komponenten der Komponentenpalette
 
Hallo alzaimar,

Zitat:

Zitat von alzaimar
Würden Frames nicht eine ähnliche Funktionalität unterstützen?

Ja, Frames bieten eine ähnliche Funktionalität, sie haben aber einige Nachteile. Es ist beispielsweise recht schwierig, sie projektübergreifend mit mehreren Entwicklern gemeinsam zu nutzen, und man kann Änderungen in den einzelnen Frame-Instanzen nicht wirkungsvoll verhindern.

Die composite controls können auf Frames basieren und vereinen dann die Vorteile der Frames (z.B. visuelles Design) mit den Vorteilen der Komponenten (z.B. einfache Weitergabe an andere Entwickler). Sie erlauben es auch auf recht einfache Weise, weitere Eigenschaften für die Frames im Objektinspektor sichtbar zu machen. Ray Konopka zeigt dies alles im Video sehr schön am Beispiel einer Ein-/Ausgabemaske für Datenbanken.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.

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