vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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
Re: Formverwaltung in der MDIForm Part III 
Autor: Manfred X
Datum: 21.03.10 12:02

Hallo!

Ich vermute, mit dem Begriff MDIChild bezeichnest
Du Dein MDI-Stammformular (was kein MDI-Child ist!)

Die Fehlermeldung kommt deshalb, weil Du eine
Zugriffsvariable deklarierst, aber keine Formular-Instanz
erstellt hast auf das diese Variable zeigt
- Schlüsselwort "New"

Private Sub Command1_Click()
   Dim oForm As NEW Form1
   oForm.Picture1.Visible = True
   Unload Me
End Sub
Was dieser Code allerdings soll, verstehe ich nicht.
(Du erstellst [jetzt] eine neu Instanz des Formular
lokal und entlädst dann die Instanz der Form2 in der
dieses Formular "oForm" deklariert worden ist.

Wenn Du Instanzen von Form1 in deinem MDI-Stammformular
erstellst, wie verwaltest Du diese Instanzen eigentlich.


Nur um das Prinzip einer Childverwaltung
sichtbar zu machen, folgender Code gehört (grob getestet)
ins MDI-Stammformular. Er verwaltet eine Liste
von Form1-Childs (Erstellen, Zugreifen, Löschen)
über die Routinen: CreateChild, GetChild, DeleteChild.
GetIds liefert die aktuell verfügbaren ID-Nummern.

Benötigt im MDI-Stamm (MDIForm1) werden die Menüpunkte
mnuCreateChild und mnuDeleteChild.

Die Liste der Form1 wird als Collection geführt
und die Identifikation erfolgt über eine permanent
fortlaufende ID-Nummer in der Tag-Eigenschaft.

Option Explicit
Private childs_form1 As New Collection
 
Private Sub mnuCreateChild_Click()
      Dim newf1 As Form1
      Set newf1 = CreateChild
      newf1.Show
End Sub
 
Private Sub mnuDeleteChild_Click()
    If childs_form1.Count = 0 Then Exit Sub
 
    Dim IDstr As String
    Dim ids() As Integer, Index As Integer
    ids = GetIDs
    For Index = 1 To UBound(ids)
       IDstr = IDstr & (CStr(ids(Index)) & "  ")
    Next Index
 
    Dim t As String
    t = InputBox("Child-IDs: " & IDstr & vbCrLf & _
    "Welche ID gelöscht werden?")
    If t = "" Then Exit Sub
    On Error Resume Next
    DeleteChild CInt(t)
End Sub
 
Public Function CreateChild() As Form1
    Static perm_index As Integer
    perm_index = perm_index + 1
    Dim f As New Form1
    f.Tag = perm_index
    childs_form1.Add f
    Set CreateChild = f
End Function
 
Public Function GetChild(ByVal ID As Integer) As Form1
    Dim found As Boolean, f As Form1
    For Each f In childs_form1
        If CInt(f.Tag) = ID Then Set GetChild = f: Exit For
    Next f
End Function
 
Public Function DeleteChild(ByVal ID As Integer)
   Dim Index As Integer, f As Form1
   For Index = 1 To childs_form1.Count
       Set f = childs_form1(Index)
       If CInt(f.Tag) = ID Then
          childs_form1.Remove Index
          Unload f: Exit For
       End If
   Next Index
End Function
 
Public Function GetIDs() As Integer()
    Dim ids() As Integer
    ReDim ids(childs_form1.Count) As Integer
    Dim Index As Integer, f As Form
    For Index = 1 To childs_form1.Count
        Set f = childs_form1(Index)
        ids(Index) = CInt(f.Tag)
    Next Index
    GetIDs = ids
End Function
In allen Formularen ist der Zugriff auf ein
bestimmtes Child-Fenster möglich durch

Dim f1 As Form1
Dim ids() As Integer: ids = MDIForm1.GetIDs
Set f1 = MDIForm1.GetChild(ids(1))
f1.Picture1.Visible = False
Form1 darf nicht direkt per X-Button entladen werden,
sondern nur über die Listenverwaltung:

 
Private Sub Form_Unload(Cancel As Integer)
    Dim ID As Integer
    ID = CInt(Me.Tag)
    MDIForm1.DeleteChild ID
End Sub


Beitrag wurde zuletzt am 21.03.10 um 12:06:24 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Formverwaltung in der MDIForm Part III1.825Sophus20.03.10 20:55
Re: Formverwaltung in der MDIForm Part III1.295Manfred X20.03.10 22:59
Re: Formverwaltung in der MDIForm Part III1.315Sophus20.03.10 23:48
Re: Formverwaltung in der MDIForm Part III1.302Manfred X21.03.10 12:02
Re: Formverwaltung in der MDIForm Part III1.345Sophus21.03.10 15:35
Re: Formverwaltung in der MDIForm Part III1.333Manfred X21.03.10 17:25
Re: Formverwaltung in der MDIForm Part III1.286Manfred X22.03.10 01:14
Re: Formverwaltung in der MDIForm Part III1.364Sophus22.03.10 18:05
Re: Formverwaltung in der MDIForm Part III1.278Manfred X22.03.10 19:41
Re: Formverwaltung in der MDIForm Part III1.309Sophus22.03.10 21:42
Re: Formverwaltung in der MDIForm Part III1.320Manfred X23.03.10 00:09
Re: Formverwaltung in der MDIForm Part III1.280Sophus23.03.10 00:39
Re: Formverwaltung in der MDIForm Part III1.262Manfred X23.03.10 01:33
Re: Formverwaltung in der MDIForm Part III1.187Sophus23.03.10 03:13
Re: Formverwaltung in der MDIForm Part III1.211Manfred X23.03.10 03:26
Re: Formverwaltung in der MDIForm Part III1.199Manfred X23.03.10 04:23
Frühschicht übernimmt 7.00 Uhr1.359Manfred X23.03.10 07:20
Danksagung ;) Und die Lösung für alle!1.228Sophus23.03.10 14:04

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