Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Позиционирование в гриде   Найти похожие ветки 

 
Andrey V. ©   (2003-10-16 21:34) [0]

Пользователь жмет такую-то букву (грид рид онли используется исключительно для навигации),
и перескакивает на слово , начинающееся с нажатой буквы.
Сейчас сделано так :

procedure TForm.GridKeyPress(Sender: TObject; var Key: Char);
begin
if Ord(Key)=13 then (Sender as TDBGrid).onDblClick(nil);
if (Key in ["a".."z","A".."Z","а".."я","А".."Я"]) then begin
if NOT (Sender as TDBGrid).DataSource.DataSet.Locate("Name",Key,[loCaseInsensitive,loPartialKey]) then MessageBeep(MB_OK);
end;
end;

Как бы сделать так , чтобы можно было по более чем одной букве подбегать к нужному слову.
Типа нажал "Б" - перскочили на "БАТОН" , нажал "У" (похоже без таймера не обойтись) - пересекочил на "БУТЫЛКА"


 
Fay   (2003-10-16 21:45) [1]

QuantumGrid 8)


 
Andrey V. ©   (2003-10-16 22:23) [2]

А она с исходниками ?
Я имею ввиду , нельзя ли глянуть как у них это сделано ?


 
Arhelon   (2003-10-17 07:30) [3]

А чё слабо завасти переменную типа strig а потом s:=s+key ???
Ну ессно если Key подходит по условиям


 
roottim   (2003-10-17 08:12) [4]

http://www.ehlib.com


 
asp ©   (2003-10-17 09:25) [5]

Частичный поиск будет работать только со строковыми полями.
На тему "правильности" вводимого символа есть TField.IsValidChar.
Вводимую строку удобно отображать в Column.Title.Caption.
При смене позиции любым другим способом (мышь...) или при переходе не др. столбец Column.Title.Caption очень желательно вернуть в прежнее состояние.

ЗЫ: Доводилось уже писать такую штуку и удобнее всего оформить как компонент :)


 
AleksandrKu   (2003-10-17 10:33) [6]

Arhelon прав только переменную очищать надо либо по переходу на другую колонку либо по какойто клавише типа ЕSC а если убрать проверку символов то будет и другим символам работать


 
Vlad ©   (2003-10-17 10:43) [7]

Вопервых поле д.б. отсортировано для корректной работы.
Вот пример, который работает с символьными полями
Навигация по справочнику валют.
procedure TfmCurrency.grCurrencyKeyPress(Sender: TObject; var Key: Char);
begin
if not(grCurrency.SelectedField is TStringField) then Exit;
Timer.Enabled:=false;
KeyStack:=KeyStack + Key; // глобальная переменная
Timer.Enabled:=true;
qCurrency.Locate(grCurrency.SelectedField.FieldName, KeyStack, [loCaseInsensitive,loPartialKey]);
end;

procedure TfmCurrency.TimerExecute(Sender: TObject);
begin
KeyStack:="";
Timer.Enabled:=false;
end;

Значение таймера установлено 2 секунды


 
Andrey V. ©   (2003-10-17 11:09) [8]

Конечно , не плохо было бы KeyStack показывать тутже в Hinte ...
Но в общем , подходит, спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
1-41361
Тимохов
2003-10-30 14:39
2003.11.13
Вопрос про окошко с прогресс баром.


3-41091
Vick
2003-10-23 10:16
2003.11.13
TADODataSet.Sort := ....


3-40816
angel2000
2003-10-22 11:17
2003.11.13
ВЫделение строки в гриде


1-41296
WondeRu
2003-10-31 12:10
2003.11.13
aka Object Inspector


1-41531
афвуд
2003-10-28 11:01
2003.11.13
Проблема с методом Popup у PopupMenu