Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: procedure Fehler (procedure zum Filtern eines Stringgrid

  Alt 25. Sep 2005, 17:42
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"
  Mit Zitat antworten Zitat