Vraag & Antwoord

Programmeren

[VB6] Frame weergeven dmv combobox

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 "[color=green:68dc5d874e]Partner.Visible = Not Partner.Visible[/color:68dc5d874e]" te doen? Op die manier wordt de Booleaanse waarde omgekeerd, ongeacht wat het op dat moment is.
  • 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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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