Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 07.01.16 21:57 
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?

ausblenden volle Höhe Delphi-Quelltext
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  {In der selben Reihe weitersuchen}
  begin
    if frDown in FindDialog.Options then  {Abwärts suchen}  //korrekt!
    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  {Aufwärts suchen}  //nicht korrekt!
    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;  {if not}

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 07.01.16 23:00 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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.

Habe den Fehler gefunden: Er war in dem Code, der nach dem geposteten Codes steht, da hatte ich vergessen, frDown zu berücksichtigen. Hätte eher und besser suchen sollen!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!