Jeg er igang med at lave et program og skal have lagt teksten fra et edit felt ind som item i en listview men det gir mig lidt problemer skal man skrive Tlistview.items.add... eller hva skal man skrive?
Det virker sådan da men jeg har 5 koloner og 5 edit der kommer noget i den første og resten ender i den næste. Jeg ville gerne have det sådan at der var en edit til hver kolonne
Der er noget grundlæggende forkert ved nca's eksempler. Det er, at han refererer til items[x] efter at have added et TListItem. Dette virker kun hvis listen ikke sorteres automatisk og er - undskyld - lidt noget fusk.
doc404's eksempel er derfor meget pænere. Man kan evt. optimere lidt på den således (hvilket er min egen upopulære favorit):
with ListView1.Items.Add do begin Caption := Edit1.Text; SubItems.Add(Edit2.Text); osv. end;
Bemærk i øvrigt, at en TListItem har en .data pointer som man kan hægte objekter - noget der er meget praktisk når man arbejder med objekter.
Er det ikke kun ved svar at jeg kan give point jeg ville gerne give point men det skulle helst være til den der svarede på mit spørgsmål hvilket jeg vil sige var doc404 hvis jeg kan give point for en kommentar så fortæl mig lige hvordan
TPerson.FillListItem(aListItem : TListItem); begin with aListItem do begin SubItems.Clear; // Clear the subitems that might be Data := self; // Set's a reference to the TPerson obj.
Caption := fNavn; // Thich triggers OnSelect so data must be set // before in order to be able to access the object there end; // with end;
Det smarte er, at kun navnet vises, men i din OnSelect har du adgang til hele TPerson objektet som refereres via .data:
procedure Form1.ListView1OnSelect(.. Item:TListItem); var Person : TPerson; begin if not (assigned(Item) and Item.Seleced and Item.Focused) then exit;
Person := Item.Data; // Data is a pointer - no need to typecast
lAdresse.Caption := Person.Adr; // etc. end;
Objektorienteret set er det hensigtsmæssigt at lade objektet formattere TListItem'et (via FillListItem) idet det kender data. Jeg har snydt lidt idet at jeg ikke sætter TListView'ets columns op - så data er desværre ikke helt indkapslet - men jeg håber du fanger ideen (hvis man vil, så kan man også få adgang til TListView'et via det TListItem man sender det).
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.