# Formular mehrmals öffnen



## ollek81 (21. Mai 2004)

N'Abend!

Ich hab ein Problem. Habe die Such-Funktion auch schon genutzt, hat mich aber auch nicht weitergebracht...

Ich hab ein Programm geschrieben, das aus mehreren Teilen besteht.
Für jeden Teil müssen Einstellungen gemacht werden.
Ich habe dafür ein Formular gebastelt, dass die entsprechenden Einstellungen aus einer Textdatei liest und das Einstellungs-Formular dann "dynamisch" aufbaut.
Es gibt also für jeden Programmteil eine eigene Datei. Die wird dem Einst.-Formular übergeben und das macht dann los.

Jetzt möchte ich gerne, dass der Benutzer die Einstellungen von zwei verschiedenen Programmteilen vergleichen kann.
Dafür muss ich das Einst.-Form ja mehrmals öffnen können:

Hab's so probiert:

```
Public Function openEinst(filename As String)
Dim frm As frmEinst
  Set frm = New frmEinst
  frm.DAtei = filename
  frm.Show
  Set frm = Nothing
End Function
```

Allerdings öffnet er es dann nichtmal einmal!
Er versucht das Formular beim Aufruf dann irgendwie zweimal zu laden.
Ich bekomme immer die Meldung, dass die Datei schon geöffnet ist.

Hat jemand ne Idee, wie ich das vernünftig hinbekomme?
Ich hoffe, es war verständlich...

Danke schonmal für eure Antworten!

Schönen Abend

Ollek81


----------



## Shakie (21. Mai 2004)

Also ich habe mal, als mir langweilig war, ein Programm geschrieben, dass 10mal hintereinander immer die gleiche Form lädt. Das sah dann etwa so aus und hat einwandfrei funktioniert:

```
Dim Spamform As FrmNachricht
for i=0 to 10
   Set Spamform = New FrmNachricht
   Spamform.Show
   Set Spamform = Nothing
next

'bei dir also dann:

dim  frm as frmEinst
Set frm=New frmEinst
frm.show
set frm=nothing

(also genaus so, wie du es hast. Müsste funktionieren!)
```


Aber kann es evtl. sein dass die neue Form, als sie das erste mal geladen wird (also in Sub Form_Load), noch auf die geöffnete Datei der andern bereits vorhandenen Form zugreifen will, BEVOR du _frm.Datei=filename _ ausführst? Ich denke, das Problem liegt nicht in dem mehrmaligen Erstellen der Form, sonst würde eine andere Fehlermeldung kommen. Wird die neue Form denn überhaupt nicht angezeigt? Probier mal aus ob die neue Form wenigstens dann angezeigt wird, wenn du erst frm.show und dann frm.Datei=filename machst. Mehr fällt mir jetzt auch nicht ein.


----------



## ollek81 (21. Mai 2004)

N'Abend Shakie!

Das Form wird erst gar nicht angezeigt, weil er mit der Meldung abbricht, dass die Datei schon geöffnet ist.
Ich habe in das Form_Load des Einst.-Forms mal ne MsgBox eingefügt.
Die wird zweimal aufgerufen obwohl ich nur einmal auf den Button geklickt hab, der das öffnen soll.
Datei später übergeben geht nicht. Wird in form_Load gebraucht.
Wenn trotzdem ich's versuche --> "Path/File accesss Error"

Muss das Form irgendwie erst einmal vernünftig geladen werden und dann erst mit dem ganzen Dim-Krempel
Also ne Abfrage einbauen : isopen -->ja, dann dim...
--> nein frmeinst.show

  *ratlos sei*

MfG

Ollek81


----------



## ollek81 (21. Mai 2004)

Hi

Hab's hinbekommen.
Ich habe in frmeinst auf dessen Attribute, wie Caption zugegriffen. Aber mit frmeinst.caption. Mit me.caption geht es jetzt.
Irgendwie hat es deswegen geharkt.

Danke für deine Mühe

Ollek81


----------



## ollek81 (21. Mai 2004)

Tach nochmal.

Hat irgendwer ne Ahnung, wie ich die Fenster ansprechen kann, wenn die dann auf sind?
Z.B. wenn ich das eine Einst.-Fenster schließe, soll das andere ein den Vordergrund kommen. Die haben jetzt ja alle den selben Namen...
Irgendwie über hWnd?

Hilfe! 

Verzweifelte Grüße!

Ollek81


----------



## Shakie (22. Mai 2004)

Also ich habe das etwas umständlich gelöst, aber es funktioniert:
Sobald ich eine neue form erstellt habe, speichere ich diese Form in einem Scripting.dictionary (kennst du dich damit aus? Wenn nicht, einfach nachfragen )
Das würde dann z.B. so aussehen:
	
	
	



```
Dim NeueForm As FrmHaupt
Set NeueForm = New FrmHaupt
    
Dim intAnzahlFormen As Integer
intAnzahlFormen = dicFormen.Count + 1
dicFormen.Add intAnzahlFormen, NeueForm
set NeueForm=Nothing
```

Wenn ich jetzt auf eine bestimmte Form zugreifen will, lade ich sie mir aus dem Dictionary (ich muss dazu nur die Nummer wissen, unter welcher ich sie vorhin im Dictionary gespeichert habe:
	
	
	



```
'hier soll beispielsweise Form Nr. 5 angesteuert werden:
Set NeueForm = dicFormen(5)
```
Ich hoffe du verstehst, wie ich es meine ;-)


----------



## ollek81 (23. Mai 2004)

Hi

So kompliziert hört es sich ja nicht an.

Aber dicFormen(5).Caption=... kann ich z.B. nicht schreiben?
Immer erst neuform = dicFormen(5)
neuform.Caption=.....

Danke schonmal für deine Mühe

Schönen Abend!

Ollek81


----------

