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