FindDialogとReplaceDialogの処理を共通化するには?

解決


東海岸  2004-12-19 06:26:33  No: 12377  IP: [192.*.*.*]

たびたびお世話になります。
FindDialogとReplaceDialogの処理のうち、検索の部分を共通化したいと思っております。こんな感じです。

//置き換え(ダイアログの検索キー)
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
    1.検索プロシジャ呼び出し(Sender);
    2.文字列の選択があれば置き換え処理
        ・・・・・・・・・・
    SelLength := Length(ReplaceDialog1.FindText);  //エラーにならず
end;

//検索(ダイアログの検索キー)
procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
    検索プロシジャ呼び出し(Sender);
       ・・・・・・・・・
    SelLength := Length(FindDialog1.FindText); //ここではエラーにならず
end;

//検索プロシジャ呼び出し(これから作りたい検索共通処理)
procedure TForm1.xxxxxxxxxxxx(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
      SelLength := Length(Sender.FindText);
                          ^^^^^^
end;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
"Sender"にオブジェクト(FindDialog1/ReplaceDialog1)が設定されているので
(Sender.classNameで確認)それぞれイベント処理で記述していた
検索時:SelLength := Length(FindDialog1.FindText);
置換時:SelLength := Length(ReplaceDialog1.FindText);  を参考に

SelLength := Length(Sender.FindText);  としてみましたが
エラー:未定義の識別子"FindText"となってしまいます。

なにを、どこで定義したらよいのでしょうか?  どうかお願い致します。

編集    削除
オレオレ  2004-12-19 07:49:50  No: 12378  IP: [192.*.*.*]

Sender(TObjectクラス)には FindTextというメンバ関数はないので、
エラーになるのは当然ということで…なりすまし(‾〜‾)

  if Sender is TFindDialog then SelLength := Length((Sender as TFindDialog).FindText); // 検索
  if Sender is TReplaceDialog then SelLength := Length((Sender as TReplaceDialog).FindText); // 置換

編集    削除
東海岸  2004-12-19 09:18:35  No: 12379  IP: [192.*.*.*]

なんとかFind/Replaceの処理を共通化しようとしたのですが、やはり個々に対応した方が確実なようです。お手間をかけました。ありがとうございました。

編集    削除