Eigene Komponenten ableiten, 1
1. Unit mit neuem Typ und Registrierungsprozedur schreiben
unit ukomp1;
interface
{ 1. richtige Units für zu beerbende Komponente angeben }
uses
stdctrls { für tedit } , classes { für registerComponents };
{ 2. Typvereinbarung mit Erben von bestehender Komponente }
type
tMyEdit = class(tcustomedit) { hier noch eine exakte Kopie }
end; { tedit und tcustomedit probieren, was }
{ ist im Objektinspektor anders ? }
{ 3. Registrierungsprozedur }
procedure Register; { ACHTUNG: Register GENAUSO schreiben !!! }
implementation
{ 4. Implementierung der Registrierungsprozedur }
procedure Register;
begin
registerComponents('Beispiele',[tMyEdit]);
{ der erste Parameter wählt eine bestehende Karteikarte aus oder
erzeugt eine neue, der zweite Parameter ist eine Menge (in
eckigen Klammern), die die Namen der neuen Typen durch Komma
getrennt enthält }
end;
end.
|
2. optional: eigenes Icon erzeugen
- in Delphi Tools/Bildeditor aufrufen
- mit Datei neu/Komponenten-Ressourcendatei erzeugen
- mit rechter Maustaste auf "Inhalte" mit Neu/Bitmap eine 32*32-Bitmap-Datei erzeugen
(Anzeige mit Strg-I vergrößern)
- Bitmap wie Typ nennen, also z.B. tMyEdit
- Ressourcendatei unter dem gleichen Namen (bis auf das Suffix .dcr) wie obige Unit abspeichern,
also z.B. ukomp1.dcr
3. neue Komponente einbinden
- Komponente/Komponente installieren anwählen
- Unit mit Durchsuchen auswählen
- Package im Allgemeinen unverändert lassen
- OK und kompilieren
- diverse Nachfragen nach Einbinden usw. positiv beantworten
- Erfolgsmeldung erscheint, neue Komponente kann wie üblich benutzt werden
Aufgabe 1:
Führe die angegebenen Schritte durch und teste die neue Komponente in einem Projekt.
Eigene Komponenten ableiten, 2
4. Komponente verändern
- Unit verändern und abspeichern
- Komponente wie gewohnt einbinden
- Package neu kompilieren (nicht vergessen!)
5. Komponente entfernen
- Komponente/Komponente installieren anwählen
- (irgendeine) Unit mit Durchsuchen auswählen, um in passendes Fenster zu kommen
- richtiges Package wählen
- entsprechende *.pas und *.dcr-Dateien aus Package entfernen
- Package neu kompilieren
- es erscheint eine Meldung über das Entfernen der Komponente
6. Icon ändern
- Komponente wie oben beschrieben entfernen
- Bitmap in *.dcr-Datei bearbeiten und speichern
- Komponente neu einbinden
7. Komponenteleiste verändern
- in Delphi Komponente/Palette konfigurieren anwählen
8. Eigenschaften im Objektinspektor sichtbar machen
.............
type
tMyEdit = class(tcustomedit) { tCustomEdit hat Eigenschaften ausge- }
property text; { blendet, einblenden wie nebenstehend }
end;
|
9. Eigene Eigenschaften definieren
type
tMyEdit = class(tcustomedit)
private
Fzahl : integer;
published
property zahl : integer read Fzahl write Fzahl;
end;
|
- Wie oben abändern und die neue Eigenschaft zahl erscheint im Objektinspektor.
- Hinter read kann auch eine Funktion z.B. GetZahl, hinter write eine Prozedur z.B. SetZahl
stehen. Diese Funktion bzw. Prozedur muss dann unter protected in der Typdefinition
erscheinen.
Aufgabe 2:
Probiere die neuen Möglichkeiten aus. Erweitere insbesondere deine neue Komponente um eine neue (möglichst sinnvolle) Eigenschaft mit Set.. und Get.. .
Aufgabe 3:
Baue dir ausgehend von tImage eine eigene Grafik-Komponente und teste sie.