Autor Téma: ListView  (Přečteno 1683 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ů: 2345
  • Karma: 102
    • 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  :(

Marek.V

  • Host
Re:ListView
« Odpověď #3 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;

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #4 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.

Marek.V

  • Host
Re:ListView
« Odpověď #5 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ů: 202
  • Karma: 8
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:ListView
« Odpověď #6 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ěď #7 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ěď #8 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ů: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #9 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ěď #10 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ů: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #11 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:ListView
« Odpověď #12 kdy: 10-02-2019, 22:24:29 »
A cyklus nebude podľa myStringList.Count, lebo je ešte prázdny. Bude podľa počtu riadkov. Niečo také som nerobil, ale v podobných prípadoch sa používa niečo také "while not MyFile.Eof do"
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Karel.V

  • Host
Re:ListView
« Odpověď #13 kdy: 10-02-2019, 23:04:07 »
Není prázdný, protože do něj znovu načítám ty uložena data.
myStringList.LoadFromFile('d:\ListView.txt');

Rozsekat to pomoci copy bych zvadl.
Pak je další možnost, použit další StringList a jeho funkcí delimiter.

Proto se ptám tady profilu, na ten nejjednodušší způsob, jak na to.
Možná ještě poradí něco lepšího, a já se zas přiučím  :P

Karel.V

  • Host
Re:ListView
« Odpověď #14 kdy: 11-02-2019, 22:16:21 »
Vyřešeno