![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в DBGrid [D6, Win2k]
Explorer © (2002-07-01 12:13:00)Мастера!
Подскажите как лучше осуществить поиск данных в DBGride?
Или ссылочку на примерчик?
Дядя Будда (2002-07-01 14:10:00) [1]TMyDBGrid = class(TRxDBGrid)
private
fSearchBuffer: string;
fOnSearch: TSearchEvent;
fSearchTimer: TTimer;
procedure WMButtonClick(var Message: TMessage); message WM_CHAR;
procedure OnSearchTimer(aSender: TObject);
procedure SetSearchBuffer(aValue: string);
published
property SearchBuffer: string read fSearchBuffer write SetSearchBuffer;
end;
procedure TMyDBGrid.WMButtonClick(var Message: TMessage);
begin
inherited;
with Message do
if wParam >= 32 then
begin
SearchBuffer:= SearchBuffer + Chr(wParam);
DataSource.DataSet.Locate(SelectedField.FieldName, SearchBuffer,
[loCaseInsensitive, loPartialKey]);
fSearchTimer.Enabled:= false;
fSearchTimer.Enabled:= true;
end;
end;
procedure TMyDBGrid.OnSearchTimer(aSender: TObject);
begin
SearchBuffer:= "";
fSearchTimer.Enabled:= false;
end;
procedure TMyRxDBGrid.SetSearchBuffer(aValue: string);
begin
fSearchBuffer:= aValue;
if Assigned(fOnSearch) then
fOnSearch(Self, aValue);
if aValue <> "" then
fSearchTimer.Enabled:= true;
end;
Anatoly Podgoretsky (2002-07-01 12:50:00) [2]Если по текущему индексному полю, то очень быстро FindKey
Skier (2002-07-01 12:44:00) [3]>Explorer
Можно через Locate.
Игорь Шевченко (2002-07-01 12:40:00) [4]Очевидно, Locate ?
Кстати, рекомендую TDbGridEh из EhLib (взять можно на www.torry.net), там реализован "поиск в гриде". Компонент бесплатный для Ex-USSR
Explorer (2002-07-01 12:35:00) [5]Да!
А как это реализовать?
Skier (2002-07-01 12:17:00) [6]>Explorer
Так, наверное, надо искать не в DBGride, а в
DataSource.DataSet, к которому он подключён ? Или нет ??