Advertentie | |
|
![]() |
||
Verwijderd
|
Citaat:
|
![]() |
|
Even de diverse stappen op een rij: je wilt een bepaald getal weergeven in het bovenste tekstvak. Stel dat je dit tekstvak TxtBox1 hebt genoemd en dat je voor het in te voeren getal de variabele Getal declareert. Je definieert dan: Getal=InputBox("Geef een getal op:"). Hiermee geef je via een invoervenster de waarde van Getal op. Om deze waarde in het bovenste tekstvak weer te geven gebruik je de opdracht TxtBox1.Text=Getal.
Nu wil je, afhankelijk van het keuzerondje dat je kiest, een bepaalde waarde in het tekstvak bij dat keuzerondje laten verschijnen. Omdat je 5 keuzerondjes hebt (zeg met de namen RBtn1, RBtn2, RBtn3, RBtn4 en RBtn5) moet je dus 5 keer controleren of een van deze keuzerondjes geselecteerd is. Zo ja, dan komt er in het bijbehorende tekstvak (zeg met de namen TxtBox2, TxtBox3, TxtBox4, TxtBox5 en TxtBox6) een getal te staan. Als er geen enkel keuzerondje geselecteerd is komt er in het onderste tekstvak (zeg met de naam TxtBox7) een 0 te staan. Stel dat het keuzerondje met de naam RBtn1 is geselecteerd. Deze eigenschap wordt in Visual Basic weergegeven als RBtn1.Checked=True. De eigenschap geeft dus een Boolean waarde als uitkomst. Je definieert nu een Boolean variabele Aangeklikt. Omdat je 5 keuzerondjes hebt krijgt Aangeklikt bij ieder keuzerondje de waarde RBtn.Checked, waarbij RBtn de naam van het desbetreffende keuzerondje voorstelt. Als Aangeklikt de waarde True heeft, dus als het keuzerondje is geselecteerd, moet er in het bijbehorende tekstvak (zeg TxtBox) een waarde Getal*AnderGetal worden opgeslagen. Je krijgt dus een instructie in de vorm Code:
Aangeklikt=RBtn.Checked If Aangeklikt=True Then TxtBox.Text=Getal*AnderGetal End If Code:
Select Case Aantal Case Aangeklikt=RBtn1.Checked If Aangeklikt=True Then TxtBox2.Text=Getal*AnderGetal1 End If Code:
Case Else TxtBox7.Text=0 End Select
__________________
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel
|
![]() |
|
Ok, kheb alles eens rustig overlezen. Enkele dingen begrijp ik niet..
-Wat? Ik heb een vakje waar ik een getal invoer (In jouw uitleg TxtBox1). Dan heb ik 5 keuzerondjes (RBtn 1-5). Je hebt dan naast elke RBtn nog een TxtBox (TxtBox2-6). TxtBox2-6=de geselecteerde Rbtn*TxtBox1. Als er geen enkele Rbtn geselecteerd is, dan verschijnt in TxtBox7 een 0. -Jouw uitleg Wat ik niet begreep uit jouw uitleg: 1) je wilt een bepaald getal weergeven in het bovenste tekstvak. Stel dat je dit tekstvak TxtBox1 hebt genoemd en dat je voor het in te voeren getal de variabele Getal declareert. Je definieert dan: Getal=InputBox("Geef een getal op:"). Hiermee geef je via een invoervenster de waarde van Getal op. Om deze waarde in het bovenste tekstvak weer te geven gebruik je de opdracht TxtBox1.Text=Getal. 2) Stel dat het keuzerondje met de naam RBtn1 is geselecteerd. Deze eigenschap wordt in Visual Basic weergegeven als RBtn1.Checked=True. (Misschien is het door mijn versie van access (2003) maar 'Checked' kent hij niet.) 3) Je definieert nu een Boolean variabele Aangeklikt. (Boolean? Ligt misschien voor de hand maar dat heb ik nog niet gezien in school..) |
![]() |
|
Ik ging er van uit dat je werkte in Visual Basic, maar omdat je aangeeft dat je Access 2003 gebruikt begrijp ik dat je in Visual Basic for Applications (VBA) werkt. In dat geval gebruik je de eigenschap Enabled in plaats van Checked. Een ander verschil is dat een keuzerondje in Visual Basic de objectnaam RadioButton heeft, en in VBA de objectnaam OptionButton.
Een Boolean variabele is een variabele die slechts 2 waarden kan aannemen: True of False. In dit geval ligt het gebruik van een Boolean variabele voor de hand omdat een keuzerondje of een selectievakje maar 2 toestanden kent: wel of niet geselecteerd.
__________________
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel
|
![]() |
|
![]() |
ok, nu begrijp ik het
nu gebeurt er nog 1 vreemd ding. code: If Opt1.Enabled = True Then TxtBox7 = TxtBox1 * 23 ElseIf Opt2.Enabled = True Then TxtBox7 = TxtBox1 * 30 End If Dit is een klein voorbeeldje maar het systeem kan ik uitleggen. Hetzelfde gebeurt als ik opt1 of opt2 kies. Hij doet altijd *23 weet jij waarom? |
![]() |
||
Citaat:
Laat ik voor de zekerheid maar even de volledige code vermelden, zoals die er uit zou moeten zien: Code:
Dim Getal As Integer, Aangeklikt As Boolean Getal=InputBox("Geef een getal op:") 'getal ingeven via invoervenster TxtBox1.Text=Getal 'getal weergeven in bovenste tekstvak Select Case Aangeklikt Case Aangeklikt=Opt1.Enabled If Aangeklikt=True Then TxtBox2.Text=Getal*21.6 End If Case Aangeklikt=Opt2.Enabled If Aangeklikt=True Then TxtBox3.Text=Getal*52.8 End If Case Aangeklikt=Opt3.Enabled If Aangeklikt=True Then TxtBox4.Text=Getal*68.4 End If Case Aangeklikt=Opt4.Enabled If Aangeklikt=True Then TxtBox5.Text=Getal*87 End If Case Aangeklikt=Opt5.Enabled If Aangeklikt=True Then TxtBox6.Text=Getal*58.6 End If Case Else 'als geen enkel keuzerondje geselecteerd is TxtBox7.Text=0 End Select
__________________
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel
|
![]() |
|
![]() |
2 zaken nu:
1: als ik jouw code laat lopen krijg ik een foutmelding en komt dit in het geel te staan: TxtBox1.Text = Getal 'getal weergeven in bovenste tekstvak 2: Die inputbox is eigenlijk niet nodig voor het resultaat dat ik wil. ieder rondje komt overeen met een getal. Als het rondje geselecteerd is gaat TxtBox1*het getal van het geselecteerde rondje. (bedankt voor je tijd en moeite) |
![]() |
||
Citaat:
Als je zonder invoervenster wilt werken veronderstel ik dat je het eerste tekstvak selecteert en daar zelf de waarde in typt waarmee je wilt werken. In dat geval kun je gewoon de instructie Getal=TxtBox1.Text gebruiken.
__________________
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel
|
![]() |
|
![]() |
mijn code nu:
Code:
Private Sub CmdBerekenen_Click() Dim Getal As Integer, Aangeklikt As Boolean Getal = TxtBox1.Text Select Case Aangeklikt Case Aangeklikt = Opt1.Enabled If Aangeklikt = True Then TxtBox2.Text = Getal * 21.6 End If Case Aangeklikt = Opt2.Enabled If Aangeklikt = True Then TxtBox3.Text = Getal * 52.8 End If Case Aangeklikt = Opt3.Enabled If Aangeklikt = True Then TxtBox4.Text = Getal * 68.4 End If Case Aangeklikt = Opt4.Enabled If Aangeklikt = True Then TxtBox5.Text = Getal * 87 End If Case Aangeklikt = Opt5.Enabled If Aangeklikt = True Then TxtBox6.Text = Getal * 58.6 End If Case Else TxtBox7.Text = 0 End Select End Sub ![]() |
![]() |
|
Volgens mij klopt die Enabled niet, hoor. In zowat alle omgevingen (Delphi, VB, Java, ...) staat Enabled voor het al dan niet bruikbaar zijn van dat vakje (als het grijs is, staat enabled op false). Maar ik heb hier geen Office staan om mee na te kijken, maar het zou me echt verbazen dat het enabled zou zijn. Om dat na te gaan heb je normaal iets als een Object Inspector (Delphi-term): een venstertje waarmee je alle eigenschappen van een visueel object kan bekijken en dus ook naam, caption (weergavetekst) enzo kan aanpassen, daar staat dan ook zoiets als Checked bij.
Maar goed, wat volgens mij niet klopt aan je code: je controleert nu op Aangeklikt, welke een boolean is, maar je weet bij het begin niet of die boolean true/false is in feite. Je bent dus in het wilde weg aan het controleren. Wat ik zou proberen, als je ook nog steeds die case wilt: Private Sub CmdBerekenen_Click() Dim Getal As Integer Code:
Getal = TxtBox1.Text Select Case True Case Opt1.Enabled TxtBox2.Text = Getal * 21.6 Case Opt2.Enabled TxtBox3.Text = Getal * 52.8 Case Opt3.Enabled TxtBox4.Text = Getal * 68.4 Case Opt4.Enabled TxtBox5.Text = Getal * 87 Case Opt5.Enabled TxtBox6.Text = Getal * 58.6 Case Else TxtBox7.Text = 0 End Select End Sub Een andere tip die ik geef: probeer wat te letten op je indentatie (witruimte voor je eigenlijke code), zoals bij mij. Ik weet dat VB er niet zo op let, en dat het waarschijnlijk niet aangeleerd wordt, maar door erop te letten, maak je je code VEEL leesbaarder, en hoe leesbaarder code, hoe makkelijker je er fouten uit kan halen omdat je de structuur direct ziet in plaats van dat je alles moet lezen. Waar je inderdaad ook op moet letten is het eventuele omzetten van het ene type naar het andere, al zou Basic dat misschien wel zelf doen; dat weet ik nu echt niet meer. In de meeste andere talen is het trouwens wel noodzakelijk (dan moet je overal waar die .Text enzo staat, die String nog door Val( ) gooien, zoals mathfreak al gezegd heeft).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
|
![]() |
|
![]() |
Bedankt,
ik voegde nu jouw code in maar hij gaf een foutmelding bij: Getal = TxtBox1.Text Dat kon ik verhelpen door overal de .Text weg te laten. Misschien komt het door de .Text weg te laten maar nu doet hij altijd TxtBox1*21.6. Hij houdt geen rekening met wat er geselecteerd is nu... |
![]() |
|
Dat lijkt me dan ook het idee van die Enabled: enabled is in elke grafische omgeving die ik ken: het al dan niet grijs zijn van het vakje. Of het aangevinkt is, dat wordt meestal aangegeven door checked, of value, of iets dergelijks. Maar ik heb hier geen Office staan, DUS dat moet je zelf zoeken, met welk veld je dat doet.
En volgens mij moet die .Text er wel bij, tenzij je heel rare dingen gedaan hebt. De reden is dat en TxtBox geen getal is, maar een TextBox en de waarde die ingevuld is, normaal dus met iets als .Text opgeroepen zou moeten worden, lijkt me; maar ik kan me natuurlijk vergissen (in dat geval daalt VB in mijn achting).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
|
![]() |
||
![]() |
Citaat:
![]() maar ik vrees inderdaad dat VB in je achting zal dalen. van .Text heb ik niks gezien op school.. |
![]() |
|
![]() |
JA!!!!
nu werkt het! ![]() ![]() ![]() Code:
Private Sub CmdBerekenen_Click() Getal = TxtBox1 Select Case True Case Opt1 = True TxtBox2 = Getal * 21.6 Case Opt2 = True TxtBox3 = Getal * 52.8 Case Opt3 = True TxtBox4 = Getal * 68.4 Case Opt4 = True TxtBox5 = Getal * 87 Case Opt5 = True TxtBox6 = Getal * 58.6 Case Else TxtBox7 = 0 End Select End Sub ![]() |
![]() |
|
Null is een waarde die geen waarde is, het komt eigenlijk neer op de computer die zegt 'ik weet niet waar dat object/dat item/... staat' (dus als je bv. een object, item, ... gebruikt vanuit een variabele, maar je hebt nog geen item in die variabele gestoken).
Bv. die TxtBoxen moet je eerst grafisch aanmaken, maar als je er bv. eentje wegdoet, en toevallig selecteer je het bijhorende vinkje, dan zal hij een NULL geven: hij vindt wel de variabele TxtBoxN, maar daarin zit er geen TxtBox, die variabele is leeg, oftewel NULL. (andere talen gebruiken soms ook NIL: not in list).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
|
Advertentie |
|
![]() |
Topictools | Zoek in deze topic |
|
|