Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TListView - aktivieren einiger Checkboxen verhindern (https://www.delphipraxis.net/202058-tlistview-aktivieren-einiger-checkboxen-verhindern.html)

tomkupitz 26. Sep 2019 12:57

AW: TListView - aktivieren einiger Checkboxen verhindern
 
In Delphi 5 das probieren:

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ListView1.Items.Add do
    Caption:='abcdefg';
end;

var ures1, ures2: Integer;

procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
var i: Integer;

begin
  if Change=ctState then
  begin
    ures1:=SendMessage(ListView1.Handle, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK);
  end;
end;

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
var i: Integer;

begin
  if Change=ctState then
  begin
    ures2:=SendMessage(ListView1.Handle, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK);

    if ((ures1 and LVIS_STATEIMAGEMASK) shr 12) <> ((ures2 and LVIS_STATEIMAGEMASK) shr 12) then
      if Item.Index=0 then
        Item.Checked:=False;
  end;
end;

Marco Steinebach 27. Sep 2019 05:15

AW: TListView - aktivieren einiger Checkboxen verhindern
 
Hallo!
JEP! Es funktioniert einwandfrei, auch mit mit D5. ;-)
Ganz herzlichen Dank.
Eine Bitte: kannst du evtl. noch ein zwei Worte über die If-Bedingung mit dem shr verlieren, für Bit-Operationen war ich immerschon zu doof. ;-)

Und noch eine Schönheitsfrage: wenn ich eines der Elemente aktiviere, was nicht aktiviert werden darf, ist es erst aktiviert, und sobald man ein anderes selektiert, ist die Aktivierung erst weg. Geht es, dass ein solches Element, sofort, nachdem man es aktiviert hat, wieder deaktiviert wird, damit der user gleich sieht, dass es nicht geht?

Ganz herzlichen Dank und herzliche Grüße
Marco

tomkupitz 27. Sep 2019 08:39

AW: TListView - aktivieren einiger Checkboxen verhindern
 
Zitat:

Eine Bitte: kannst du evtl. noch ein zwei Worte über die If-Bedingung mit dem shr verlieren, für Bit-Operationen war ich immerschon zu doof.
anschaulich siehe hier: https://de.wikipedia.org/wiki/Logische_Verschiebung

Zitat:

Und noch eine Schönheitsfrage: wenn ich eines der Elemente aktiviere, was nicht aktiviert werden darf, ist es erst aktiviert, und sobald man ein anderes selektiert, ist die Aktivierung erst weg. Geht es, dass ein solches Element, sofort, nachdem man es aktiviert hat, wieder deaktiviert wird, damit der user gleich sieht, dass es nicht geht?
Verstehe ich nicht ganz. ABER: setze den Item gleich zu Beginn auf False. Dann bleibt der auch so.

with ListView1.Items.Add do
begin
Caption:='abcdefg';
Checked:=False;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Seite 2 von 2     12   

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