Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: StringGrid - Aktuelle Zeile löschen

  Alt 11. Mai 2006, 07:37
Guten Morgen.

Die aktuelle Zeile steht in der Eigenschaft Row:

Delphi-Quellcode:
procedure TFSpielplan01.BitBtnEintragLoeschenClick(Sender: TObject);
var
  iSF: Integer;
begin
{
  if StringGrid1.Cells[3, iSP] = 'H' then
  begin
    iSF := Pred(FSpielfeld.StringGrid1.RowCount);
    DeleteRow(FSpielfeld.StringGrid1, iSF);
    ResizeGrid(FSpielfeld.StringGrid1);
  end;
}

  DeleteRow(StringGrid1, StringGrid1.Row);
  ResizeGrid(StringGrid1);
end;
Allerdings musst du dir etwas einfallen lassen um die zugehörige Zeile aus dem SpielfeldGrid zu identifizieren. Momentan wird dort einfach die letzte Zeile im Grid gelöscht. Das ist bestimmt nicht richtig so. Dabei könnte dir diese Funktion helfen:

Delphi-Quellcode:
function LocateRow(sg: TStringGrid; index: Integer; value: String): Integer;
begin
  Result := sg.Cols[index].IndexOf(value);
end;
Du brauchst dann eine spezielle (unsichtbare) Spalte in beiden Grids. Im SpielfeldGrid enthält sie einen eindeutigen Schlüssel für die jeweilige Zeile, im SpielplanGrid enthält sie den Schlüssel der zugehörigen Zeile aus dem SpielfeldGrid.

marabu
  Mit Zitat antworten Zitat