Avatar billede puddelundercover Nybegynder
29. januar 2004 - 12:59 Der er 8 kommentarer og
1 løsning

CheckListBox mod database

Hej Eksperter,

Jeg står over for følgende problem:

Jeg har en liste med items:
Item1
Item2
Item3
Item4
(denne liste er variabel, så brugeren senere selv kan tilføje/fjerne)

Disse items skal sættes i en CheckListBox, og brugeren skal kunne krydse til og fra... De valgte items skal nu lagres i en database i formatet "Item1, Item2, Item4"...

Dette skulle i sig selv ikke være noget større problem, men når jeg nu vil åbne databasen igen, så skal min liste med items tjekkes op mod det som ligger i databasen og krydses af i CheckListBoxen...

Har nogen en snedig plan til, hvordan jeg kan gøre dette, eller evt. en anden løsning som fungerer ca. på samme måde?

Håber jeg har forklaret mig forståeligt... ;-)

Mvh
Magnus
Avatar billede pjotre Novice
29. januar 2004 - 14:06 #1
Hejsa
Du bør lave en database, hvor du f.eks. har 2 felter: et boolean felt til check og et felt til beskrivelse.
Denne database knytter du til så til en DBCtrl-grid. Input til denne DBCtrl-grid, kan så have en sql tilknyttet, som peger på databasen.
Mvh Pjotre
Avatar billede puddelundercover Nybegynder
29. januar 2004 - 14:12 #2
Jeg tror ikke at jeg er helt med på hvad du mener :-S
Avatar billede puddelundercover Nybegynder
29. januar 2004 - 14:17 #3
Tilføjelse:
De items, som brugeren selv kan redigere i gemmes f.eks. i en tekstfil:
-----
Item1
Item2
Item3
Item4
-----
Avatar billede pjotre Novice
29. januar 2004 - 14:39 #4
Jeg har lavet et lille program som viser hvordan og som kan hentes: www.icansystems.dk/test.zip
Mvh Pjotre
Avatar billede pjotre Novice
29. januar 2004 - 14:41 #5
Du skal gemme filerne i c:\test_Delphi
Mvh Pjotre
Avatar billede puddelundercover Nybegynder
29. januar 2004 - 17:42 #6
Åh, på den måde... Jo, det vil jeg gemme som nødløsning.

Problemet er, at dette system er et flerbrugersystem:

Brugerdatabase:
-----------
Bruger: Brugernavn
Adgangskode: Adgangskode
Valgmuligheder: Item1
                Item2
                Item3
                Item4
                Item5
----------

Varedatabase:
----------
Varenavn: Vare1
Tilbehør: Item1
          Item2
          Item5
----------


De to ting skal så tjekkes op mod hinanden i f.eks. en CheckListBox, så resultatet vil være:


X Item1
X Item2
  Item3
  Item4
X Item5
Avatar billede puddelundercover Nybegynder
29. januar 2004 - 18:28 #7
En pseudoløsning:

Item1
Item2
Item3
Item4

Loades linie for linie fra et memo-felt og tilføjes til CheckListBoxen... For hver linie tjekkes det, om linien, f.eks. Item1 også eksisterer i et andet memo-felt (noget string-compare, a la ereg() i PHP). Hvis den gør, skal item'et checkes, ellers ikke.

Har ingen idé om, hvordan denne kode kunne se ud... Har I?
Avatar billede puddelundercover Nybegynder
29. januar 2004 - 22:31 #8
Hmm... Okay, så er der workaround:

Listen med items er smidt i ListBox1, og de items som de skal tjekkes op mod ligger i memo1 som Item1,Item2,Item5,

var
  i,x,p,s : Integer ;
  t : string;
begin

    For i := 0 To (ListBox1.Items.Count-1) Do Begin

    p := pos(ListBox1.Items.Strings[i]+',',memo1.Lines.Text);
    t := ListBox1.Items.Strings[i];
        if p <> 0 then
        begin
          s := CheckListBox1.Items.Add(t);
          CheckListBox1.Checked[s] := true;
        end
        else
        begin
          CheckListBox1.Items.Add(t);
        end;
    end;
Avatar billede puddelundercover Nybegynder
30. januar 2004 - 14:09 #9
Så lukker jeg da bare igen ;)
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