vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
MDI Child Werte zurückgeben 
Autor: sebbi
Datum: 28.09.11 15:03

Hallo,
ich steh grad n bissl aufm Schlauch ... und die Lösung zu meinem Problem auf die ich gekommen bin scheint mir nicht gerade die Beste zu sein. Vielleicht kann mir hier noch jemand n Tip geben wie man das ganze sauberer lösen kann.

Ich habe mehrere MDI Child Formulare - eins davon sammelt Daten in ein Array und soll diese nun an die aufrufenden Routinen zurückgeben können.

Das Selectionsformular übergibt das WertArray mittels einer Property - hier mal die relevanten Code-Schnipsel aus dem Selectionsformular:
Private nArrIDs() As Long
Private bListDone As Boolean
 
Public Property Get Get_IDList() As Variant
    'Rückgabe der ID-Liste
    Get_IDList = nArrIDs()
End Property
 
Public Property Get IsFertig() As Boolean
    'Rückgabe ob das Formular alle nötigen Daten gesammelt hat
    IsFertig = bListDone
End Property
 
Private Sub cmdOK_Click()
'Rückgabe des Arrays und Schliessen der Form ...
Dim i As Integer
 
With Me.flexSelected
    If .Rows > 1 Then
        ReDim nArrIDs(.Rows - 2)
 
        For i = 0 To .Rows - 2
            nArrIDs(i) = CLng(Val(.TextMatrix(i + 1, 0)))
        Next i
    End If
End With
 
bListDone = True
 
Unload Me
 
End Sub
Nun habe ich das Problem die Daten in der Aufrufenden Routine reinzubekommen ...
Die einfachste Lösung wäre eine Modale Form hier wartet ja der aufrufende Code bis die Form geschlossen wird ... ist ja aber bei MDIChild nicht machbar (oder irre ich mich da?)
Dim nArr As Variant
 
Unload frmSelectionMulti
With frmSelectionMulti
    .SetMode = 1
    .Show 1  'Modal bei MDIChild nicht möglich
 
    If .IsFertig = True Then
       nArr = .Get_IDList() 
       If IsArray(nArr) Then
            'Array Verarbeiten        
       End If                    
    End If
End With
Hier nun der momentane "Ist-Zustand" aber mit der Schleife finde ich das ganze nicht so sonderlich praktisch, wenn man da irgendwo mal was vergisst zu setzen oder der User was unvorhergesehenes macht würde die ja ewig weiterlaufen ...
Dim nArr As Variant
 
Unload frmSelectionMulti
With frmSelectionMulti
    .SetMode = 1
    .Show
 
    Do While .IsFertig = False
        'Hier muss natürlich noch ne Prüfung rein ob das Formular einfach 
        ' geschlossen wurde... 
        DoEvents
    Loop
 
    nArr = .Get_IDList
 
    If IsArray(nArr) Then
        'Array verarbeiten
    End If
End With
Gibt es überhaupt ne Möglichkeit die Anforderungen (also alle Formulare MDIChild und die Rückgabe einfach als Array) zu vereinen. Hatte auch schon mit dem Gedanken gespielt den Spass über CallByName irgendwie zu lösen und dem Selectionsformular einfach das aufrufende Objekt und die Prozedur die dann ausgeführt werden soll zu übergeben .. diese würde dann aber wieder auf Modularer Ebene nicht funktionieren wegen der Objektangabe in CallByName().

Vielleicht hat noch jemdand nen Tip für mich.

Gruss
Sebastian

Beitrag wurde zuletzt am 28.09.11 um 15:05:32 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
MDI Child Werte zurückgeben1.221sebbi28.09.11 15:03
Re: MDI Child Werte zurückgeben603Dirk28.09.11 16:19
Re: MDI Child Werte zurückgeben597sebbi28.09.11 16:31
Re: MDI Child Werte zurückgeben566Dirk28.09.11 16:46
Re: MDI Child Werte zurückgeben584sebbi29.09.11 08:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel