Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 15:28   #1
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию проверка фокуса поля в dbgrid

Здравствуйте. Пишу БД на делфи, БД access.
Существуют поля dbgrid1.fields[1] и dbgrid.fields[2] в которые нужно вводить только цифры, как сделать проверку на ввод?
Пытался вот так, но не могу найти способ проверить что именно эти поля в фокусе.

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if DBGrid1.Fields[1].FocusControl then
if not (Key in ['0', '1'..'9']) then
Key:= #0;
end;
wowsel вне форума Ответить с цитированием
Старый 21.09.2011, 15:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте с DBGrid.SelectedField
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.09.2011, 15:35   #3
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию

Спасибо всё получилось. Вот рабочий код:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (DBGrid1.SelectedField.Name = 'number_gaz') or
(DBGrid1.SelectedField.Name = 'number_str') then
if not(Key in ['0', '1' .. '9']) then
Key := #0;
end;
wowsel вне форума Ответить с цитированием
Старый 21.09.2011, 15:36   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не забудьте SelectedField может и nil быть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.09.2011, 15:42   #5
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не забудьте SelectedField может и nil быть
В такой случае вызов DBGrid1KeyPress врятли возможен, ведь он считается
когда dbgrid в фокусе и нажата клавиша, а если dbgrid в фокусе то выделено какое - то поле, иначе фокус передать ему не через что в runtime режиме.
wowsel вне форума Ответить с цитированием
Старый 21.09.2011, 16:24   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как думаете, что вернет SelectedField, если выбрана ячейка из колонки без фиелда, используемая, например, для прорисовки смайликов в строках грида?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.09.2011, 17:04   #7
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Как думаете, что вернет SelectedField, если выбрана ячейка из колонки без фиелда, используемая, например, для прорисовки смайликов в строках грида?
nil =) У меня к счастью таких нет, поэтому в моём проекте проверка на nil не существенна
wowsel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка поля на надежность Alex Jordan БД в Delphi 3 14.06.2011 23:13
Поля в DBGrid Stranger333 БД в Delphi 4 19.02.2011 00:55
Проверка поля (JS)/(html) Delphinchik JavaScript, Ajax 2 06.10.2010 21:49
сохранение изменений в DBGrid/DBGridEh, при изменении фокуса ячейки dalien БД в Delphi 6 30.07.2009 15:36
поля в DBgrid Mihailhome БД в Delphi 4 19.05.2009 11:24