Type Mismatch får jag när jag försöker skapa ett MDI-child med hjälp av koden nedan, medan det går att skapa MDI-childs av vissa formulär. GetDocument är deklarerad som Form. Varför går det inte med alla formulär? Hej För lite information. Vad är doc deklarerad som? Hur ser GetDocument() funktionen ut? Public Function GetDocumentIndexByID(ByVal ID As Integer) As Integer Public Function GetDocumentIndexByID(ByVal ID As Integer) As Integer Såg just att jag postade fel funktion. Så här ser GetDocuments ut Nu har jag hittat felet, fast dessvärre inte lösningen. NewDocument() skapar ett nytt frmDocument och då går det inte att skapa ett nytt dokument av något annat formulär. Ska man använda sig av olika NewDocument():s eller hur ska man lösa detta? Du ger inte tillräckligt med information för att hjälpa dig. Om det är strul med NewDocument(), skicka med koden för den. Så ved ser vad du skrivit. Berätta oxå vad det är du vill göra. Public Function NewDocument() As Integer >Tycker att MDI child används för ofta och felaktigt. Varför kan du inte göra en liknande rutin som laddar in ett formulär av din typ? Om du har olikatyper av dokument som är olika formulär så tyker jag du ska skapa en klass och implementera dess gränssnit på dina formulär. Kan du använda early bindings. MDI-childs
Set doc = GetDocument(NewDocument)
/ PeterSv: MDI-childs
Tycker att MDI child används för ofta och felaktigt.
Du kan ofta lösa samma problem med en Panel eller Frame
En Form med Paneler Tabstrip och eller Frames som man
sätter Visible = False och True efter behag.
Budskapet är använd bara en(1) Form in i det längsta.
tycker
SvenSv: MDI-childs
Sv: MDI-childs
Dim i As Integer
For i = 1 To Documents.Count ' Vi går igenom alla öppna dokument
If GetDocument(i).ID = ID Then ' Och jämför varje dokuments ID-nummer med det vi är ute efter!
GetDocumentIndexByID = i
Exit Function
End If
Next
End Function
När jag deklarerar doc som något annat formulär än frmDocument eller Form funkar det inte.
/ PeterSv: MDI-childs
Dim i As Integer
For i = 1 To Documents.Count ' Vi går igenom alla öppna dokument
If GetDocument(i).ID = ID Then ' Och jämför varje dokuments ID-nummer med det vi är ute efter!
GetDocumentIndexByID = i
Exit Function
End If
Next
End Function
alltså. hur ska vi kunna veta hur era egna funktioner ser ut?
1. Vad gör GetDocuments
2. Är documents en collections som består av formulär av typen frmDocument?
3. Vad får du för fel?Sv: MDI-childs
Public Function GetDocument(Index) As Form
On Local Error Resume Next
Set GetDocument = Documents(Index)
End Function
1. GetDocuments returnerar ett formulär
2. Documents är en vanlig Collection
3. Type MismatchSv: MDI-childs
/ PeterSv: MDI-childs
Sv: MDI-childs
Dim newDoc As New frmDocument ' Vi laddar in en till frmDocument form
newDoc.ID = FindFreeID() ' Vi ger den nya formen ett unikt ID-nummer, så vi kan hitta den senare!
Documents.Add newDoc ' Vi lägger in objektet i vår Collection som heter Documents
NewDocument = newDoc.ID 'Vi returnerar ID-nummret på den nya formen
End Function
/ PeterSv: MDI-childs
Det kan nog stämma, jag kom just på att det inte var så bra att skapa dem där fönstren som MDI-childs.
/ PeterSv: MDI-childs
Sv: MDI-childs
Förstår inte varför du jobbar dig med in för dina dokument?