Vet någon hur man gör för att nå nyskapade formulär, tex om man vill skriva i en TextBox. Formulären spottas fram med koden nedan. Jag ser att du har två alternativ: Skapar en egen samling Tackar, det fungerar fint! Om du förklarar vad du vill göra i ett mer större perspektiv så kanske jag kan ge en bättre lösning. Hej Det inser jag. Men jag antar att du har ett behov av att komma åt fönstrena. Dett är detta behov jag bad dig identifiera. ok, jo behovet finns. Just nu identifierar jag formulären med hjälp av dess Caption, vilka tilldelats olika nummer (ej slump eller ordningsnummer. Tex kan fönster 2 och 4 vara öppna medan användaren valt att tillfälligt stänga fönster 1 och 3). Inte en optimal lösning med Caption:en... finns det ett enklare sätt? Indexering? Åhhhh... New frmDocument (nås inte!!)
Märkte att följande inte gick hem, frmDocument(2).txtBla.text = "Hej"
och har sedan försökt med både ditt o datt...
Private Sub LoadNewDoc()
Static lDocumentCount As Long
Dim frmD As frmDocument
lDocumentCount = lDocumentCount + 1
Set frmD = New frmDocument
frmD.Caption = "Document " & lDocumentCount
frmD.Show
End Sub
Sv: New frmDocument (nås inte!!)
Modul:
Private mDocuments As New Collection
Public Sub AddDocumet(Value As frmDocument)
mDocuments.Add Value, "hWnd:" & Value.hWnd
End Sub
Public Sub RemoveDocumet(Value As frmDocument)
mDocuments.Remove "hWnd:" & Value.hWnd
End Sub
Public Function Documets(Index As Long) As frmDocument
Set Documets = mDocuments.Item(Index)
End Function
Public Function NumberOfDocumets() As Long
NumberOfDocumets = mDocuments.Count
End Function
frmDocument
Private Sub Form_Load()
AddDocumet Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
RemoveDocumet Me
End Sub
Eller använder Forms samlingen:
Function Documents(Index As Long) As frmDocument
Dim Form As Form
Dim Count As Long
For Each Form In Forms
If TypeOf Form Is frmDocument Then
Count = Count + 1
If Count = Index Then
Set Documents = Form
Exit For
End If
End If
Next
End Function
Public Function NumberOfDocumets() As Long
Dim Form As Form
Dim Count As Long
For Each Form In Forms
If TypeOf Form Is frmDocument Then
Count = Count + 1
End If
Next
NumberOfDocumets = Count
End Function
Sv:New frmDocument (nås inte!!)
når nu ett formulär med:
Private Sub Command2_Click()
Dim fdoc As frmDocument
Set fdoc = Documents(2) 'nr på önskat frmDocument
fdoc.SetFocus
fdoc.rtfText.Text = "Hej"
End Sub
nummerna ändras dock om man stänger något av fönstren, men det kan man ganska lätt hantera med någon egen personlig numrering. Om någon undrar...
/bn
Sv: New frmDocument (nås inte!!)
Är det ett chattprogram du gör? Är det att du vill länka ett fönster till en annan användare?Sv:New frmDocument (nås inte!!)
Jag filar på ett redovisningsprogram som beroende på indatafilens innehåll öppnar ett antal fönster, vilka i sin tur skapas från samma formulär. Sv: New frmDocument (nås inte!!)
Sv:New frmDocument (nås inte!!)
Det jag behöver göra då och då är att rita i en picturebox som finns med redan i originalformuläret.
(ps. om man ritat något i en picturebox (tex med .Line) varför försvinner detta om man tillfälligt har ett annat program eller fönster över. Finns det en smart lösning/inställning eller är det bara att rita om med jämna mellanrum för att försäkra sig om att linjerna finns där??) oj.. detta kanske skulle bli en egen fråga...Sv:New frmDocument (nås inte!!)
Vilken lättnad!!! Hur f-n har jag kunnat missa denna inställning??
Tusen tack!!!