Delphi-PRAXiS

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/)
-   -   D2009 : TListView -> Groups -> State lässt sich nicht ändern (https://www.delphipraxis.net/181344-d2009-tlistview-groups-state-laesst-sich-nicht-aendern.html)

LoCrux 7. Aug 2014 16:12

D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Hallo @All,

eigenlich sollte man bei einer TListView (ViewStyle:vsReport & GroupView:True) über ListView.Groups[x].State
das Attribut lgsCollapsed zusätzlich setzen können wenn State=[lgsCollapsible] --> State=[lgsCollapsible,lgsCollapsed].

Nur weigert sich Delphi den State to setzen.
Beim Debuggen erhalte ich nach jedem Aufruf der Test Procedure immer wieder nur den State = [lgsCollapsible] (so wie defaultmässig in der IDE gesetzt).
TListView.SetState wird korrekt aufgerufen und der neue state FState:=Value zugewiesen.
Nur irgendwo wird das wieder rückgängig gemacht!!??

Hat einer eine Idee???
Fehlt was???
Wäre für jede Hilfe dankbar.

Test Procedure:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  With lv do
  begin
    Items.BeginUpdate;
    for i := 0 to Groups.Count - 1
    do begin
      if lgsCollapsed in Groups[i].state
      then begin
        Groups[i].state := Groups[i].state - [lgsCollapsed]
      end
      else begin
        Groups[i].state := Groups[i].state + [lgsCollapsed];
      end;
    end;
    Items.EndUpdate;
  end;
end;

LoCrux 14. Aug 2014 17:03

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Solved!!!

Delphi-Quellcode:
procedure ListViewCE(lv:TJVListView;Collapsed:boolean);
var
  id  : Integer;
  res : Integer;
  h   : HWND;
  col : integer;
begin
 h := lv.Handle;
 if (h = 0) then exit;
 for id := 0 to lv.Groups.Count-1
 do begin
   if Boolean(ListView_HasGroup(h,id))
   then begin
     if Collapsed then col := 1 else col := 4;
     res := ListView_SetGroupState(h,id,LVGS_COLLAPSED,col);
   end;
 end;
 Application.ProcessMessages;
end;

Back2Code 18. Nov 2014 13:10

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Zitat:

Zitat von LoCrux (Beitrag 1268690)
Solved!!!

Delphi-Quellcode:
procedure ListViewCE(lv:TJVListView;Collapsed:boolean);
var
  id  : Integer;
  res : Integer;
  h   : HWND;
  col : integer;
begin
 h := lv.Handle;
 if (h = 0) then exit;
 for id := 0 to lv.Groups.Count-1
 do begin
   if Boolean(ListView_HasGroup(h,id))
   then begin
     if Collapsed then col := 1 else col := 4;
     res := ListView_SetGroupState(h,id,LVGS_COLLAPSED,col);
   end;
 end;
 Application.ProcessMessages;
end;

Stecke gerade am gleichen Problem fest. Da du ja anscheinend auf eine Lösung gestoßen bist, wäre es möglich von dir deinen Post nochmal kurz genauer zu erläutern ?

DeddyH 18. Nov 2014 13:17

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Schau mal hier: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Back2Code 18. Nov 2014 13:37

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Zitat:

Zitat von DeddyH (Beitrag 1280191)

Hab bisher kaum was mit der Win API gemacht (Anfänger), zusätzlich lässt sich die Procedur leider auch nicht kompilieren.

DeddyH 18. Nov 2014 13:49

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Hast Du die Unit CommCtrl eingebunden?

Back2Code 18. Nov 2014 14:01

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Zitat:

Zitat von DeddyH (Beitrag 1280199)
Hast Du die Unit CommCtrl eingebunden?

Nein :D Wie findet man sowas am besten raus welche Unit benötigt wird?


Hab die Unit jetzt eingebunden jetzt funktionierst einwandfrei. Danke für den Tipp.

baumina 18. Nov 2014 14:03

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Zitat:

Zitat von Back2Code (Beitrag 1280202)
Wie findet man sowas am besten raus welche Unit benötigt wird?

Ich drück immer F1 auf dem nicht gefundenen Befehl.

DeddyH 18. Nov 2014 14:05

AW: D2009 : TListView -> Groups -> State lässt sich nicht ändern
 
Ganz ehrlich? Ich hab auch schnell gesuchmaschint :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz