grootste

Status
Niet open voor verdere reacties.

Tha_Vink

Gebruiker
Lid geworden
5 feb 2005
Berichten
121
Hey VB-ers

Ik heb een vraagje over een opdracht voor school. Er moeten drie tekstboxen gemaakt worden waarin nummers kunnen worden gezet. Onderaan het form word een label of nog een tekstvak geplaatst. Door middel van een knop die in het midden van het form geplaatst word moet in het onderste object komen te staan in welk tekstbox het grootste getal staat.

Ik hoop dat ik duidelijk ben geweest. Bijvoorbaat dank en groetjes

Tha Vink
 
misschien heel simpel bedacht

If naam textbox 1 > naam textbox 2 (en 3 maar weet ff niet hoe ik dat neer moet zetten) then

naam label.text = "naam textbox 1"

end if

en dit even uitbereiden met if naam textbox 2.....


Is even snel bedacht, dus een globale opzet, kunnen fouten inzitten, maar denk dat je het op zo'n manier zou kunnen proberen.
 
Tha_Vink,

Onderstaande code heb ik al getest en het werkt goed.
Maak in ieder geval een array voor de text-box.
Ik hoor het wel, wanneer je niet weet hoe dat moet.

Code:
Private Sub Command1_Click()
   Dim Teller1 As Integer
   Dim Teller2 As Integer
   Dim Teller3 As Integer
   Dim numeriek As Integer
   Dim AantalGetallen As Integer
   Dim Getallen(3) As Integer
   AantalGetallen = 3

   For Teller1 = 0 To AantalGetallen - 1
       'Zet de getallen in een array.
       'Je moet dus de 3 texboxen een
       'index geven.
       numeriek = Val(Text1(Teller1))
       Getallen(Teller1) = numeriek
   Next Teller1
   Teller1 = Teller1 - 1
   For Teller3 = Teller1 To 1 Step -1
       For Teller2 = 0 To AantalGetallen
           If Getallen(Teller3) = Getallen(Teller2) Then
               'Hier wordt het grootste getal al bepaald en
               'daarom verlaten we de sub.
               Label1 = Getallen(Teller3)
               Exit Sub
           End If
           'Hier wordt steeds naar het grootste
           'getal gezocht.
           If Getallen(Teller3) < Getallen(Teller2) Then
               Exit For
           End If
       Next Teller2
   Next Teller3
End Sub

Dennis.
 
Tha_Vink,

Ik ben straks voor een paar uurtjes weg, daarom vertel ik je nu maar even voor de zekerheid hoe je een control(in jouw geval gaat het om een text-box) kunt indexeren.

Stel dat het Form leeg is, we plaatsen nu een text-box.
Zodra het op het Form geplaatst is, staat dat control ook geselecteerd.
(men vergeet te gauw, het juiste control eerst te moeten selecteren alvorens een bepaald eigenschap aan dat control te kunnen meegeven)

1) Geef een rechtsklik op dat control en klik op Copy.
2) Geef nu een rechtsklik op een leeg gedeelte v.h. Form en klik op Paste. Er verschijnt een Message-box met de melding:
"You already have a control named 'Text1'. Do you want to create a control array?"

Bevestig deze melding door op de knop 'Yes' te klikken. Een copy van het eerste text-box control is nu gemaakt en bevindt zich helemaal links boven v.h. Form.

3) Versleep dat control naar een plaats waar je het hebben wilt.
4) Herhaal stap 2(dit wordt dan de 3e text-box).
Aangezien VB 'weet', dat de bewerking copy/paste die je nu gaat verrichten om hetzelfde control gaat, zal de melding onder punt 2 genoemd niet meer verschijnen.

De 3 text-boxen heten dan:
Text1(0), Text1(1) en Text1(2)
De indexen zijn dus 0, 1 en 2

En dus niet:
Text1, Text2 en Text3
Deze text-boxen zijn dus niet geïndexeerd.
Je kunt ze niet in een array bewerken. Het werken met array heeft altijd voordelen.

Dennis.
 
Laatst bewerkt:
Tha_Vink,

Sorry, moest even de code aanpassen. Onderstaande code is wel goed. Ik heb bij de vorige code toch nog wat aanpassingen moeten doen.
Nadat alle 2 lussen zijn doorlopen, bevat Getallen(2) de hoogste waarde. Die maak je op een label of text-box zichtbaar.
Op een text-box moet het zo:
(als de naam v.d. text-box Text2.text is)
Text2.Text = Getallen(2)
Ik heb bij onderstaande code een label gebruikt, maar kan evengoed ook een gauge zijn. Het is maar hoe je het hebben wilt.

Code:
Private Sub Command1_Click()
   Dim Teller1 As Integer
   Dim Teller2 As Integer
   Dim Teller3 As Integer
   Dim numeriek As Integer
   Dim AantalGetallen As Integer
   Dim Getallen(4) As Integer
   AantalGetallen = 3

   For Teller1 = 0 To AantalGetallen - 1
       'Zet de getallen in een array.
       'Je moet dus de 3 texboxen een
       'index geven.
       numeriek = Val(Text1(Teller1))
       Getallen(Teller1) = numeriek
   Next Teller1
   Teller1 = Teller1 - 1
   For Teller3 = 0 To AantalGetallen - 1
       For Teller2 = Teller3 To AantalGetallen
           If Getallen(Teller2) < Getallen(Teller3) Then
               'Hier wordt het grootste getal bepaald.
               'Als bovenstaande bewering waar is, dan
               'verwisselen we die waarden.
               Getallen(Teller2) = Getallen(Teller3)
           End If
           'Op dit punt aangekomen, zoeken wij opnieuw
           'naar het grootste getal. Uiteindelijk heb je
           'alleen de waarde die in Getallen(2) zit nodig.
           'Dit getal wordt aan het einde v.d. 2 lussen
           'op Label1 zichtbaar gemaakt.
       Next Teller2
   Next Teller3
   Label1 = Getallen(2)
End Sub

Dennis.
 
he dennis

bedankt voor je antwoord.

Ik zal het binnenkort ff proberen...

Ben nu ff met wat anders bezig
 
Geplaatst door Tha_Vink
in welk tekstbox het grootste getal staat.
Beste Tha_Vink,

Bovenstaande had ik niet goed gelezen. Het spijt mij verschrikkelijk!:o Daarom hieronder alsnog de juiste code. Ik was heel toevallig even online en keek even in de sectie programmeren/VB(A), en bemerkte dat ik jouw vraag niet goed had gelezen, sorry nogmaals.

(Zelf ben ik niet meer zo vaak op Helpmij, heb het te druk)

Code:
Private Sub Command1_Click()
   Dim Teller1 As Integer
   Dim Teller2 As Integer
   Dim Teller3 As Integer
   Dim numeriek As Integer
   Dim AantalGetallen As Integer
   Dim Getallen(3) As Integer
   Dim Text_Box(3) As Integer
   Dim Boodschap As String
   AantalGetallen = 3

   For Teller1 = 0 To AantalGetallen - 1
       'Zet de getallen in een array.
       'Je moet dus de 3 texboxen een
       'index geven.
       numeriek = Val(Text1(Teller1))
       Getallen(Teller1) = numeriek
       Text_Box(Teller1) = numeriek
   Next Teller1
   For Teller3 = 0 To AantalGetallen - 1
       For Teller2 = Teller3 To AantalGetallen
           If Getallen(Teller2) < Getallen(Teller3) Then
               'Hier wordt het grootste getal bepaald.
               'Als bovenstaande bewering waar is, dan
               'verwisselen we die waarden.
               Getallen(Teller2) = Getallen(Teller3)
           End If
           'Op dit punt aangekomen, zoeken wij opnieuw
           'naar het grootste getal. Uiteindelijk heb je
           'alleen de waarde die in Getallen(2) zit nodig.
           'Dit getal wordt aan het einde v.d. 2 lussen
           'op Label1 zichtbaar gemaakt.
       Next Teller2
   Next Teller3
   'Onderstaande lus controleert welke Text-box
   'de hoogste waarde bevat.
   For Teller1 = 0 To AantalGetallen - 1
       If Text_Box(Teller1) = Getallen(2) Then
           Boodschap = "De " & (Teller1 + 1) & "e Text-box " _
           & "bevat de hoogste waarde."
           Label1.Caption = Boodschap
           Exit Sub
       End If
   Next Teller1
End Sub

Mvg,

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan