Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Unit in VCL-Anwendung duplizieren


Delete - Fr 06.04.07 17:17
Titel: Unit in VCL-Anwendung duplizieren
moin

ich habe mir heute eine Art Prüfbogen angefertigt. Dort sollen in 10 Formularen je 4Fragen mit Antowrtmöglichkeiten stehen. Das erste Formular habe ich soweit fertig, auch dass die Fehlerzahl in das Hauptformular übertragen wird.
Aber: Ich habe keine Lust, jedes des 9 weiteren Forms wieder zu designen. Ich würde gerne einfach diese Unit (in meinem Fall Unit2) duplizieren und dann die Fragen (Label) und die Antworten (Checkboxen) ändern. Ich hab versucht die Unit-Dateien im Explorer zu duplizieren und habe auch die *.dfm und die *.pas-Dateien im Quellcode soweit aktualisiert, dass sich die Zahlen (Form2, Unit2) nicht beißen, aber Delphi gibt trotsdem eine Fehlermeldung.
Gibt es ne Alternative, Google hat mir nicht wirklich geholfen :(

Schon einmal im Voraus vielen Dank

derwanderer


Karlson - Fr 06.04.07 17:36

Nun ja, 9 mal die gleiche Form wird eine ganze Menge Resourcen unnötig verbrauchen aber wie auch immer.

Wie man die Form (+Unit) kopiert weiss ich nicht, aber ich würde es so machen:

1.) Mach ein neues Formular
2.) Passe dort Hintergrund und Grösse an
3.) Kopiere alle Komponenten (du kannst die Komponenten wie Dateien auf dem Desktop markieren) auf dem Vorlagenformular und Kopiere sie mit STRG+C und STRG+V rüber auf das neue Formular.
Dabei werden auch die richtigen Positionen übernommen!

4.) Dann markierst du die gesamte Unit des Vorlagenformulars und ersetzt die Unit des neuen Formulars mit dem kompletten Unittext.

5.) Dann nimmst du den Search...Replace Dialog um Deklarationen anzupassen. Wenn der Formname deiner Vorlage also z.B. Fragenfenster1 war und der Name des neuen Formulars Fragenfenster2 ist dann ersetzt du alle FragenFenster1 durch Fragenfenster2.

Ist nicht sonderlich schön, aber so funktionierts wenigstens! Und bei nur 9 weiteren Formularen brauchst du dafür vielleicht 10 Minuten.


HelgeLange - Fr 06.04.07 18:23

warum benutzt man nicht einfach Vererbung ?

leite einfach von TForm2 ab, dann hast schon alles drauf, änderst halt nur die Beschriftungen.

Ableiten von einem Form geht übrigends über Datei-Neu-Vererben und dann das Ursprungs-Formular wählen


Gausi - Fr 06.04.07 18:29

Wie wäre es denn, wenn man die Controls auf der Form (Edits, Label, Checkboxen,..) zur Laufzeit ändert? Man kann ja in ein Label eine Frage reinschreiben (Label1.Caption := ...), und die anderen Sachen ebenso anpassen.

Was du vorhast, wäre ungefähr genauso sinnig wie für jede Webseite nen eigenen Browser zu schreiben...


Delete - Fr 06.04.07 19:13

super. Ich habs jetzt mit der Vererbung gemacht. Hat alles prima geklappt. Mit den anderen Möglichkeiten werd ich mich die Tage beschäftigen


Karlson - Fr 06.04.07 19:30

Wo macht ihr das?

Datei - Neu - Vererbung?

Kanns sein das es das in D6 noch nicht (in der Form) gibt? Oder find ichs nur nicht? :gruebel:

EDIT: Alles klar, habs gefunden (D6 ist bei mir leider nur in Engl.):

File - New - Other - Project1 - inherited