Avatar billede trold Nybegynder
23. november 2000 - 20:49 Der er 12 kommentarer og
1 løsning

Select Box

Jeg fylder en select box ved hjælp af en query i borland builderen således

while (!Query1->Eof)
      {
    ListBoxStationsNavn->Items->Add(Query1->FieldValues[\"Hjemstation\"]);
    Query1->Next();
      }

    ListBoxStationsNavn->MultiSelect = false;

    for (int i = 0; i < ListBoxStationsNavn->Items->Count; i++)
    {
        if (ListBoxStationsNavn->Selected[i])
        {
        strSelectedStation = ListBoxStationsNavn->Items->Strings[i];

        }
    }

Hvorfor indeholder strSelectedStation ikke den streng der er klikket på/valgt

Den er tom,

Jeg laver nemlig en while løkke senere, hvor jeg nu endelig kan se hvorfor den læber lige igennem, jeg bruger et memo felt, og der kan jeg se at

strSelectedStation er tom
Avatar billede trold Nybegynder
23. november 2000 - 20:51 #1
Avatar billede stigc Nybegynder
23. november 2000 - 21:04 #2
du skal bruge:

ListBoxStationsNavn->ItemIndex

for at finde hvilken index der er valgt!
Avatar billede stigc Nybegynder
23. november 2000 - 21:05 #3
så slipper du også for din løkke!
altså:

strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];

       
Avatar billede trold Nybegynder
23. november 2000 - 21:10 #4
while (!Query1->Eof)
      {
    ListBoxStationsNavn->Items->Add(Query1->FieldValues[\"Hjemstation\"]);
    Query1->Next();
      }

    ListBoxStationsNavn->MultiSelect = false;
    strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];
   


Giver flg fejl

List index out of bounds (-1)

Avatar billede stigc Nybegynder
23. november 2000 - 21:12 #5
så har du ikke valgt noget!

lav det her tjek:

if (ListBoxStationsNavn->ItemIndex!=-1)
strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];
   

Avatar billede trold Nybegynder
23. november 2000 - 21:20 #6
Hvis jeg laver dette check

if (ListBoxStationsNavn->ItemIndex!=-1)
    strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];

    else
    strSelectedStation = \"trold\";

får jeg desværre flg resultat i min while løkke

while ((strSelectedStation != tmpHjem || tmpStatus != 0) && !Table2->Eof)
    {
    Table2->Next();
    Memo1->Lines->Add(strSelectedStation);
    Memo1->Lines->Add(tmpHjem);
    }

trold
Brøndby
trold
Albertslund
trold
Glostrup
trold
Næstved
trold
Lyngby
trold
Køge
trold

Hvis jeg trykkede på Næstved, ja så skulle den jo have stoppet ved Næstved men desaværre indeholder

strSelectedStation nu værdien \"trold\"
Avatar billede stigc Nybegynder
23. november 2000 - 21:22 #7
ok hvad vil du have til at stå i memoen?

Jeg tror har snakket forbi hinannden, men hvad
du ønsker skal du få!
Avatar billede trold Nybegynder
23. november 2000 - 21:34 #8
Jeg prøver at forklare Formens funktion

Først skal jeg have en Listbox fyldt ud med værdier fra en Query

Det gør jeg således

while (!Query1->Eof)
      {
    ListBoxStationsNavn->Items->Add(Query1->FieldValues[\"Hjemstation\"]);
    Query1->Next();
      }


***** Problemer ******
ListBoxStationsNavn->MultiSelect = false;

    if (ListBoxStationsNavn->ItemIndex!=-1)
    strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];

    else
    strSelectedStation = \"trold\";

*******

Jeg får ganske rigtigt 7 bynavne i min Listbox, meningen er at man så skal vælge en, og den der er valgt gemmes i en database, således


Table2->Open();
Table2->First();
tmpHjem = Table2->FieldValues[\"Hjemstation\"];
tmpStatus = Table2->FieldValues[\"Udrykningsstatus\"];


    while (!(strSelectedStation != tmpHjem && tmpStatus != 0) && !Table2->Eof)
    {
    Table2->Next();
tmpHjem = Table2->FieldValues[\"Hjemstation\"];
    tmpStatus = Table2->FieldValues[\"Udrykningsstatus\"];
    }

   
    Table2->Edit();
    Table2->FieldValues[\"Udrykningsstatus\"] = 1;
    Table2->Refresh();

Dette ville medføre at While Løkken vil blive brudt det øjeblik Jeg fandt strSelectedStation i databsen (Tabel Objektet) Dette sker bare ikke i praksis while løber fortsætter til eof, det er derfor altid sidste record der bliver opdateret
således

Table2->FieldValues[\"Udrykningsstatus\"] = 1;

Derfor opfandt jeg en lille memo box, der mens while løkken kørte fik tilføjet mine variabler strSelectedStation og tmphjem, så jeg kunne se hvad det var at while løkken checkede på, og den checker desværre om

trold = køge
trold = albertslund

osv

istedet
for
albertslund = køge
albertslund = albertslund

hvis der f.eks blev trykket på albertslund
   
nedenfor er while løkken i den version med memo feltet der kun udskriver hvad der bliver checket på

while (!(strSelectedStation != tmpHjem && tmpStatus != 0) && !Table2->Eof)
    {
    Table2->Next();
    Memo1->Lines->Add(strSelectedStation);
    Memo1->Lines->Add(tmpHjem);
    tmpHjem = Table2->FieldValues[\"Hjemstation\"];
    tmpStatus = Table2->FieldValues[\"Udrykningsstatus\"];
    }




Avatar billede stigc Nybegynder
23. november 2000 - 21:39 #9
ok at fylde listboxen ud er ikke noget problem! At finde ud af hvad for en der er markeret er nu heller ikke noget problem!

    if (ListBoxStationsNavn->ItemIndex!=-1)
    strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];

    else
    strSelectedStation = \"trold\";


    strSelectedStation vil nu være lige med \"trold\", hvis der ikke er valgt noget i listbox, ellers vil den være lig med det valgte felt! Ikke?

Hvad vil du med det valgte felt?

indsætte det i en database?
Avatar billede stigc Nybegynder
23. november 2000 - 21:44 #10
hvor ikke bruge en sql sætning?

jeg kan ikke den rigtige syntaks noget ligende;

update \"et eller andet\" Set Udrykningsstatus = 1 Where Hjemstation = strSelectedStation\";

Det virker helt forkert at du er nød til at putte dem i en memo!

Avatar billede trold Nybegynder
23. november 2000 - 22:04 #11
Jeg starter på en form med at indtaste værdien der skal ledes efter f.eks Humlebæk, hvis den ikke findes i databasen, kommer jeg til denne nye form hvor jeg skal vælge et alternativ til Humlebæk

men bruger jeg



    if (ListBoxStationsNavn->ItemIndex!=-1)
    strSelectedStation = ListBoxStationsNavn->Items->Strings[ListBoxStationsNavn->ItemIndex];


får jeg List index out of bounds (-1) fejlen

Før formen er færdig loadet, dvs jeg får slet ikke mulighed for at vælge en by fra listboksen
Avatar billede stigc Nybegynder
23. november 2000 - 22:11 #12
du skal jo også først bruge det når det hele er opsat, og en bruger har valgt et felt, og eventuelt trykket på en knap!
Avatar billede trold Nybegynder
23. november 2000 - 22:15 #13
Det gjorde unægtelig en STOR forskel,

Du gætter aldrig, at jeg er nybegynder ;-)

Tusind tak for hjælpen
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