Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Advstringgrid - Zeilen ausblenden (https://www.delphipraxis.net/81258-advstringgrid-zeilen-ausblenden.html)

capo 23. Nov 2006 15:25


Advstringgrid - Zeilen ausblenden
 
Hallo
ich erzeuge hiermit in einem Advstringgrid in dergesamten ersten Spalte eine Checkbox:
Delphi-Quellcode:
  for i := 1 to advstringgrid1.RowCount - 1 do
    advstringgrid1.AddCheckBox(0, i, false, false);
Nun möchte ich die Zeilen mit gecheckten Boxen ausblenden, das mache ich so:
Delphi-Quellcode:
procedure TForm1.Button11Click(Sender: TObject);
var
  i, x2: integer;
  state: boolean;
begin
  for i := 1 to AdvStringGrid1.RowCount - 1 do
  begin
    if Advstringgrid1.GetCheckBoxState(0, i, state) then
    begin
      if state then
      begin
        AdvStringGrid1.SetCheckBoxState(0, i, false);
        for x2 := 0 to AdvStringgrid1.ColCount - 1 do
          AdvStringGrid1.HideRow(i);
      end;
    end;
  end;
end;
Mein Problem ist, dass damit immer die letzte Zeile nicht ausgeblendet werden kann, manchmal auch andere Zeilen.
Seht ihr meinen Fehler?

Wenn ich immer die letzte Zeile lösche dann klappts.

gruss vom capo

m.wollert 23. Nov 2006 15:57

Re: Advstringgrid - Zeilen ausblenden
 
Hi Capo,

eigentlich ganz simpel - wenn ich auch kurz gestutzt habe...

probier es mal mit folgender Zeile

Delphi-Quellcode:
for i := AdvStringGrid1.RowCount-1 downto 1 do
begin
   ...
end;
Nach jedem "hide" ändert sich "von oben" betrachtet der Index. Und damit werden nach unten hin die "hides" immer 'falscher' ;-)
Dagegen hilft: von hinten anfangen ;)

Grüße!
Michael

capo 23. Nov 2006 20:32

Re: Advstringgrid - Zeilen ausblenden
 
Hallo Michael,
danke für deine Hilfe. irgendwie haut das aber auch noch nicht hin.
Die letzte Zeile bleibt immer noch stehen.
grüsse capo

raiguen 24. Nov 2006 09:59

Re: Advstringgrid - Zeilen ausblenden
 
Zitat:

Zitat von capo
Delphi-Quellcode:
procedure TForm1.Button11Click(Sender: TObject);
...
    if state then
      begin
        AdvStringGrid1.SetCheckBoxState(0, i, false);
        for x2 := 0 to AdvStringgrid1.ColCount - 1 do
          AdvStringGrid1.HideRow(i);
      end;
...

Hi Capo,
was ich nicht ganz verstehe ist der obige Codeschnippsel :gruebel:
Das sieht für mich doch so aus, dass du die gesetzte(=gecheckde) Box auf ungecheckt setzt (???)
Und was soll die 2.Schleife mit ColCount???? :gruebel:
Du willst doch 'nur' die gecheckten Zeilen unsichtbarmachen oder? Geht das nicht einfacher, so vllt:
Delphi-Quellcode:
for i := AdvStringGrid1.RowCount-1 downto 1 do
  begin
    Advstringgrid1.GetCheckBoxState(0, i, state);
    if state then
      AdvStringGrid1.HideRow(i);
end;
Ich kenne den AdvStringGrid (noch) nicht, von daher ist es nur ein Lösungsansatz...

capo 27. Nov 2006 12:52

Re: Advstringgrid - Zeilen ausblenden
 
Hallo,
ja stimmt.
Ich hatte einen Denkfehler.
Merke auch das ich völlig falsch angefangen habe, mein Problem ist doch ein ganz anderes.
Muss dafür aber einen neuen Thread aufmachen.
gruss capo


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 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