現在 Delphi6 Personal を使用してメモ帳づくりをしています。そこで、
findDailogのヘルプにあったコードを試したところ、検索ダイアログのボタンを押すとフォーカスがメインとダイアログの間を行ったり来たりになり、連続で押すと画面がちらつきます。メモ帳のようにダイアログにフォーカスを残したまま、検索文字列を選択状態にする方法はないものでしょうか?
過去ログを検索したところ、"StringGlid"に関するものがあり試したところ検索ボタンを押しても変化なし、でした。
何か解決方法がありましたら、よろしくお願いします。
*- - - - - - - - 以下、ヘルプ・サンプルコード - - - - - - - - - -*
ボタンをクリックすると[検索]ダイアログボックスが表示されます。「FInd what」テキストを入力して[次を検索]ボタンをクリックすると,TRichEdit 内で一致する最初の文字列が選択されます。
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
FindDialog1.Execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
with RichEdit1 do
begin
{ 検索は現在選択されている場所から開始される }
{ 何も選択されていない場合は,テキストの最初から開始される }
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;
{ ToEnd は検索範囲の文字数を示す }
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;
RichEdit1 の HideSelection プロパティーを false にして、上記コード中の
SetFocus を取る
りおりおさん、ありがとうございました。おかげさまで解決です。
ツイート | ![]() |