Wie bereits angedeutet gibt es auch eine elegantere Methode, mehrere Controls gleicher Art zu erzeugen. Anstatt - wie in unserem bisherigen Beispiel - die benötigten Image-Controls für unsere Kugel in der Design-Umgebung zu kopieren, reicht es auch, wenn wir nur ein einziges Image-Control definieren, sozusagen als Prototyp, und dieses dann zur Laufzeit so oft kopieren, wie wir es benötigen.
Wichtig ist dabei nur, daß wir dem Prototypen einen Index zuweisen. Wir entfernen also alle KugelX-Images bis auf das mit dem Index 0 und fügen stattdessen ein Form_Load-Ereignis hinzu:
Private Sub Form_Load() For i = 1 To 9 Load KugelX(i) 'benötigte Anzahl Kugeln laden KugelX(i).Left = KugelX(i - 1).Left + KugelX(i).Width * 1.2 'Kugeln positionieren Next End Sub
Alle Eigenschaften, die wir nicht explizit ändern (hier die Position der Kugeln auf der X-Achse), werden automatisch von der ersten Kugel übernommen.
Alternativ könnten wir dieses Laden natürlich auch erst dann vornehmen, wenn wir die Kugeln wirklich brauchen, in unserer Zählübung. Es gilt hier Vor- und Nachteile abzuwägen:
Die Entscheidung, was sinnvoller ist, ist sicher von Fall zu Fall verschieden. Da unser Programm vom Umfang nicht gerade ein Speicherfresser ist, lassen wir es mal beim Laden der Controls im Form_Load-Ereignis.
Am fertigen Programm hat sich nichts Erkennbares geändert, außer daß die EXE ein paar Bytes kleiner geworden ist. Logisch, denn die Bildinformationen für KugelX stecken nur einmal drin und solche Bildinformationen kosten nunmal Platz in der EXE. Bei unserem kleinen Projekt fällt das zwar nicht so sehr ins Gewicht, bei größeren Projekten und vielen gleichartigen Controls kann das aber durchaus ein wichtiger Aspekt sein.
Diese Möglichkeiten bestehen übrigens grundsätzlich für alle Arten von Controls und prinzipiell auch für Forms.
© Copyright 1998-2000 J.Behling
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.