Hallo
ich habe versucht, das Beispiel in der Delphi Hilfe auf mein Programm zu übertragen: Im Hauptfenster befindet sich ein Child-Fenster mit Menü, Richedit und Finddialog. Bei Klick auf Menüpunkt "Suchen" erscheint ein FindDialog. Bei Click auf den Button "weiter" (Ereignis onfind) liest die Prozedur den Text aus und sucht in Richedit.
Delphi-Quellcode:
procedure TForm2.Action1Execute(Sender: TObject);
begin
FindDialog1.Execute;
end;
procedure TForm2.FindDialog1Find(Sender:TObject);
var
ToEnd, StartPos, FoundAt : Longint;
begin
with Richedit1 do
begin
Startpos:=0;
ToEnd:=Length(Text) - StartPos;
FoundAt:=FindText(FindDialog1.FindText,Startpos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then
begin
SetFocus;
Selstart:=FoundAt;
SelLength:=Length(FindDialog1.FindText);
end;
end;
end;
Aber das Dialogfeld gibt den Focus nicht ab! In einem normalen Formular (nicht
MDI) funktioniert es tadellos. Wie muss ich das abändern, damit es auch bei einem
MDI funktioniert? Wenn ich mit der Maus ins Richedit klicke, wechselt der Focus ganz normal zwischen Dialog und
MDI-Kind. Warum geht das nicht mit SetFocus?