Results 1 to 12 of 12

Thread: Data uit een listview halen met Dynamic appearance

  1. #1

    Data uit een listview halen met Dynamic appearance

    Ik heb een listview die ik vul met data uit een query, dmv in een procedure aanroepen van de volgende code:

    Code:
    procedure TFormMain.RefreshKksLstvwPart;
    var item: TListViewItem;
    begin
      DataModule2.FDQKksTekSelect.ParamByName('idTek').AsInteger := StrToInt(EditTekId.Text);
      DataModule2.FDQKksTekSelect.Open;
      lstvwKks.Items.Clear;
      lstvwKks.BeginUpdate;
      try
        while not DataModule2.FDQKksTekSelect.Eof do
         begin
           item := lstvwKks.Items.Add;
           item.Objects.FindObjectT<TListItemText>('Kks').Text := DataModule2.FDQKksTekSelect.FieldByName('idKks').AsString;
    dit gaat perfect de listview word keurig gevuld.Maar nu wil ik de data weer uit de listview aanroepen om te vergelijken met een andere waarde.

    de onderstaande regel levert mij een lege string op,

    Code:
    showmessage(lstvwkks.Items[lstvwkks.ItemIndex].Data['Id'].AsString);
    het is een listview met een Dynamic appearance, zie foto

    Name:  listview.JPG
Views: 203
Size:  17.2 KB

  2. #2
    Ik zie in je code niet dat "data" gevuld wordt? Weet je zeker dat dit wel het geval is?

  3. #3
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,533
    Gebruik de property selected.
    Delphi Code:
    1. procedure foo;
    2. var Node : TTreenode;
    3.       MyItem : TListItemText;
    4. begin
    5.   Node := lstvwkks.selected;
    6.   MyItem := Node.data;
    7.   showmessage(MyItem.omschrijving)
    8. end;
    Ik snap alleen de manier niet hoe je een object naar een treenode stuurt.
    Delphi is great. Lazarus is more powerfull

  4. #4
    Quote Originally Posted by luigi View Post
    Ik zie in je code niet dat "data" gevuld wordt? Weet je zeker dat dit wel het geval is?

    jazeker doet hij dat, zie bijgevoegde screenshot van de listview.
    Attached Images Attached Images  

  5. #5
    Quote Originally Posted by jkuiper View Post
    Gebruik de property selected.
    Delphi Code:
    1. procedure foo;
    2. var Node : TTreenode;
    3.       MyItem : TListItemText;
    4. begin
    5.   Node := lstvwkks.selected;
    6.   MyItem := Node.data;
    7.   showmessage(MyItem.omschrijving)
    8. end;
    Ik snap alleen de manier niet hoe je een object naar een treenode stuurt.
    ehhh, ik werk in Firemonkey, niet een vcl project dus kan niet " ComCtrls" gebruiken. (denk dat je die nodig hebt om TTreenode te gebruiken).

    Ik wil later in een loop (for J := 0 to lstvwKks.Items.Count -1 do) een voor een de items langsgaan.

  6. #6
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,533
    Je maakt geen gebruik van property data. Dat is inderdaad een VCL ding. Met dynamic appearance maak je voor elk item een los object aan, die ja dan vult met gegevens. Ik heb daarmee een programma mee gemaakt. Ik zal eens kijken hoe ik die objecten kan lezen.
    Delphi is great. Lazarus is more powerfull

  7. #7
    Yessss, even verder gepuzzeld en 1 antwoord gevonden op stackoverflow (had deze als eens bekeken maar nu lukte het)
    https://stackoverflow.com/questions/...-from-a-string

    zie hier mijn oplossing;

    Code:
     for J := 0 to lstvwKks.Items.Count -1 do
           begin
                 begin
                     ShowMessage(lstvwKks.Items.Item[J].View.FindObject('Id').Data.ToString);
                 end;
           end;
    Last edited by GolezTrol; 04-Jun-19 at 01:00.

  8. #8
    Is het niet handiger om het om te draaien? Data in een handige class of een of ander record structuurtje gieten, en een (virtual) list maken die alleen de data weergeeft?
    1+1=b

  9. #9
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,533
    Dan zou je twee keer de data moeten opslaan. 1 keer voor de listview en 1 keer voor de data. Is dat niet een beetje teveel van het goede. FMX werkt nu eenmaal anders dan VCL.
    Delphi is great. Lazarus is more powerfull

  10. #10
    Het is anders ja, maar ik mag toch hopen dat er in FMX ook wel de mogelijkheid is om je data en je view een beetje van elkaar te scheiden?
    1+1=b

  11. #11
    Ik vond een video (niet helemaal mijn medium, maar ja) van Ray Konopka over het gebruiken van TListViews, gekoppeld aan een clientdataset, en met gebruikmaking van custom listitemtypes. Ik heb hem niet helemaal bekeken, maar het ziet er best indrukwekkend uit, en, zo te zien, zonder alle data zelf naar de listview te kopiëren. Het eerste stuk is intro en listbox, van 15:44 tot 37:15 gaat het over de listview.

    http://www.fmxuniversity.com/how-to-...ndows-and-osx/

    Of je daarnaast een listview ook in virtual modus kan gebruiken in FMX weet ik niet. Daar kan ik zo gauw niets over vinden, dus ik vrees van niet.
    1+1=b

  12. #12
    Heb de video bekeken, zeer interessant en zag daar oa de onchange-event die ik beter kan gebruiken dan mijn huidige oplossing (sluit alles en bouw het weer op).
    Ben toch van mening dat ik de data opsla in de listview, dan heb je maar 1 lijstje waar je alle gegevens bij elkaar hebt ipv 2 lijstjes. Tot op heden zijn de lijstjes nog niet zo lang (2650 records), wellicht dat ik deze info later kan toe passen waneer de snelheid te wensen over laat.
    bedankt voor jullie suggesties en tips

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •