Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.032 c
1-41702
A-DiL
2003-11-03 22:26
2003.11.13
Решение системы линейных уравнений


8-41759
pasha676
2003-07-08 15:57
2003.11.13
Front с прозрачным фоном на Canvas-e


3-40831
Deedlit
2003-10-22 07:12
2003.11.13
TOleException при работе с БД MS Access


1-41229
LG
2003-11-01 08:31
2003.11.13
Как Progressbar в ListView


1-41369
ddenis
2003-10-30 14:25
2003.11.13
окна в потоках %-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский