Hallo,
Ich habe ein StringGrid, dass mittels einer Schleife nach einem String durchsucht wird. dazu benutze ich einen FindDialog.
Mit einem Klick im MainMenu wird der FindDialog aufgerufen:
Delphi-Quellcode:
procedure TFormHaupt.suchen1Click(Sender: TObject);
begin
FindDialog1.Execute;
end;
im OnFind-Ereignis des Dialogs steht folgendes:
Delphi-Quellcode:
procedure TFormHaupt.FindDialog1Find(Sender: TObject);
var suchtext:string;
r,c:integer; // 'r' steht für row (Zeile) und 'c' steh für col(Spalte)
begin
suchtext:=FindDialog1.FindText;
if (suchtext='')or(suchtext=' ') then else
begin
For r:=0 to StringGrid1.RowCount-1 do
For c:=0 to StringGrid1.ColCount-1 do
If (StringGrid1.Cells[c,r]=suchtext) then
begin
WaehleZeile(r); //Prozedur, die bewirkt, dass eine bestimmte Zeile markiert wird, aufgerufen wird
FindDialog1.CloseDialog;
exit;
end else
begin
FindDialog1.CloseDialog;
MessageDlg('" '+FindDialog1.FindText+'" wurde nicht gefunden', mtInformation, [mbOK],0);
exit;
end;
end;
end;
und das ist die Prozedur "WaehleZeile":
Delphi-Quellcode:
procedure TFormHaupt.WaehleZeile(Zeile:Integer);
var newSel: TGridRect;
begin
//Einstellung, dass man immer eine ganze Zeile auswählt:
StringGrid1.Options := StringGrid1.Options + [goRowSelect];
//Definition des selektierten Bereiches
newSel.Left := StringGrid1.FixedCols;
newSel.Right := StringGrid1.ColCount-1;
newSel.Top := Zeile;
newSel.Bottom := Zeile;
StringGrid1.Selection := newSel;
end;
Die wird aufgerufen, wenn der suchstring mit einem string aus dem stringgrid übereinstimmt. und die zeile, in der sich der string befindet wird markiert.
irgendwo ist da der wurm drin.
ich rufe im laufenden programm den dialog auf, gebe den suchstring ein, (der definitiv in einer zelle des stringgrids steht!), klicke auf "Weitersuchen" und er meldet mir, dass der Eintrag nicht gefunden wurde, obwohl er da ist!
Sieht jemand den Fehler?
Gruß, dopeline