AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Spalte mit checkbox VCL

Ein Thema von Rolandrevolvermann · begonnen am 3. Nov 2021 · letzter Beitrag vom 3. Nov 2021
 
venice2
(Gast)

n/a Beiträge
 
#10

AW: ListView Spalte mit checkbox VCL

  Alt 3. Nov 2021, 14:22
Einfaches Beispiel.
So könnte man das machen unter VCL (Nicht mein Ding)

Siehe SetLVSubImages insbesondere auf Column und Index achten.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Winapi.CommCtrl, Vcl.StdCtrls,
  System.ImageList, Vcl.ImgList;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    ImageList1: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Checked: BOOL;
    procedure SetLVSubImages(LV: TListView; Index, Column: Integer;
      Image: Integer; SubImagesOn: Bool);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Checked := Not Checked;

  if Checked then
    SetLVSubImages(ListView1, 3, 2, 1, True)
  else
  SetLVSubImages(ListView1, 3, 2, 0, True)
end;

procedure TForm1.FormCreate(Sender: TObject);
var IntI: Integer;
begin

  for IntI := 0 to 2 do
    ListView1.Column[IntI].Width := 100;

end;

procedure TForm1.SetLVSubImages(LV: TListView; Index, Column, Image: Integer;
  SubImagesOn: Bool);
var
  lvStyle: DWORD;
  LV_Item: TLVItem;

begin

    lvStyle := SendMessage(LV.Handle, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);

    If SubImagesOn Then
        lvStyle := lvStyle or LVS_EX_SUBITEMIMAGES
    else
        lvStyle := lvStyle and Not LVS_EX_SUBITEMIMAGES;


    SendMessage(LV.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, lvStyle);

    If SubImagesOn Then
    begin
      LV_Item.mask := LVIF_IMAGE;
      LV_Item.iSubItem := Column;
      LV_Item.iItem := Index - 1;
      LV_Item.iImage := Image;
    end;

    SendMessage(LV.Handle, LVM_SETITEM, (Index - 1), Integer(@LV_Item));

    LV.Refresh;
end;

end.
Edit:
Mehrere..
Delphi-Quellcode:
  if Checked then
  begin
    SetLVSubImages(ListView1, 2, 1, 1, True);
    SetLVSubImages(ListView1, 2, 2, 1, True);
    SetLVSubImages(ListView1, 3, 2, 1, True);
  end else
  begin
    SetLVSubImages(ListView1, 2, 1, 0, True);
    SetLVSubImages(ListView1, 2, 2, 0, True);
    SetLVSubImages(ListView1, 3, 2, 0, True);
  end;
ImageListe auf die Form klatschen diese dem ListView zuweisen und zwei Icon in Checkbox Design einfügen.
Icon 0 Unchecked
Icon 1 Checked.

Dann mit den Button ein /ausschalten.

Siehe Anhang

Geändert von venice2 (10. Nov 2021 um 17:28 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz