Hallo zusammen!
Ich möchte in einem TStringGrid nach Text in den Cells suchen, der Code soll dort stoppen, wo der Suchtext gefunden wurde. Die Abwärtssuche funktioniert ganz korrekt, Col und Row passt und der Text wird stets gefunden.
Nur die Aufwärtssuche funktioniert nicht: Suchtext, der sich in einem Col der aktuell ausgewählten Row befindet, wird gefunden, dann aber "springt der Code" in eine Reihe oberhalb, die zwar ebenfalls den Suchtext enthält, markiert aber die erste Col, die den Suchtext enthält, nicht die letzte. Ich möchte hier aber, dass der Code wie gewünscht von rechts nach links sucht. Es müsste also stets von rechts nach links gesucht werden.
Was ist im Teil ab dem
else falsch?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| function GridFindText(const Grid: TStringGrid; const FindDialog: TFindDialog; Msg, Rowselect: Boolean): Boolean; var i, r, c: Integer; FindStr, RowStr, ColStr: String; begin Result := False;
if not Rowselect then begin if frDown in FindDialog.Options then begin for i := Grid.Col+1 to Grid.ColCount-1 do begin if Pos(FindDialog.FindText, Grid.Cells[i, Grid.Row]) > 0 then begin Grid.Col := i; Result := True; exit; end; end; end else begin for i := Grid.Col-1 downto 0 do begin if Pos(FindDialog.FindText, Grid.Cells[i, Grid.Row]) > 0 then begin Grid.Col := i; Result := True; exit; end; end; end; end; |
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!