Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.05.2013, 21:07
Alexx_Pol Alexx_Pol вне форума
Прохожий
 
Регистрация: 14.05.2013
Сообщения: 9
Версия Delphi: Delphi 6
Репутация: 10
По умолчанию Подскажите свойство DBGrid

Доброго времени суток!
Ситуация состоит вот в чем: при редактировании ячейки DBGrid'a необходимо отслеживать, чтобы пользователь не ввел более трех символов после запятой. Создал обработчик для действия OnKeyPress. Обработчик работает, но он срабатывает только при сохранении, когда уже введены больше 3х знаков - то есть не оперативно, не при вводе 4го знака. я считываю вводимый текст при помощи DbGrid.SelectedField.Text, но этот метод мне кажется считывает сохраненное в базе значение, а не вводимый текст. Перечитал документацию, но так и не нашел, каким методом считывается текущее значение в редактируемой ячейке. (Пробовал также методы CurValue и NewValue - та же проблема.) Может, такой возможности в принципе нет и ее нужно программировать? Буду благодарен за любой ответ/совет/ИМХО.
Ответить с цитированием
  #2  
Старый 15.05.2013, 09:12
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так а сразу точность полю задать?
ну или до InplaceEditor достучаться и ему обработчик OnKey подменить.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 15.05.2013, 17:50
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

а почему бы в БД заранее не задать формать поля, а пользователь пусть вводит хоть 100500 знаков после запятой. База сама отбросит лишнее
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #4  
Старый 15.05.2013, 20:07
Alexx_Pol Alexx_Pol вне форума
Прохожий
 
Регистрация: 14.05.2013
Сообщения: 9
Версия Delphi: Delphi 6
Репутация: 10
По умолчанию

точность я пытался задать при помощи свойства TEditMask, но мне не нравится, что там по умолчанию светится десятичный знак. как еще можно ее задать? сейчас почитаю про InplaceEditor.
Ответить с цитированием
  #5  
Старый 15.05.2013, 23:08
Alexx_Pol Alexx_Pol вне форума
Прохожий
 
Регистрация: 14.05.2013
Сообщения: 9
Версия Delphi: Delphi 6
Репутация: 10
По умолчанию

Пока пытаюсь реализовать свою задачу при помощи InplaceEditor. Не могу понять одну вещь: объекту класса TStringGrid этот метод недоступен, а если создать тип на основании TStringGrid :
Код:
type
  TDBGridAccess = class (TStringGrid);
...
var
  DBGridAccess1: TDBGridAccess;
...
то объекту DBGridAccess1 класса TDBGridAccess этот метод будет доступен. как так может быть? Ведь наследнику доступны методы предка.
Ответить с цитированием
  #6  
Старый 15.05.2013, 23:34
Alexx_Pol Alexx_Pol вне форума
Прохожий
 
Регистрация: 14.05.2013
Сообщения: 9
Версия Delphi: Delphi 6
Репутация: 10
По умолчанию

NumLock, как можно "достучаться" до InplaceEditor?
Ответить с цитированием
  #7  
Старый 16.05.2013, 17:55
Alexx_Pol Alexx_Pol вне форума
Прохожий
 
Регистрация: 14.05.2013
Сообщения: 9
Версия Delphi: Delphi 6
Репутация: 10
По умолчанию

Задачу решил. Но обработчик сделал не для моего DBGrid'a, а для объекта TOraQuery, данные которого отображаются/редактируются через мой DBGrid (полностью цепочка выглядит так: TOraQuery -> TDataSource -> TDBGrid). Обработчик повесил на действие BeforePost, введенный, но еще не сохраненный текст получил вот так: Query.FieldByName('field_name').Value, где Query: TOraQuery, а field_name - имя редактируемого поля. То есть отреагировать и выдать сообщение сразу при вводе 4го знака так и не получилось, но в принципе задание решено. Всем большое спасибо за помощь!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter