Programmierkurs: Delphi: Komponentenentwicklung
Vorfahrtyp
BearbeitenZunächst einmal sollten Sie sich im Klaren sein, was für einen Vorfahrtypen man wählt. Für graphische Komponenten ist für eine ganz neue Komponente TGraphicControl eine gute Wahl. Sollte es ein erweitertes Edit sein, muss man natürlich TEdit als Vorfahrtyp wählen, es sei denn, man möchte alles neu schreiben.
Neue Komponente
BearbeitenEine neue Komponente wird über Komponente / Neue Komponente ... erstellt. In diesem Dialog geben wir ein, was Delphi von uns wissen will. Wir wissen nun, welchen Vorfahrtypen wir nehmen, hier TGraphicControl, und nennen unsere neue Klasse zum Beispiel TMyShape. Diese soll am Ende dem TShape ähneln.
Zeichnen
BearbeitenZum Zeichnen benutzen wir Canvas. Das kann überall gemacht werden. Gut ist es jedoch, es in der Methode Paint zu machen, die TGraphicControl mitbringt. Diese überschreiben wir. Es sieht nun so aus:
TMyShape = class(TGraphicControl) private { Private-Deklarationen } protected procedure Paint; override; // Hier eintragen public { Public-Deklarationen } published { Published-Deklarationen } end; { ... } procedure TMyShape.Paint; override; begin { ... } end;
Da wir uns in TMyShape befinden, müssen wir Canvas nicht mit TMyShape.Canvas ansprechen, sondern dürfen auch Canvas schreiben. Normalerweise schreibt ja auch niemand Form1.Edit1.Text sondern Edit1.Text. Wir stellen uns vor, wir wären in einer with-do-Konstruktion. Wie wir mit Canvas zeichnen, wurde im letzten Kapitel erklärt.
Koordinaten
BearbeitenBei den Koordinaten darf man auf gar keinen Fall Left und Top für die linke obere Ecke verwenden, sondern 0. Die Koordinaten beziehen sich nicht auf die auf dem Formular, sondern auf die innerhalb der Komponente. Damit kann man überflüssige Unklarheiten vermeiden. Die Breite und Höhe bekommen wir mit Width und Height geliefert.
Ereignisse
BearbeitenEreignisse müssen wir einfach nur importieren. Wir schreiben also in den Published-Teil:
published property OnClick; property OnMouseMove; ...
Denn alle wichtigen Ereignisse werden von TGraphicControl geliefert.
Properties
BearbeitenProperties sollen meistens im Objektinspektor erscheinen. Dafür wird diese Schreibweise verwendet:
published property MyProperty: Datentyp read AMyProperty write FmyProperty;
AMyProperty wird im Private-Teil mit demselben Datentypen deklariert. FMyProperty ist eine Prozedur aus dem Private-Teil und könnte folgendermaßen aussehen:
procedure TMyShape.FMyProperty(A: Datentyp); begin AMyProperty := A; Paint; end;
Damit wird wieder das Paint-Ereignis aufgerufen. Innerhalb der Komponente hat man immer AMyProperty zu verwenden, nie MyProperty!
Komponente installieren
BearbeitenHier geht es relativ einfach, da die Komponente nur aus einer Unit besteht: Man ruft Komponente / Komponente installieren ... auf, gibt die Unit an, klickt im Dialog auf "Compilieren" und anschließend auf "Installieren" und wartet auf eine Erfolgsmeldung. Dafür darf aber die automatisch erzeugte Register-Prozedur nicht gelöscht werden!
Erstellung einer grafischen Oberfläche weitere Themen | Inhaltsverzeichnis | Multimediafunktionen |