Avatar billede netro Nybegynder
18. januar 2006 - 22:23 Der er 13 kommentarer og
1 løsning

Skjult info til items i ListBox

Har C++ Builder en egenskab, der kan gemme ekstra data for hvert item i en almindelig ListBox? Jeg vil gerne have tilknyttet et id (der ikke skal vises) til hvert item. Og det skulle gerne stadig være tilknyttet, selvom listen fx sorteres.
Avatar billede bertelbrander Novice
18. januar 2006 - 23:05 #1
Hvis du laver en class:
class MyData : public TObject
{
public:
  MyData(int aData) : Data(aData)
  {}
  int Data;
};

Kan du tilføje objekter til listbox'en med:
  ListBox1->Items->AddObject("Ole", new MyData(123));

Og hente tallet 123 tilbage med:
  int id = ((MyData *)ListBox1->Items->Objects[0])->Data;
Avatar billede netro Nybegynder
19. januar 2006 - 00:00 #2
Perfekt!

Måske du lige kan sige mig en sidste ting. Det gav nemlig nogle problemer med flytning af data fra en TStringList til ListBoxen. Hvordan løber jeg TStringListen i gennem og får fat i hver enkelt String?
Avatar billede bertelbrander Novice
19. januar 2006 - 00:06 #3
Hvis du har:
TStringList* StringList = new TStringList;

Kan du putte dem over i ListBox'en med:
  int idx;
  for(idx = 0; idx < StringList->Count; idx++)
  {
      ListBox1->Items->AddObject(StringList->Strings[idx], new MyData(idx));
  }
Avatar billede netro Nybegynder
19. januar 2006 - 00:21 #4
Smukt! Tak for hjælpen.
Avatar billede netro Nybegynder
19. januar 2006 - 00:35 #5
Når jeg gemmer indholdet af TStringListen i en tekstfil og indlæser sidstnævnte i en ny TStringListe ved programopstart, kommer der binære tegn med, og der bliver tilsyneladende termineret nogle underlige steder. Det sker først anden gang, det indlæses, og herefter bliver data mere og mere ødelagte. Jeg har lagt mærke til, at der kommer en tom linie i enden af filen.

Har du noget bud på hvorfor?
Avatar billede bertelbrander Novice
19. januar 2006 - 00:50 #6
Næ, ikke rigtigt, jeg kan ikke lige provokere fejlen her.
Det var måske en idé at finde ud af hvilke tegn det er, kan du se dem i debuggeren?
Avatar billede netro Nybegynder
19. januar 2006 - 00:51 #7
Jeg prøver lige at teste det lidt nærmere senere i dag.
Avatar billede netro Nybegynder
19. januar 2006 - 10:03 #8
Hej igen,

Her er et eksempel på, hvordan filen ser ud, når TStringListen gemmes første gang.

C:\Programmer\DivX\DivX Player\ssleay32.dll
8  rogrammer\DivX\DivX Player\DivX Player.e8
C:\Programmer\DivX\DivX Player\DivXPlayerATIPlugin.dD
C:\Programmer\DivX\DivX Player\libeay32.|
C:\Programmer\DivX\DivX Player\License.txt
C:\Programmer\DivX\DivX Player\README.txt

Anden gang ser den sådan ud:

C:\Programmer\DivX\DivX Player\ssleay32.8


Den bør ser sådan ud:

C:\Programmer\DivX\DivX Player\ssleay32.dll
C:\Programmer\DivX\DivX Player\DivX Player.exe
C:\Programmer\DivX\DivX Player\DivXPlayerATIPlugin.dll
C:\Programmer\DivX\DivX Player\libeay32.dll
C:\Programmer\DivX\DivX Player\License.txt
C:\Programmer\DivX\DivX Player\README.txt
Avatar billede netro Nybegynder
19. januar 2006 - 15:19 #9
Det ser faktisk ud til at virke nu. Der var vist rod i pointerne.
Avatar billede netro Nybegynder
19. januar 2006 - 16:07 #10
Jeg vil dog gerne vide, hvordan man tildeler en enkelt række i en list box en anden baggrundsfarve og/eller tekstfarve. Er det noget, du hurtigt kan svare på, eller skal jeg oprette en ny tråd?
Avatar billede bertelbrander Novice
19. januar 2006 - 20:58 #11
Kort svar: Jeg ved det ikke.

Langt svar: Jeg er på ingen måder ekspert i BCB, men standard windows har så vidt jeg ved ikke nogen feature til dette, og jeg tvivler lidt på at Borland har lavet det til BCB. Det kan også afhænge af om det er BCB 5.0 eller 6.0. Hvis jeg skulle lave det med Win32Api ville jeg lave en listbox som man selv skulle tegne, jeg ved ikke hvordan man gør med BCB.
Avatar billede netro Nybegynder
19. januar 2006 - 21:01 #12
Ok - Tak igen. Hvis du vil have points, så læg et svar til mig.
Avatar billede bertelbrander Novice
19. januar 2006 - 21:06 #13
Jeg vil strække mig langt for at hjælpe ekspertens brugere, men lave svar; det vil jeg ikke.
Avatar billede netro Nybegynder
19. januar 2006 - 21:11 #14
Alternativ politik...
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