Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[VB6] Frame weergeven dmv combobox

None
5 antwoorden
  • Ik heb voor school een opdracht om een Programma te maken voor een verzekerings maatschappij, waarmee gegevens in de computer in gevoerd kunnen worden. Onder andere moet er een functie in komen te zitten dat er maximaal 5 kinderen verzekerd kunnen worden. Ik heb nu 5 frames gemaakt voor de kinderen, en die verborgen. Ook heb ik een combobox met de waardes 1 t/m 5 gemaakt. Hoe kan ik er nou voor zorgen dat als ik in de combobox 3 invul, er 3 frames voor de kinderen komen te staan ?

    De frames heten kind1 t/m kind5 en de combobox heet aantal_kinderen.
    Ik had al iets gekregen van een docent, maar dit werkt niet… :

    [code:1:811cae80a2]
    Private Sub aantal_kinderen_Change()

    If aantal_kinderen.ListIndex = 1 Then
    Kind1.Visible = True
    Kind2.Visible = False
    Kind3.Visible = False
    Kind4.Visible = False
    Kind5.Visible = False
    end if

    End Sub
    [/code:1:811cae80a2]

    En dan ook voor de andere waardes

    bij twee optionBoxen, heb ik het volgende neergezet, en dit werkt…:
    [code:1:811cae80a2]Private Sub Option3_Click()
    Partner.Visible = True
    End Sub

    Private Sub Option4_Click()
    Partner.Visible = False
    End Sub[/code:1:811cae80a2]
  • Misschien kun je die frames ook dezelfde naam geven met een indexje beginnend bij 1. Dan krijg je kind(1) en kind(2) en zo. Dan kun je in je routine een tijdelijke integer variabele aanmaken en met die variabele terug tellen tot 1.

    [code:1:68dc5d874e]Private Sub aantal_kinderen_Change()
    Dim Teller as Integer

    For Teller = aantal_kinderen.ListIndex To 1
    Kind(Teller).Visible = True
    Next Teller

    End Sub[/code:1:68dc5d874e]

    Wat je verder met die options wil begrijp ik niet maar is het niet makkelijker om "
  • ik ben net drie weken bezig met vb, bij het vak User Interfaces… :) dus al dat programmeerwerk zegt me niet zoveel, we moeten alleen goed letten op de duidelijkheid, kleurgebruik e.d, het programmeren hoeven we niet heel goed te kennen.

    Maar als ik het goed begrijp, moet ik iedere frame hernoemen naar
    kind(1) t/m kind(5)

    //edit
    ik heb die code nu ingevoerd, en iedere frame de naam kind gegeven, en bij iedere frame de index ingesteld, beginnend bij 1. Maar het werkt niet :(
  • Ja, ik heb het gemaakt en het werkt inderdaad niet. Met de volgende code gaat het wel werken.

    [code:1:bd0793e367]Option Explicit

    Private Const MAX_AANTAL_KINDEREN = 5

    Private Sub Form_Load()
    Dim Teller As Integer

    For Teller = 0 To MAX_AANTAL_KINDEREN
    aantal_kinderen.AddItem "Kind " & CStr(Teller)
    If Teller > 0 Then
    Kind(Teller).Caption = "Kind " & CStr(Teller)
    Kind(Teller).Visible = False
    End If
    Next Teller

    aantal_kinderen.ListIndex = 0
    End Sub

    Private Sub aantal_kinderen_Click()
    Dim Teller As Integer

    For Teller = 1 To MAX_AANTAL_KINDEREN
    Kind(Teller).Visible = False
    Next Teller

    Teller = aantal_kinderen.ListIndex
    Do While Teller > 0
    Kind(Teller).Visible = True
    Teller = Teller - 1
    Loop
    End Sub[/code:1:bd0793e367]

    Merk op dat ik een constante aanmaak om het maximaal aantal kinderen op te geven. Deze kun je snel veranderen als je met grotere gezinnen rekening moet houden.

    Zie ook dat ik alle frames onzichtbaar maak voordat ik frames ga laten zien. Als je eerst een hoger aantal kinderen gekozen hebt en je moet er 1 of meer van af halen, dan wil je wel dat alle frames die je niet meer nodig hebt onzichtbaar worden.

    Met een klein aantal frames is dit de makkelijkste methode, maar als je met duizenden van die dingen zit dan kun je er misschien voor kiezen om alleen die frames weg te halen die je niet meer nodig hebt.
  • tnx voor de moeite ! ik lees dit nu ik thuis ben, maar op school heb ik een andere manier gebruikt, er hoefden maar 2 dingen verandert te worden nl. van _Change naar _Click en van .ListIndex naar .Value;
    [code:1:3e00868328]Private Sub aantal_kinderen_Click()

    If aantal_kinderen.Value = "1" Then
    Kind1.Visible = True
    Kind2.Visible = False
    Kind3.Visible = False
    Kind4.Visible = False
    Kind5.Visible = False
    End If

    End Sub

    [/code:1:3e00868328]

    Het programma moest 5 velden hebben voor kinderen

    Ik ga die manier van jou nog wel ff proberen :)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.