AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 検索の画面 2010/11/06
 
前回は[Dialogs]内の「PrinterSetupDialog」(「プリンタ設定」画面)について見ましたので今回も同じく[Dialogs]内の「FindDialog」(「検索」画面)をみてみます。「検索」画面は Delphi6 にもあります。

 
「テスト21」を開いて、ボタン[検索](Button6)を追加しておき、この「検索」画面 FindDialog を配置してみます。1つ目ですので Nameプロパティは「FindDialog1」となります。アイコン絵となりますが実行時には「検索」画面が表示されます。

 
「検索」画面は、メモやリッチエディット等の文章入力用コンポーネントやデータ内で入力・登録している文章・文字列データの中からある特定の文字を検索したい場合/どこでその文字を使っているのかを知りたい場合、その文字があるのかどうかを知りたい場合、に利用できる画面です。勿論、この「検索」画面でなくとも、そういうフォーム画面を自作する事でも実現出来ますが、予め用意されている機能を利用すればその分簡単(楽)に出来ます、という感じのものです。
ボタン[検索](Button6)をクリックした時の処理を記述します。
procedure TForm1.Button6Click(Sender: TObject);
begin
 FindDialog1.Execute;
end;
これで「検索」画面が表示されます。次に、「検索」画面での[次を検索]ボタンをクリックした時の処理を記述します。FindDialog1 の OnFindイベントです。
procedure TForm1.FindDialog1Find(Sender: TObject);
var
 i : integer ;
begin
 i := AnsiPos(FindDialog1.FindText,Memo1.Text);
 if (i > 0) then begin
  Memo1.SelStart := i-1 ;
  Memo1.SelLength := Length(FindDialog1.FindText);
  Memo1.SetFocus ;
 end;
end;
これでとりあえず保存・コンパイル(再構築)・実行を行います。

テキトウに文章を入力して[検索]ボタンをクリック


「検索」画面が表示されます


「検索する文字列」に、探したい文字を入力し
[次を検索]ボタンをクリック


検索出来るとその箇所を反転文字(選択)状態にします
 
「印刷」画面などと同様、「検索」画面を表示(実行)するには Executeメソッドを利用します。しかしこれまでとは違って、[OK]ボタンはありません。[次へ検索]ボタンをクリックすると、FindDialog1 の OnFindイベントが実行されますので、そのイベントハンドラで検索を行わせるようにします。このボタンをクリックしても、特別、閉じるという処理を入れない限り、「検索」画面は閉じられずそのまま画面に表示されています。[キャンセル]ボタンをクリックすると閉じられます。「検索する文字列」で入力した文字は、FindDialog1 の FindTextプロパティで設定/取得する事が出来ます。
 
ここではメモ Memo1 に対して、メモの Textプロパティを AnsiPos関数で安直に検索していますが、リッチエディットであれば FindTextメソッドという機能があるというような場合もありますし、データを順番にチェックしていくというような事を行う場合もあります。どういうデータを検索しようとしているのかにも依ります。
 
「検索」画面には、「□単語単位で探す」「□大文字と小文字を区別する」という検索条件を指定するチェックボックスと「検索方向」を指定するラジオボタンがあります。これを利用するか否かはプログラマの自由です。この「検索」画面で指定したからといって自動的にそういう機能が付加される訳ではありません。その指定をした場合には、そういう機能を実現するためのコーディングを行う必要があります。
 
例えば「□大文字と小文字を区別する」であれば、チェックをしない=大文字小文字を区別しない=大文字小文字を同一視する=検索対象となる文字データを大文字又は小文字に変換して(AnsiUpperCase関数やAnsiLowerCase関数などを使って)検索を行う、という事もあれば、リッチエディットであればそのためのOptionsプロパティが用意されていたりします。
 
 
「検索」画面の Optionsプロパティは、その外観や動作状態・状態取得などを行う事が出来ます。以下ヘルプより。
frDisableMatchCase検索ダイアログの[大文字と小文字を区別する]チェックボックスを無効(グレー表示)にする
frDisableUpDown検索の方向を指定する[Up]ボタンおよび[Down]ボタンを無効(グレー表示)にする。検索ダイアログだけで使用する
frDisableWholeWord検索ダイアログの[単語単位で探す]チェックボックスを無効(グレー表示)にする
frDownダイアログが開くときにデフォルトで[Down]ボタンを選択する。frDown フラグがオフの場合は,[Up]が選択される。デフォルトでは frDown はオン
frFindNextこのフラグはユーザーが[Find Next]ボタンをクリックするとオンになり,ダイアログが閉じるとオフになる
frHideMatchCaseダイアログの[大文字と小文字を区別する]チェックボックスを削除する
frHideWholeWordダイアログの[単語単位で探す]チェックボックスを削除する
frHideUpDownダイアログの[Up]ボタンと[Down]ボタンを削除する
frMatchCaseこのフラグはユーザーが[大文字と小文字を区別する]チェックボックスを選択するとオンになり,選択を解除するとオフになる。ダイアログが開くときにデフォルトでチェックボックスを選択するには,設計時に frMatchCase を設定する
frReplaceTReplaceDialog にのみ適用される。このフラグは,FindText 文字列の現在の一致(現在の一致のみ)を ReplaceText 文字列で置換することを示すためにシステムによって設定される。検索ルーチンでは使用しない
frReplaceAllTReplaceDialog にのみ適用される。このフラグは,FindText 文字列と一致するすべての文字列を ReplaceText 文字列で置換することを示すためにシステムによって設定される
frShowHelp[ヘルプ]ボタンがダイアログボックスに表示される
frWholeWordこのフラグは,ユーザーが[単語単位で探す]チェックボックスを選択するとオンになり,選択を解除するとオフになる。ダイアログが開くときにデフォルトでチェックボックスを選択するには,設計時に frWholeWord を設定する
 
 
<オブジェクトインスペクタ>での内容は以下のようになっています。

 

 
なお、文章入力にて、文字の検索や 次の文字の置換 を行いたい場合は、メモよりも、検索機能が実装されているリッチエディットを利用する方が簡単だと思います。メモの方がシンプルで扱いやすいというのはありますが、色んな機能を付けていこうとするとシンプルであるが故に追加機能を自分で作らないといけなくなる、という事はよくあると思います。その際、自分で機能を作るのか、それとも、別のコンポーネントに切り替えるのか、というのは、自分次第です。
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/11/05
 2010/11/06
▼2010/11/06
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.