質問があります。
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を使用すると検索ボタンを押す動作がはいるので...
何かよい方法がありましたらよろしくお願いいたします。
>TQueryを使用すると検索ボタンを押す動作がはいるので...
TEditのOnChangeイベントを使えば
検索ボタンを押す動作が不要では?
igyさんありがとうございます。
TQueryを使用してもリアルタイムの検索が出来るのでしょうか?
TEditのOnChangeでどのようにするとよろしいのでしょうか?
実際には、動かして試したわけではないのですが、
イメージ的には、以下のような感じです。
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;
「検索ボタン」があるんだから
procedure TForm1.Edi1Change(Sender: TObject);
begin
検索ボタンClick(nil);
end;
TQueryを使用してもリアルタイムの検索が出来るのであれば
検索ボタンは、必要ないです。
明日、テストしてみます。
検索ボタン.Visible := False;
何か問題でも?
ちなみに、
OnChangeイベントの場合、頻繁に検索を実行してしまうので、
OnKeyDownイベントで、Enterキーの時だけ検索を実行する手もあります。
procedure TForm1.edtHogeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then // Enterキーなら
DispUpdate; // SQLによる表示データ格納
end;
ありがとうございました。
解決しました。
ありがとうございました。
解決しました。
ツイート | ![]() |