AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein eine neue Klasse mit Komponenten der Komponentenpalette
Thema durchsuchen
Ansicht
Themen-Optionen

eine neue Klasse mit Komponenten der Komponentenpalette

Ein Thema von BAMatze · begonnen am 6. Feb 2009 · letzter Beitrag vom 6. Feb 2009
Antwort Antwort
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 15:48
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 15:55
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

zum weiteren Lesen: http://www.delphi-treff.de/tutorials...en-entwicklen/
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 16:05
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 16:33
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 19:19
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 21:02
Würden Frames nicht eine ähnliche Funktionalität unterstützen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: eine neue Klasse mit Komponenten der Komponentenpalette

  Alt 6. Feb 2009, 21:46
Hallo alzaimar,

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 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