Autor Téma: ListView  (Přečteno 1416 krát)

Marek.V

  • Host
ListView
« kdy: 04-02-2019, 23:13:26 »
Klucí, co mužu dělat špatně?
https://delphi.cz/post/ListView.aspx

ViewStyle     vsList               // pokud dam vsReport tak se v komponentě ListView nic nevypisuje
ShowColumnHeader   true 
GroupView  true     

https://postimg.cc/5YwcmM6D

Kód: Delphi [Vybrat]
  1. procedure TForm5.btn1Click(Sender: TObject);
  2. var
  3.   li: TListItem;
  4. begin
  5.   li := listview2.Items.Add;
  6.   li.Caption := 'První sloupec';
  7.   li.SubItems.Add('Další sloupec');
  8.   li.SubItems.AddObject('Sloupec 3', nil ); // případná reference na jiný objekt
  9. end;

Vidím jen první sloupec a nejde vidět ta vrchní lišta čislo řádku, atd

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2249
  • Karma: 100
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ListView
« Odpověď #1 kdy: 04-02-2019, 23:52:19 »
Great
Rated 1 time
vsReport, a chybí ti Columns
Embarcadero MVP - Czech republic

Marek.V

  • Host
Re:ListView
« Odpověď #2 kdy: 05-02-2019, 07:33:02 »
http://img24.cz/images/24099851929396660832.png
vsReport nastaven a , a 3 x Columns přidan.
Při klikaní na button to nic neděla  :(

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1712
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:ListView
« Odpověď #3 kdy: 05-02-2019, 08:02:54 »
Protoze potrebujes predat list view informaci o skupine, v niz ma polozka byt umistena, napr:

Kód: Delphi [Vybrat]
  1. var
  2.   li: TListItem;
  3. begin
  4.   li := listview2.Items.Add;
  5.   li.GroupID := 0; // timto se polozka prida do skupiny s ID 0
  6.   ...
  7. end;
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Marek.V

  • Host
Re:ListView
« Odpověď #4 kdy: 05-02-2019, 10:31:27 »
Děkují moc  :)
A když budu mít 3 sloupce.
Bych potřeboval prohledat celý 3 sloupec a pokud najde hledaný text, vypsat vše co je na danem řadku ve všech 3 sloupcích?
Tři sloupce tak třeba 3X  s.s1,s2:string;

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1712
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:ListView
« Odpověď #5 kdy: 05-02-2019, 11:32:16 »
Predne bych doporucil zmenu navrhu aplikace. List view by mel slouzit jen k prezentaci dat; data samotna by byla ulozena v separatnim kontejneru jimz by se iterovalo a jehoz zmeny by se promitaly v tom prezentacnim list view (pripadne dalsich komponentach).

Chapu ovsem, ze jde dost mozna i o skolni projekt (jenz ocekava programovani nespravnymi technikami). Pokud tomu tak je, zkus si uvedomit anatomii list view. Mas kolekci polozek Items (jehoz text se zobrazuje v radku pro sloupec s indexem 0), a kazda tato polozka ma pak kolekci SubItems (jejichz texty se zobrazuji ve sloupcich s indexy vetsimi 0). Ty tedy pro to hledani potrebujes proiterovat kolekci Items a pro kazdou z polozek sahnout do kolekce SubItems.
« Poslední změna: 05-02-2019, 11:34:09 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4094
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #6 kdy: 05-02-2019, 11:35:44 »
Školský projekt to nie je, keď s Delphi robil naposledy pred 10 rokmi :)
Citace
Predne bych doporucil zmenu navrhu aplikace.
Kvôli tomu som sa ho pýtal, do čoho si chce dané údaje ukladať. Zachoval sa ako pravý partizán :-X  a nič neprezradil.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1712
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:ListView
« Odpověď #7 kdy: 05-02-2019, 11:43:47 »
Školský projekt to nie je, keď s Delphi robil naposledy pred 10 rokmi :)
Citace
Predne bych doporucil zmenu navrhu aplikace.
Kvôli tomu som sa ho pýtal, do čoho si chce dané údaje ukladať. Zachoval sa ako pravý partizán :-X  a nič neprezradil.

Studovat se da v jakemkoli veku :) Popravde me mimo nejake hry nenapada realne vyuziti hledani "textu bunek" zobrazenych ve 3. sloupci s nahradou takoveho textu v celem radku. Ale kdovi, treba mam omezenou predstavivost nebo jsem si spatne vylozil zadani :)
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Marek.V

  • Host
Re:ListView
« Odpověď #8 kdy: 05-02-2019, 11:57:25 »
Jsem našel toto

Kód: Delphi [Vybrat]
  1. lvItem := ListView1.FindCaption(0,      // StartIndex: Integer;
  2.                                   'Pavel',   // Search string: string;
  3.                                   True,   // Partial,
  4.                                   True,   // Inclusive
  5.                                   False); // Wrap  : boolean;
Což mi zvladne vyhledat text v prvním odstavcí  :)

Kód: Delphi [Vybrat]
  1. Label1.Caption := Listview1.Items[1].Caption
Toto take ok, ale furt první sloupec  >:(

Jak na dalši sloupce?

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 8
    • Verze Delphi: 7, XE6
Re:ListView
« Odpověď #9 kdy: 05-02-2019, 12:37:35 »
Když ses ve vedlejším vláknu naučil pracovat s AdvStringGrid (mocný nástroj), proč se teď pokoušíš zkrotit ListView vlastně do podoby StringGridu (vsReport) ? AdvStringGrid má metodu HideColumn, kterou skryješ libovolný počet sloupců, do kterých si zapíšeš tajné informace. A procházet přes řádky gridu není žádný problém.

Marek.V

  • Host
Re:ListView
« Odpověď #10 kdy: 05-02-2019, 12:44:21 »
Protože k AdvListView toho moc neení, tak se učím první na tom klasickem ListView  ;)
Tak už vyřešeno  ;D

Marek.V

  • Host
Re:ListView
« Odpověď #11 kdy: 10-02-2019, 20:04:20 »
Zdravím.
Tak s komponentou AdvListview jsem při ukladaní pohořel.
Uložím a i načtu to do všech format, co tato komponenta podporuje.
Ale když mam v komponentě jen jeden řadek, zhroutí se to.

Tak jsem zkusil takto
Kód: Delphi [Vybrat]
  1. begin
  2. myStringList := TStringList.Create;
  3. for i := 0 to AdvListView1.Items.Count -1 do
  4.      begin
  5.       Item := AdvListView1.Items.Item[i];
  6.       s := Item.Caption + '|' + Item.SubItems[0] + '|' + Item.SubItems[1];
  7.       myStringList.Add(s);
  8.       end;
  9. myStringList.SaveToFile('d:\ListView.txt');
  10. myStringList.Free;
  11. end;
.

Jak to pak nejjednodušejí načíst zpět?
Kód: Delphi [Vybrat]
  1. begin
  2. myStringList := TStringList.Create; //
  3. myStringList.LoadFromFile('d:\buddys.txt');
  4.  
  5. for i  := 0 to myStringList.Count-1 do
  6.                                  begin
  7.  
  8.                                  end;
  9. end;

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4094
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #12 kdy: 10-02-2019, 21:25:11 »
Ja tam síce chybu nevidím, ale daj sem chybovú hlášku. SaveToFile máš mať správne v bloku try...
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Marek.V

  • Host
Re:ListView
« Odpověď #13 kdy: 10-02-2019, 21:53:59 »
Tam neni chyba.
Mně zajima ten druhý zdrojak.
Je tam dotaz.
Jak to pak nejjednodušejí načíst zpět?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4094
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #14 kdy: 10-02-2019, 22:21:48 »
Citace
Tam neni chyba.
Mně zajima ten druhý zdrojak.
To som si uvedomil až po odoslaní príspevku :(
Keď sa na to pozerám laickým okom, tak vidím nasledovný postup (parsovania textu)
  • Budeš prechádzať načítaný súbor po riadkoch
  • V každom riadku si postupne zistíš pozíciu oddeľovača. V tvojom prípade '|'
  • Načítaš text medzi oddeľovačmi a uložíš do ListView
  • Po poslednom oddeľovači prejdeš na ďalší riadok
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.