Hej..... Döp de kontroller som ligger i en viss fram med ett namn så att du vet var de finns. Tex: Tja det var ju en lösning som var så klumpig att jag inte ens tänkt på den. Jag har ett änu klumpigare sätt ... :O)Kontroller i en frame
Fråga:
Hur kan jag ta reda på vilka controller som finns i en viss frame?
Det går ju inte att köra for each control in frame1 som man kan med
formulär: for each control in form1. Kan man kolla detta eller är det
bara de grafiska som är grupperat när man klistrar in kontroller i en frame?
Tycker dock att det inte borde finnas ett sätt, speciellt då man kan gruppera optionbuttons med hjälp av frames. VB håller ju då reda
på vilka optionbuttons som tillhör en viss fram!
/peterhSv: Kontroller i en frame
I frame1:
cmdOK_f1
cmdAvbryt_f1
Används sedan kontrollernas name-property
cmdOK_f1.Name för att hitta alla kontroller som finns i en frame. Sv: Kontroller i en frame
Tack i alla fall. Men det är nog inte så jag vill lösa problemet om det går att göra det snyggare.
/peterhSv: Kontroller i en frame
<code>
Option Explicit
Private mOptionGroup As Collection
Public Function ContainedControls(Controls As Object, Container As Object) As Collection
Dim Ctrl As Control
On Error Resume Next
Set ContainedControls = New Collection
For Each Ctrl In Controls
If Ctrl.Container Is Container Then
If Err.Number Then
Err.Clear
Else
ContainedControls.Add Ctrl
End If
End If
Next
End Function
Private Sub Command1_Click()
Dim sMsg As String
Dim Ctrl As Control
For Each Ctrl In mOptionGroup
sMsg = sMsg & Ctrl.Name & vbCrLf
Next
MsgBox sMsg
End Sub
Private Sub Form_Load()
Set mOptionGroup = ContainedControls(Controls, Frame1)
End Sub
</code>