Avatar billede Shasim Novice
24. januar 2005 - 10:24 Der er 16 kommentarer og
1 løsning

Bestem værdier i Combo-box

Jeg har en combo-box hvis værdier skal være bestemt af indholdet i to variabler, og kombinationen af disse. Hvordan kan man få combo-boxens valgmuligheder til at skifte i henhold til dette?
Avatar billede _k Nybegynder
24. januar 2005 - 11:36 #1
Mener du noget i den her retning:

var condition1:Boolean = true;
if(condition1) {
    minCombo.addItem("punkt 1",1)
    minCombo.addItem("punkt 2",2)
    minCombo.addItem("punkt 3",3)
}
else {
    minCombo.addItem("punkt 4",4)
    minCombo.addItem("punkt 5",5)
    minCombo.addItem("punkt 6",6)
    }
Avatar billede Shasim Novice
24. januar 2005 - 12:04 #2
Ja lidt, måske sådan?

if((variabel1 == etellerandet)&&(variabel2 == etellerandet)){ //osv

men der vil nok komme en del "else if'er". Og addItem lægger vel bare til - den nulstiller ikke listen, vel?

Hvordan får man combo'en til at tjekke om variablerne skifter værdi, og så udskifte indholdet i listen så det passer til den nye betingelse?
Fra et tidligere spørgsmål kan jeg forstå at det er Fy at bruge f.eks. onClipEvent(enterframe)...
Avatar billede _k Nybegynder
24. januar 2005 - 12:22 #3
Det er ikke helt banlyst at bruge onEnterFrame, men bare dårlig stil at stå og spørge en if-sætning hele tiden - det sløver også Flashplayeren rimeligt meget, hvilket vil påvirke evt. animationer.

Jeg vil forslå dig at "bygge" comboboxen hver gang en af dine variable ændrer sig. Hvis du laver en funktion der bliver kaldt hver gang en variabel ændres, kan den se sådan her ud (og du slipper nok ikke for en del if-sætninger - hvor mange variable snakker vi om, for er det mange, kan det jo nok også systematiseres?)

function setCombo() {
  minCombo.removeAll(); // Sletter al indhold i den eksisterende combobox
  if(variabel1 == "ok") {
    minCombo.addItem("punkt 1",1);
    }
  if(variabel2 == "halløjsa") {
    minCombo.addItem("punkt 2",2);
  }
  if(variabel3 == 22) {
    minCombo.addItem("punkt 3",3);
  }
}

..osv. osv.

Du kan principielt også bygge det med "switch case", hvilket måske giver et bedre overblik....
Avatar billede Shasim Novice
24. januar 2005 - 12:33 #4
Jeg kender ikke reglerne og derfor heller ikke hvor mange forskellige kombinationer jeg vil ende op med at have, men jeg ved at variabel1 kan have 9 forskellige værdier, og variabel2 kan have 7, og jeg ved også at den samme regel kan gælde for flere kombinationer af de to variabler, så det må vel blive noget lign. det her?:

function setCombo() {
  minCombo.removeAll();
  if((variabel1 == "ok")&&((variabel2 == 5)||(variabel2 == 7))) {
    minCombo.addItem("punkt 1",1);
    }
  if ( // osv.....

Din sidste linje med "switch case" ved jeg slet ikke hvad er for noget :)
Avatar billede _k Nybegynder
24. januar 2005 - 13:25 #5
Har du ikke overblik over hvor mange kombinationsmuligheder og valg der skal være, bliver det svært at lave scriptet mere "automatisk". Så er der kun den vej du selv beskriver tilbage - men det burde så også virke upåklageligt når det står færdigt.

"Switch case" er blot en anderledes måde at opstille og eksekvere scripts på under forskellige conditioner. Det kan sammenlignes lidt med en avanceret if-sætning. Brug evt. 5 min på at læse om den i hjælpen, det kunne jo være at det ville lette noget af arbejdet?
Avatar billede Shasim Novice
24. januar 2005 - 13:58 #6
Okay, så tror jeg der er styr på det.
Kan du også hjælpe mig med et andet lille problem? Jeg har en nummericStepper hvor man kan vælge antal, og så min combobox hvor man kan vælge slags. Jeg skal have ganget de to værdier og udskrevet dem i et tekstfelt. Hvordan gør jeg det?
Avatar billede _k Nybegynder
24. januar 2005 - 14:08 #7
navnetPåEtTekstfelt.text = Number(stepper.value * minCombo.value);
Avatar billede Shasim Novice
24. januar 2005 - 14:12 #8
Tak, kan man gøre sådan at når værdien skifter i enten nummericStepper eller combobox beregner den automatisk?
Avatar billede _k Nybegynder
24. januar 2005 - 14:41 #9
Det er straks lidt mere tricky, men mon ikke det er noget i retning af:

mitObjekt = new Object();
mitObjekt.change = function(){
  navnetPåEtTekstfelt.text = Number(stepper.value * minCombo.value);
}
stepper.addEventListener("change", mitObjekt);
minCombo.addEventListener("change", mitObjekt);
Avatar billede Shasim Novice
24. januar 2005 - 15:22 #10
Jo, det tror jeg også, men jeg kunne ikke rigtigt finde ud af hvordan man bruger sådan en addEventListener. Jeg prøver at kigge på det imorgen, og siger foreløbigt tak for hjælpen :)
Avatar billede _k Nybegynder
24. januar 2005 - 15:24 #11
...du bruger den ved at "sætte den på" et objekt. I dette tilfælde dine komponenter. Er ret sikker på at det virker (kan dog være lidt problemer med syntaksen ;o)

Held og lykke med det.
Avatar billede Shasim Novice
25. januar 2005 - 08:49 #12
Hej igen
Nu har jeg prøvet forskellige varianter af nedenstående, men kan ikke få det til at virke. jeg har "sat det hele på" min stepper:

on (click) {
    brill = new Object();
        brill.change = function() {
        ct_total.text = Number(ct_antal.value*ct_Combo.value);
       
    }
    ct_antal.addEventListener("change", brill);
    ct_Combo.addEventListener("change", brill);
}

Kan jeg måske drive lidt mere hjælp ud af dig? Jeg "betaler" gerne flere points hvis det hjælper på motivationen :)
Avatar billede _k Nybegynder
25. januar 2005 - 09:25 #13
Eftersom du scripter inde i en knap (hvilket er ganske legalt, men efterhånden ret oldschool ;) og dit tekstfelt og dine komponenter sikkert ikke befinder sig derinde, skal du lige springe et niveau ud:

....
    _parent.ct_total.text = Number(_parent.ct_antal.value*_parent.ct_Combo.value);
 
    }
    _parent.ct_antal.addEventListener("change", brill);
    _parent.ct_Combo.addEventListener("change", brill);
}

...og ved nærmere eftertanke forstår jeg egentlig slet ikke, hvorfor det hele skal ligge inde i en knap? For det er da ikke nødvendigt.

Og takker for point. Hvis det her ikke bliver alt for langstrækt, så overlever jeg nok med dem jeg allerede har fået ;o)
Avatar billede Shasim Novice
25. januar 2005 - 09:30 #14
Nu smed jeg det ud i den første frame af det klip som begge komponenter og tekstfeltet ligger i. Stadig ikke noget resultat.
Så prøver jeg at sætte en trace på i samme frame. "Nan" siger den!?
Avatar billede Shasim Novice
25. januar 2005 - 09:36 #15
Nu virker det (næsten) det var et stort C i ct_Combo, der spøgte :)
Når jeg nu ændrer værdi i ct_antal (stepperen), så virker det godt nok, men ikke når jeg vælger noget andet i combo'en.
Avatar billede Shasim Novice
25. januar 2005 - 09:40 #16
Nå, nej nu skal jeg nok stoppe - det var også det store C! Undskyld ulejligheden og tak for hjælpen :)
Avatar billede _k Nybegynder
25. januar 2005 - 10:07 #17
Selv tak - fint nok at du sidder og skyder problemerne ned selv :o)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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