Avatar billede tubber Juniormester
04. maj 2005 - 11:59 Der er 12 kommentarer og
1 løsning

Advanceret Select Case

Jeg har en række knapper der ændre nogle tal.
Jeg har så forskellige kreterier der sætter grænser for hvad knappen må gøre.....

Som jeg umiddelbart ser det skal jeg lave min select case for hver knap og en if i hver case eller også noget med if i if, men mener selv at den løsning vil sløve mit program......

Så nu er mit spørgsmål så om jeg kan lave en case et sted i mit program, som ligger et sted og så sætter variabler og jeg så sætter min if op i hver knap som så chekker variablen ?

Min nuværende løsning med case:

Private Sub Command1_Click()
Select Case
  Case 0
      If værdi >= 10 then
          Msgbox("Info")
      Else:
          Text1.Text = CInt(Text1.Text) + 1
          Text2.Text = CInt(Text2.Text) - 1
      End If
  Case 1
      If værdi >= 12 then
          Msgbox("Info")
      Else:
          Text1.Text = CInt(Text1.Text) + 1
          Text2.Text = CInt(Text2.Text) - 1
      End If
  .
  .
  .
  Case 49
      If værdi >= 48 then
          Msgbox("Info")
      Else:
          Text1.Text = CInt(Text1.Text) + 1
          Text2.Text = CInt(Text2.Text) - 1
      End If
End Select

Og den skal så ind i hver knap....

Det jeg tænkte:

Select Case
  Case 0
      var1 = 10
  Case 1
      var1 = 12
  .
  .
  .
  Case 49
      var1 = 48
End Select

Og så i knappen:

Private Sub Command1_Click()
If værdi >= var1 then
  Msgbox("Info")
Else:
  Text1.Text = CInt(Text1.Text) + 1
  Text2.Text = CInt(Text2.Text) - 1
End If
End Sub

Ved godt jeg kunne ligge den i en sub eller funktion, men så skal casen kørers hver gang anyways, bare koden vil blive mere overskuelig.......

Håber det er forståeligt ellers spørg løs :)

/Tubber
Avatar billede tubber Juniormester
04. maj 2005 - 12:01 #1
Ja andre forslag motages også gerne
Avatar billede martin_moth Mester
04. maj 2005 - 12:49 #2
"Så nu er mit spørgsmål så om jeg kan lave en case et sted i mit program, som ligger et sted og så sætter variabler og jeg så sætter min if op i hver knap som så chekker variablen ?"

Øhhh - a hva for en fisk?
Avatar billede joern Nybegynder
04. maj 2005 - 13:03 #3
Hej.

Jeg tror det vil være mere forståeligt, hvis du i stedet for kode-eksemplet skriver hvad det er, du vil opnå - sådan i klart daglig-dansk.

'Select case' skal i øvrigt have en parameter:  Hvilken variabel skal case tages fra

Select case n
  case 0 to 7
    f = 11
  case 8 to 19
    f = 52
End select

M.v.h.  Jørn
Avatar billede tubber Juniormester
04. maj 2005 - 13:27 #4
hehe joern jeg spurgte ikke om hvordan jeg laver en select case, men om jeg kan lave den ET sted i mit program istedet for hver knap eller i en Sub  så den skal køres hver gang der trykkes på en knap.....

Men der imod så den ligger et sted så casen ikke skal kørers hver gang der trykkes på en knap......
Avatar billede tubber Juniormester
04. maj 2005 - 13:40 #5
Eller kan man lave noget ala det her:

Select Case
Case 0
Command1_Click()
kode
End Sub
Case 1
Command1_Click()
kode
End Sub
End select

???
Avatar billede joern Nybegynder
04. maj 2005 - 13:47 #6
Hej.

Jeg tror ikke at Select case er så tolerant at parameteren kan undværes!

Hvis dine knapper er et control-array skal der kun være én forekomst af din udvælgelse.  Index for knappen vil angive hvilken knap der er trykket på.

Du skriver at man bare kan spørge, det gør jeg ved at bede om en forklaring på formålet.  Dette ignorerer du, derfor står jeg at spørgsmålet.

M.v.h. Jørn
Avatar billede tubber Juniormester
04. maj 2005 - 14:03 #7
Jørn: jeg kan ikke se hvad formålet har med det at gøre......
Desuden har jeg skrevet formålet.....
Formålet er at øge en værdi i et tekstfelt via en knap......det jeg gerne vil vide er om jeg kan sætte en select case uden for knappen så den ikke skal kører hver gang der trykkes på en knap.......casen skal bruges fordi der er forskellige kreterier der skal være opfyldt......

Og til det med parametren så ved jeg godt der skal være en, men det er spg. uvedkommende for mit spg er det samme om der er parametre på eller ej......

Fordi jeg spørger er fordi der er 50 muligheder og inde i hver mulighed kommer der en if sætning, og så er det jeg gerne vil vide om mit program kan vide hvad case der skal bruges inden jeg trykker på knappen så den ikke skal kører både case og if når der trykkes på knappen......
Avatar billede martin_moth Mester
04. maj 2005 - 14:53 #8
Jeg forstår næsten problemet nu. Kun næsten. Kan du ikke forklare meget tydeligt, hvad du vil opnå? Du ved, skære det ud i pap :o)

Du mangler stadig af forklare

"Select case
Case 0
  ...
Case 1
  ..."

Select case HVAD - hvad er det der skal være 0, 1, ...?
Som joern siger mangler du en parameter.

Selvom jeg ikek helt fatter hvad det er du vil, synes jeg at joerns forslag om et control array kan løse en del af dine problemer.
Avatar billede tubber Juniormester
04. maj 2005 - 15:26 #9
Jeg har 2 knapper der hører til 1 tekst felt........

Den ene knap trækker fra ud fra en række kreterier
Den anden lægger til ud fra andre kreterier

Når jeg trykker på den der lægger til kører den PT en case der hedder

Select Case CInt(Text9.Text)
Case 1
If Cint(Text8.Text) = Then
  MsgBox "Kan du ikke"
Elseif Cint(Text8.Text) = værdi
  MsgBox "Kan du heller ikke"
Else:
  Text1.Text = CInt(Text1.Text) + 1
  Text8.Text = CInt(Text8.Text) - 1
End If
Case 2

Helt op til Case 50
End Select

Så er det jeg gerne vil vide om jeg kan flytte min case uden for knappen så den ikke kørers når der trykkes på knappen.
Det den så skal når jeg trykker på knappen er så at den skal ha 2 faste værdier som den skal bruge i min if......så jeg ikke får en if inde i en case......

Jeg har pt løst lidt af problemet ved at lave en if med case i og så en if igen i case, det gør nemlig at den øverste if under hver case tilfælde er fjernet og køres kun en gang, og hvis det er tilfældet kører den slet ikke case.......
Avatar billede martin_moth Mester
04. maj 2005 - 15:38 #10
Det var ikke helt i pap - tror jeg springer fra

PS: ad vide hvad
  "If Cint(Text8.Text) = Then"
betyder
Avatar billede tubber Juniormester
04. maj 2005 - 16:08 #11
If Cint(Text8.Text) = værdi Then

og self Elseif Cint(Text8.Text) = værdi then
Avatar billede martin_moth Mester
04. maj 2005 - 16:55 #12
Men du skriver jo bare If Cint(Text8.Text) = Then

Nå - dropper det, jeg kan ikke tyde din beskrivelse af problemet. Good luck :o)
Avatar billede tubber Juniormester
08. maj 2005 - 21:42 #13
Da det er blevet lidt irrelevant med svar til spg. så lukker jeg :)
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