リアルタイム検索をするには?

解決


ひろみ  2006-04-13 01:57:17  No: 21002

質問があります。

KOKYAK.DB(code,kana,address)

TDataSource.DataSet=Table1
TDataSource.Name=DtsKokyak
TTable.Name=Kokyak
TDBGrid.DataSource=DtsKokyak

KOKYAK.DBの内容を全件TDBGridに表示しています。
画面上にTEditを配置して、そこに入力された文字列を含む
レコードのみをリアルタイムにTDBGridに表示することは出来るのでしょうか?
Edit1:CODE検索用
Edit2:kana検索用

TQueryを使用すると検索ボタンを押す動作がはいるので...
何かよい方法がありましたらよろしくお願いいたします。


igy  2006-04-13 02:05:41  No: 21003

>TQueryを使用すると検索ボタンを押す動作がはいるので...

TEditのOnChangeイベントを使えば
検索ボタンを押す動作が不要では?


ひろみ  2006-04-13 02:17:38  No: 21004

igyさんありがとうございます。

TQueryを使用してもリアルタイムの検索が出来るのでしょうか?
TEditのOnChangeでどのようにするとよろしいのでしょうか?


igy  2006-04-13 02:34:14  No: 21005

実際には、動かして試したわけではないのですが、
イメージ的には、以下のような感じです。

procedure TForm1.edtHogeChange(Sender: TObject);
begin
    DispUpdate;    // SQLによる表示データ格納
end;

procedure TForm1.DispUpdate;
var
    str_hoge: String;
begin
    // 部分絞込み文字列
    str_hoge := Trim(edtHoge.Text);

    with Query1 do
    begin
        Active := False;
        SQL.Clear;
        SQL.Add('Select * from SomeTable');
        if str_hoge <> '' then
            SQL.Add(' WHERE (KanaName LIKE ''%' + str_hoge + '%'')');
        Active := True;
    end;
end;


ん?  2006-04-13 03:24:11  No: 21006

「検索ボタン」があるんだから

procedure TForm1.Edi1Change(Sender: TObject);
begin
  検索ボタンClick(nil);
end;


ひろみ  2006-04-13 08:59:54  No: 21007

TQueryを使用してもリアルタイムの検索が出来るのであれば
検索ボタンは、必要ないです。
明日、テストしてみます。


は?  2006-04-13 17:27:33  No: 21008

検索ボタン.Visible := False;
何か問題でも?


igy  2006-04-13 18:06:43  No: 21009

ちなみに、
OnChangeイベントの場合、頻繁に検索を実行してしまうので、
OnKeyDownイベントで、Enterキーの時だけ検索を実行する手もあります。

procedure TForm1.edtHogeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
    if Key = VK_RETURN then    // Enterキーなら
        DispUpdate;    // SQLによる表示データ格納
end;


ひろみ  2006-04-14 02:13:39  No: 21010

ありがとうございました。

解決しました。


ひろみ  2006-04-14 02:15:01  No: 21011

ありがとうございました。

解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加