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/)
-   -   Delphi Stringgrid aktuallisiert nicht (https://www.delphipraxis.net/72252-stringgrid-aktuallisiert-nicht.html)

Neutral General 27. Jun 2006 19:13


Stringgrid aktuallisiert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Wusste nicht ob mein Problem eher zu "Controls" oder zu "Sonstigen Fragen zu Delphi" passt.. egal..
Also es geht wieder um meine Schulden-Record Sache.. Ich stelle die in ner ListBox + Stringgrid dar.
(siehe Screenshot)

Und wenn man jetzt links auf nen Eintrag klickt sollen halt nur die Schulden bei dieser Person angezeigt werden.. Geht im Prinzip ja.. is auch nicht schwer (normal..).

Delphi-Quellcode:
procedure TMain.ListBox1Click(Sender: TObject);
begin
 if ListBox1.ItemIndex > -1 then begin
  Schulden.Repaint(ListBox1.Items[ListBox1.ItemIndex],false, true);
 end;
end;
=>

Delphi-Quellcode:
procedure TSchuldenliste.Repaint(fBei: String; LB_Repaint, SG_Repaint: Boolean);
var i: Integer;
begin
 if (not LB_Repaint) and (not SG_Repaint) then exit;
 if SG_Repaint then begin
  FStringgrid.RowCount := 0; // alles löschen
  for i:= 0 to Count-1 do begin      // alles von der ausgewählten Person
   if Items[i].Bei = fBei then begin // ins Stringgrid einfügen
    FStringgrid.RowCount := FStringgrid.RowCount + 1;
    FStringgrid.Cols[0].Add(Items[i].Anlass);
    FStringgrid.Cols[1].Add(FloatToStrF(FItems[i].Betrag,ffNumber,4,2) + '€');
    FStringgrid.Cols[2].Add(ziToString(FItems[i].Zinsen.Intervall));
    FStringgrid.Cols[3].Add(IntToStr(FItems[i].Zinsen.Value));
    FStringgrid.Cols[4].Add(zaToString(FItems[i].Zinsen.Kind));
    FStringgrid.Cols[5].Add(FloatToStrF(FItems[i].Betrag,ffNumber,4,2) + '€');
    FStringgrid.Cols[6].Add(BoolToString(FItems[i].Gezahlt));
   end;
  end;
  FStringgrid.FixedRows := 1;
 end;

 if LB_Repaint then begin // unwichtig weil der Teil nicht aufgerufen wird
  FListBox.Clear;       // in meinem Fall
  for i:= 0 to Count-1 do begin
   FListBox.Items.Add(Items[i].Bei)
  end;
 end;
end;
Beim ersten mal (wie eben^^) geht es ohne Probleme.. Alles wird dargestellt wie es sein soll.
Wenn ich dann nochmal auf die Listbox klicke (auf nen anderen Namen) dann ändert sich nix o.O
Hab mim Debugger nachgeprüft.. Der String ist "gültig" und alle Einträge werden geschrieben.. Aber ich seh nix :|

Gruß
Neutral General

andreash 27. Jun 2006 21:33

Re: Stringgrid aktuallisiert nicht
 
Hallo,

ersetze doch einmal dein ".add" mit ".Strings[RowCount-1]".

zebrafalke 27. Jun 2006 21:36

Re: Stringgrid aktuallisiert nicht
 
Intervall schreibt man in der Mitte mit "r" :zwinker:

Lannes 27. Jun 2006 23:49

Re: Stringgrid aktuallisiert nicht
 
Hallo,

Delphi-Quellcode:
FStringgrid.RowCount := 0; // alles löschen
damit löscht Du nicht wirklich alles.
Darum schreibst Du mit FStringgrid.Cols[0].Add... unter die sichtbaren Zeilen.

Setz mal vor der Zeile den Code ein, vermute das es Dein Problem löst:
Delphi-Quellcode:
for i := 0 to FStringgrid.RowCount-1 do
      FStringgrid.Rows[i].Clear;

Neutral General 28. Jun 2006 12:57

Re: Stringgrid aktuallisiert nicht
 
Zitat:

Zitat von Lannes
Hallo,

Delphi-Quellcode:
FStringgrid.RowCount := 0; // alles löschen
damit löscht Du nicht wirklich alles.
Darum schreibst Du mit FStringgrid.Cols[0].Add... unter die sichtbaren Zeilen.

Setz mal vor der Zeile den Code ein, vermute das es Dein Problem löst:
Delphi-Quellcode:
for i := 0 to FStringgrid.RowCount-1 do
      FStringgrid.Rows[i].Clear;

k ich glaube das werde ich mal ausprobieren.. habe nach FStringgrid.Clear gesucht aber das gabs nicht, deswegen hab ich erst gar nicht weiter nach irgendner Clear-Methode gesucht.. werde das gleich zu Hause mal ausprobieren :)

Gruß
Neutral General

Neutral General 28. Jun 2006 13:33

Re: Stringgrid aktuallisiert nicht
 
Das soll jetzt nicht gepushed sein.. wollte nur sagen das ichs jetzt hinbekommen hab :)
Da zwar durch die neue Methode alles weg ist (war es vorher nicht.. also.. egal^^) muss ich zwar wieder die "Überschriften" neu schreiben aber es klappt :)

Thx :dp:

Gruß
Neutral General

Lannes 28. Jun 2006 14:14

Re: Stringgrid aktuallisiert nicht
 
Hallo,

Überschrift neu schreiben u.a. so:
Delphi-Quellcode:
StringGrid.Rows[0].Text := 'Spalte1'+#13+'Spalte2'+#13+'Spalte3';


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz