Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#9

AW: ListView Spalte mit checkbox VCL

  Alt 3. Nov 2021, 11:14
Dann musst du das vermutlich über OwnerDraw selbst implementieren.
Jep.

Aber für einen nicht versierten Programmierer ohne tiefere Kenntnisse über die WinApi fast nicht umsetzbar.
Dazu kommt dann noch der Mix zwischen VCL\NonVCL
Habe mich daran versucht.. funktioniert gut aber es war für einen NICHT Informatiker (Hobby Programmierer) gar nicht so einfach das halbwegs zufriedenstellend umzusetzen.

Als Anregung.
Mein ListView basiert auf Interface und wird auf diese weise initialisiert.
Und anschließend alles selbst gezeichnet. (In einer DLL)

Delphi-Quellcode:
  LVPlayList := CTRL_ListViewCreate;
  LVPlayList.SelectedImg := SKAERO_FOLDER + 'ListView\ListSelect.png';
  LVPlayList.HeaderArrowImg := SKAERO_FOLDER + 'ListView\HeaderArrow.png';
  LVPlayList.VTrack := SKAERO_FOLDER + 'ListView\VTrack.png';
  LVPlayList.VThumb := SKAERO_FOLDER + 'ListView\VThumb.png';
  LVPlayList.VBtnUp := SKAERO_FOLDER + 'ListView\VBtnUp.png';
  LVPlayList.VBtnDown := SKAERO_FOLDER + 'ListView\VBtnDown.png';
  LVPlayList.HTrack := SKAERO_FOLDER + 'ListView\HTrack.png';
  LVPlayList.HBtnRight := SKAERO_FOLDER + 'ListView\HBtnRight.png';
  LVPlayList.HThumb := SKAERO_FOLDER + 'ListView\HThumb.png';
  LVPlayList.HBtnLeft := SKAERO_FOLDER + 'ListView\HBtnLeft.png';
  LVPlayList.Sizer := SKAERO_FOLDER + 'ListView\Sizer.png';
  LVPlayList.ArrowImgStateMax := 2;
  LVPlayList.Left := 19;
  LVPlayList.Top := 65;
  LVPlayList.Width := MainWidth - 242;
  LVPlayList.Height := MainHeight - 106;
  LVPlayList.DlgItemID := ID_PLAYLIST;
  LVPlayList.ItemHeight := 23;
  LVPlayList.HeaderHeight := 20;
  LVPlayList.CreateWindow(hMain);
  LVPlayList.SetFont(14, PWideChar(SKAERO_TEXTFONT), FontStyleBoldItalic,
    SKAERO_ACTIVECAPTION, SKAERO_INACTIVECAPTION, True, -1);

  LVPlayList.InsertColumn(LVPlayList.Handle, 0, 'Nr.', 50, False, sortInt);
  LVPlayList.InsertColumn(LVPlayList.Handle, 1, 'Time', 55, False, sortString);
  LVPlayList.InsertColumn(LVPlayList.Handle, 2, 'Title', 250, True, sortString);
  LVPlayList.InsertColumn(LVPlayList.Handle, 3, 'Artist', 250, False, sortString);
  LVPlayList.InsertColumn(LVPlayList.Handle, 4, 'Album', 70, False, sortString);
  LVPlayList.InsertColumn(LVPlayList.Handle, 5, 'Path', 250, False, sortString);

  SKAERO_SetAnchorMode(LVPlayList.Handle, ANCHOR_HEIGHT_WIDTH);
  SKAERO_SetZorder(LVPlayList.Handle, HWND_TOP);
Aber es sollte dich niemand davon abhalten es einfach zu versuchen.
Viel glück dabei.

EDIT:
Zitat:
PS: Könnte man evtl. als Workaround ein Bild in eine Spalte geben und über Klick Event das Bild wechseln?
Ja das geht wenn man sich der LVS_EX Styles bedient siehe LVS_EX_SUBITEMIMAGES

Geändert von venice2 ( 3. Nov 2021 um 22:00 Uhr)
  Mit Zitat antworten Zitat