Avatar billede thomas_regin Nybegynder
05. juni 2002 - 19:45 Der er 5 kommentarer og
2 løsninger

Array af objekter?

Hejsa!

Jeg har en applikation, hvori jeg bruger en del forskellige objekter. Blandt andre webbrowser og richtext. Jeg skifter ofte imellem objekterne, og er lidt træt af, at skulle skrive object.visible = true/false for hvert objekt.. Er det ikke muligt, at lægge disse objekter ind i et loop eller array, for at skjule alle ubrugte objekter undtagen det man ønsker i fokus!?

Håber at spørgsmålet er forstået! :)

Tak for hjælpen,

Thomas Regin.
Avatar billede tjacob Juniormester
05. juni 2002 - 20:05 #1
Jo, men kun for Objekter (kontroller) af samme type. Du kan f.eks. have 10 textboxe, der hedder Text1(0) til Text(9), og så ændre properties i et loop.
Avatar billede tjacob Juniormester
05. juni 2002 - 20:05 #2
Lille fejl: Text1(0) til Text1(9)
Avatar billede kedde65 Praktikant
05. juni 2002 - 20:07 #3
Du kan bruge en collection til det du ønsker. Jeg har lavet en textbox en combobox og en trykknap på en formular og brugt flg. kode.

Dim Col As Collection

Private Sub Command1_Click()
    For Each Item In Col
        Item.Visible = Not Item.Visible
    Next
End Sub

Private Sub Form_Load()
    Set Col = New Collection
    Col.Add txt
    Col.Add combo
End Sub

VH CK
Avatar billede thomas_regin Nybegynder
05. juni 2002 - 21:43 #4
Hejsa igen!

Tjacob,

Det holder desværre ikke, at jeg kun kan få fat i én type objekter! ;)

Kedde,

God ide med en collection, men hvordan sender jeg mit objekt til en funktion?.. Jeg har f.eks en sub der hedder

Private sub SwitchWin(byVal oldWin As Object)

End Sub

Hvis jeg så prøver at sende min RTF-box til sub'en:

SwitchWin RtfBox

Så melder den sgu' fejl! Det samme før sig gældende ved RtfBox.Object.

Hvordan sender jeg et objekt til en funktion!?

På forhånd tak,

Thomas.
Avatar billede kedde65 Praktikant
05. juni 2002 - 23:10 #5
Du skal i hvertfald som det første sende din parameter med som en reference ByRef og ikke som en værdi som du gør med ByVal.

Jeg har udvidet koden lidt :-)

Dim Col As Collection

Private Sub Command1_Click()
    Switch Col.Item(1)
    For Each Item In Col
        Item.Visible = Not Item.Visible
    Next
End Sub

Private Sub Form_Load()
    Set Col = New Collection
    Col.Add txt
    Col.Add combo
End Sub

Public Sub Switch(ByRef obj As Object)
    MsgBox obj.Visible
End Sub

VH CK
Avatar billede johs_j Novice
06. juni 2002 - 09:11 #6
Private Sub Command2_Click()
' alle RichTextBox bliver synlige
    Dim Kontrol As Control
    For Each Kontrol In Me.Controls
        If TypeOf Kontrol Is RichTextBox Then
            Kontrol.Viseble = True
        End If
    Next
End Sub
Avatar billede thomas_regin Nybegynder
20. september 2002 - 13:49 #7
Ups. Jeg glemte lige at vende tilbage på dette spørgsmål.

Det endte med at jeg droppede dette med objekterne og fortsatte som vanligt, fordi tingene ikke helt funkede efter hensigten.

Jeg har derfor besluttet at dele pointene imellem jer.

Undskyld ulejligheden og tak for hjælpen ;)

Med venlig hilsen,

Thomas Regin.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester