Hai maximus Caesar,
da sowohl die Rows als auch die Cols eines StringGrids vom Typ
TStrings sind und Du ja die gesamte Zeile prüfen möchtest ist es nicht notwendig eine extra Schleife für die einzelnen Zellen zu machen. Du kannst direkt
StringGrid.Rows[n].Text prüfen.
Bei mir seiht der Code jetzt so aus:
Delphi-Quellcode:
function CopySGRows(aSource, aDest: TStringGrid; aSearch: string): integer;
var
rowscopy: integer;
ndx: integer;
begin
rowscopy := 0;
for ndx := aSource.FixedRows to Pred(aSource.RowCount) do // Alle Zeilen ausser den "Titeln" durchlaufen
begin
if (Pos(aSearch, aSource.Rows[ndx].Text) > 0) then // Wenn in der Zeile das Suchwort ist dann:
begin
Inc(rowscopy); // Anzahl der betroffenen Zeilen erhöhen
aDest.RowCount := aDest.FixedRows + rowscopy; // Neue Zeile im Ziel SG erzeugen
aDest.Rows[aDest.RowCount - 1].Text := aSource.Rows[ndx].Text; // Text aus der Source-Zeile in die Dest-Zeile
end;
end;
Result := rowscopy;
end;
procedure TForm1.btn_CopySGRowsClick(Sender: TObject);
var
foo: integer;
begin
foo := CopySGRows(StringGrid1, StringGrid2, 'blubb');
ShowMessage(IntToStr(foo));
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"