TListView ve Firemonkey

vložil Radek Červinka 7. prosince 2022 19:17

TListView ve FMX má celkem zajímavé možnosti, které nejsou na první pohled dostupné a některé si ukážeme.

TListView

Ďábel se skrývá v detailu a zde to fakt na první pohled není patrné. Pokud použijeme TListView, lze u něho celkem komplexně nastavit jak mají vypadat položky. Příklad na předchozím screenshotu se dá udělat přímo v objekt inspektoru. Klíčová věc je dobrá volba property ItemApperance, kde jsem vybral mód "položka s image a detailem dole a tlačítkem vpravo" a pak se u jednotlivých částí nastavení ItemApperanceObject dají specifikovat jednotlivé elementy v jednotlivých módech.

TListView

ve fmx to pak vypadá

      object lstCalendar: TListView
        ItemAppearanceClassName = 'TImageListItemBottomDetailRightButtonAppearance'
        ItemEditAppearanceClassName = 'TImageListItemBottomDetailRightButtonShowCheckAppearance'
        HeaderAppearanceClassName = 'TListHeaderObjects'
        FooterAppearanceClassName = 'TListHeaderObjects'
        Images = ImageList1
        Align = Client
        Size.Width = 529.000000000000000000
        Size.Height = 577.000000000000000000
        Size.PlatformDefault = False
        TabOrder = 1
        ItemAppearance.ItemHeight = 150
        ItemAppearanceObjects.ItemObjects.Text.Font.StyleExt = {00070000000000000004000000}
        ItemAppearanceObjects.ItemObjects.Text.TextColor = claNavy
        ItemAppearanceObjects.ItemObjects.Text.Height = 20.000000000000000000
        ItemAppearanceObjects.ItemObjects.Text.PlaceOffset.Y = 4.000000000000000000
        ItemAppearanceObjects.ItemObjects.Detail.TextVertAlign = Leading
        ItemAppearanceObjects.ItemObjects.Detail.WordWrap = True
        ItemAppearanceObjects.ItemObjects.Detail.Height = 120.000000000000000000
        ItemAppearanceObjects.ItemObjects.Detail.PlaceOffset.Y = 30.000000000000000000
        ItemAppearanceObjects.ItemObjects.TextButton.Text = '…'
        ItemAppearanceObjects.HeaderObjects.Text.Font.StyleExt = {00070000000000000004000000}
        OnButtonClick = lstCalendarButtonClick
      end

Ok, teď máme definován vzhled (který může být mnohem komplexnější) a je třeba nějaké oživení, resp. plnění

var
  oItem:TListViewItem;
  x, z: Integer;
  
begin
  lstCalendar.BeginUpdate;
  try
    lstCalendar.Items.Clear;
    for z := 1 to 10 do
    begin
      oItem := lstCalendar.Items.Add;
//      oItem.TagObject := nejaky_objekt_kdyz_je_treba;
      oItem.Text := Format('Položka %d - %s (souborů: %d)', [z, FormatDateTime('dd.mm.yyyy hh:nn', Now), Random(3)]);
      oItem.Detail := Format('%s', ['random text']);
      oItem.ImageIndex := 7;
    end;
    lstCalendar.Selected := lstCalendar.Items[5];
  finally
    lstCalendar.EndUpdate;
  end;

Text, Detail atd. odpovídají sekcím nahoře, tj. např. Text.TextColor = claNavy je ten modrý nadpis. Tlačítko může vypadat jinak, dají se specikovat checkbox u položky, atd. Ale myslím, že principiálně to stačí.

Tagy:

Praxe

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců