Hi Alex,
ich spendiere dir diese Routine aus meiner code library, mit der du einiges anstellen kannst, wenn du weißt wie. Gesucht wird nach
text und wenn das Ergebnis
true ist, dann steht in
gc die Gitterkoordinate der Zelle, die den Suchtext enthält. Über den letzten Parameter steuere ich bei interaktivem Einsatz, ob zuerst in der Reihe oder der Spalte gesucht werden soll:
Delphi-Quellcode:
function FindNextCell(sg: TStringGrid; text: string; var gc: TGridCoord;
searchColBeforeRow: boolean = true): boolean;
var
gr: TGridRect;
gcStart: TGridCoord;
begin
with sg do
begin
gc := TGridCoord(Point(Col, Row));
gcStart := gc;
if (Selection.TopLeft.X = Selection.BottomRight.X)
and (Selection.TopLeft.Y = Selection.BottomRight.Y)
then gr := TGridRect(Rect(FixedCols, FixedRows, Pred(sg.ColCount), Pred(sg.RowCount)))
else gr := Selection;
repeat
if searchColBeforeRow then
begin
gc.X := FixedCols + (Succ(gc.X - FixedCols) mod (ColCount - FixedCols));
if gc.X = gr.Left then
gc.Y := FixedRows + (Succ(gc.Y - FixedRows) mod (RowCount - FixedRows));
end else
begin
gc.Y := FixedRows + (Succ(gc.Y - FixedRows) mod (RowCount - FixedRows));
if gc.Y = gr.Top then
gc.X := FixedCols + (Succ(gc.X - FixedCols) mod (ColCount - FixedCols));
end;
Result := Pos(text, Cells[gc.X, gc.Y]) > 0;
until Result or (gc.X = gcStart.X) and (gc.Y = gcStart.Y);
end;
end;
Grüße vom marabu