none
Problem mit Mehrfachöffnung eines Formulars

    Frage

  • Hallo zusammen,

    in meiner Anwendung benötige ich ein Formular mehrfach, da es dem Benutzer ermöglicht werden soll, mehrere Datensätze parallel zu bearbeiten. Usprünglich wurde die Anwendung mit Acc2003 entwickelt.

    Die Verwaltung der Form-Instanzen erfolgt über ein Objekt, dass eine Collection hält, der mit col.add Form-Objekt, Form.Tag (als Key) Formularinstanzen hinzugefügt bzw. mit col.remove Form.Tag wieder entnommen werden. Das klappt so hervorragend. Diese Anwendung läuft ohne Änderungen auch unter Acc2010 Win7 64Bit.

    Nun entwickele ich für einen anderen Kunden eine Anwendung auf dieser Plattform, in der ich diese Feature ebenfalls brauche. Den Code habe ich nahezu eins zu eins aus der bestehenden Anwendung übernommen. Allerdings verhält sich die neue Anwendung komplett anders. Wenn ich zwei Instanzen der Formulars erzeuge und will die zuletzt erzeugte schließen, wird die die erste geschlossen, quasi die, die der Collection zuerst hinzugefügt wurde.

    Code:

    Public Sub OpenFormTermin(ByVal lTermin As Long)
        Dim frm As Form_frmTermin
        Set frm = New Form_frmTermin
        ...
        frm.Tag = "Termin" & CStr(frm.Termin.T_ID)
        frm.Visible = True
        ...
        m_colFormTermine.add frm, frm.Tag
        ...
    End Sub

    Public Sub CloseFormTermin(ByVal sTag As String)
        ...
         m_colFormTermine.Remove sTag 
         ...
    End Sub

    Im Formular gibt es eine Ereignisprozedur für die "Schließen"-Schaltfläche, die dann die Objekt-Prozedur aufruft:

        myTerminformulare.CloseFormTermin Me.Tag

    Wobei "MyTerminformulare" ein global gültiges Objekt ist.

    Falls jemand eine Idee hat, warum sich die Collection in diesem Fall so anders verhält als bislang, bin ich für jeden Hinweis dankbar.

    Viele Grüße,
    Michael Schörner

    Dienstag, 27. August 2013 08:28

Antworten

  • Das Problem hat sich erledigt. Allen, die sich zwischenzeitlich den Kopf zerbrochen haben, dennoch vielen Dank.

    Ich habe in der Prozedur "CloseFormTermin" vor dem Remove-Befehl noch ein "frm.visible = false" gesetzt. Es ist mir zwar nicht wirklich klar, welchen Unterschied das machen sollte, zumal in dem bestehenden Code derlei nicht notwendig war, aber wenn´s funktioniert...

    Dienstag, 27. August 2013 12:54

Alle Antworten

  • Das Problem hat sich erledigt. Allen, die sich zwischenzeitlich den Kopf zerbrochen haben, dennoch vielen Dank.

    Ich habe in der Prozedur "CloseFormTermin" vor dem Remove-Befehl noch ein "frm.visible = false" gesetzt. Es ist mir zwar nicht wirklich klar, welchen Unterschied das machen sollte, zumal in dem bestehenden Code derlei nicht notwendig war, aber wenn´s funktioniert...

    Dienstag, 27. August 2013 12:54
  • Schau mal ob dir dieser Artikel aus der FAQ noch etwas hilft: http://www.donkarl.com?FAQ4.6



    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Donnerstag, 29. August 2013 20:12