24. januar 2005 - 10:24Der 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?
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)...
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....
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 :)
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?
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?
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 :)
...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)
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:
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!?
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.
Selv tak - fint nok at du sidder og skyder problemerne ned selv :o)
Synes godt om
Ny brugerNybegynder
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.