Thema: Delphi Objektablage

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Objektablage

  Alt 27. Mär 2004, 18:12
Das wirklich wichtige kommt jetzt :

Ich gehe mal von folgendem Fall aus. Es wird eine Form gebraucht, die folgende Eigenschaften hat : Standard-Schriftgröße 10. Sie soll ein Edit-Feld haben und ein Stringgrid. Ist sie deaktiviert, so soll sie anders aussehen, als aktiviert. Gut, das dürfte reichen. Bei mir kommen noch einige Sachen dazu. Wie geht man nun vor ? Klassisch ganz einfach : Neu -> Form und dann alles von Hand einstellen. Farbe, OnKeyDown, OnClose usw. Aber das ist im Prinzip doch immer dasselbe. Nun kann man diese Form ja wie gesagt einfach kopieren.

Der Nachteil ist aber dann, dass der Vorteil den man hat, die Steuerelemente nicht wieder neu auf der Form zu platzieren und im OI die Eigenschaften einzustellen nur einmalig ist. Wenn man die Forms 10mal kopiert, so muß man sie auch 10 mal abändern, wenn nötig.

Also mache ich doch besser folgendes :

1. neue Form erzeugen
2. OnActivate und OnDeactivate besetzen, z.B. Hellrot, falls aktiviert und grün, falls deaktiviert.
3. Stringgrid und Edit auf die Form. Da wo sie hin sollen.
4. alle weiteren gewünschten Eigenschaften. Schrift usw.

Nun verfrachte ich diese Form in die Objektablage. Alle Eigenschaften bleiben dabei erhalten. Brauche ich noch eine ähnliche Form, die sich zwar so wie die erste Verhalten soll, so erzeuge ich eine neue, aber nicht mit neu -> Form, sonder mit neu -> weitere ->... Da suche ich mir die vorher definierte aus. Und nun (nicht vergessen !) den Radiobutton "Vererben" anklicken. Auf diese neue Form lege ich nun Checkboxen, Datasets usw. Sie behält dann alle Eigenschaften der Vorfahrform, ich kann aber trotzdem (fast alles) tun und lassen was ich will.

Auch diese Form kann ich nun in die Objektablage schieben, so dass ich in Zukunft auch noch die neu eingeführten Checkboxen benutzen kann. Natürlich kann ich jetzt noch weiter machen und das OnActivate der allerersten Form ersetzen.

Das wichtigste ist jedoch folgendes : Angenommen, das OnActivate Ereignis soll ganz anders gemacht werden. Und das bei allen Forms. Ich müsste also Form für Form aufrufen und abändern. Mit meinem Beispiel gehe ich ganz einfach hin, ändere die Ausgangsform und durch OOP ist alles in den vererbten Forms abgeändert Allerdings nur, sofern für die neue Form "Vererben" ausgewählt wurde. Paßt das nicht überall, so suche ich die am besten passende Form und kopiere diese lediglich.

In meinem konkreten Fall sieht die Hierarchie folgendermaßen aus:

Eine Form mit Panel und Editfeld ist der Ursprung. Diese wird vererbt an eine, die noch ein Stringgrid enthält. Manchmal brauche ich kein StringGrid, das Panel/Edit aber schon. Dann nehme ich die 1. Form. Lege ein paar Labels usw. drauf. In einem anderen Fall brauche ich außer dem Stringgrid nun noch ein Image. Und das in 3 Fällen. Deshalb lege ich ein Image noch auf die 2. Form und leite mir von dieser wiederum 3 Forms ab, bei denen ich nur noch die Picture-Eigenschaft anpasse. Usw. usw.

Ich schätze mal, daß bei Einhaltung dieses Konzeptes bestimmt 20 % der Programmierzeit eingespart werden können. Wieso die Objektablage kaum genutzt wird ist mir nach wie vor ein Rätsel. 8)

Wird fortgesetzt...
Gruß
Hansa
  Mit Zitat antworten Zitat