Avatar billede hermandsen Juniormester
23. april 2003 - 17:34 Der er 4 kommentarer og
1 løsning

Min egen TListItem, TListItems og TListView

Hej eksperter!

Jeg sidder og roder med et projekt hvori der indgår en masse TListItem's i et TListView...

Alle mine TListItem's har nogle properties som jeg har tilføjet dem. Problemet med det er bare måden de bliver opbevaret på. Jeg har tidligere brugt et sideløbende dynamisk array, hvor Data-property'en fra en TListItem blev typecasted til en integer som så angav index i det dynamiske array hvorfra jeg kunne finde de oplysninger jeg skulle bruge.

Det kunne sådan set godt fungere, men i mit hoved er det langt fra optimalt med hensyn til OOP-kode!!

Jeg ønsker at kunne integrere mine egne properties ind i en TListItem, og så evt. have en anden TListItems-klasse der holder styr på TListItem'sne, og så måske også et nyt TListView som kan gøre brug af min TListItems-klasse...

Nogle gode ideer??

//hermandsen
Avatar billede hermandsen Juniormester
23. april 2003 - 17:39 #1
Altså noget i retning af:

type
  TMyListItem = class(TListItem)
  public
    Hest: String;
    Pony: Pointer;
    procedure SpecialPaint;
  end;

  TMyListItems = class(TListItems)
  public
    procedure SaveToFile(FileName);
    procedure LoadFromFile(FileName);
  end;

  TMyListView = class(TCustomListView)
  public
    MyItems: TListItems;
  end;

osv...

Er det muligt, og i så fald hvordan!?
Avatar billede athlon-pascal Juniormester
23. april 2003 - 19:44 #2
Kan du ikke opbevare dine data i en selvstændig database eller array eller recordlist, og så sætte TListView.OwnerData := true og bruge TListView.OnData når ListViewen skal hente data? Husk at du selv skal sætte TListView.Items.Count...
Avatar billede hermandsen Juniormester
24. april 2003 - 22:32 #3
Hvordan finder jeg så ud af hvilke Items der er valgt og hvilken plads de har i mit array!?
Avatar billede athlon-pascal Juniormester
26. april 2003 - 20:50 #4
TListView.OnSelectItem

procedure TForm1.ListViewSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  ShowMessage(IntToStr(Item.Index));
end;

Husk at OnData ikke kopierer dine data til ListView'ens Items, den tegner kun :-)
Avatar billede hermandsen Juniormester
28. april 2003 - 09:51 #5
Jeg tror jeg er med nu!! Siger tak for hjælpen!!! :)

//hermandsen
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