|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Подскажите свойство DBGrid
Доброго времени суток!
Ситуация состоит вот в чем: при редактировании ячейки DBGrid'a необходимо отслеживать, чтобы пользователь не ввел более трех символов после запятой. Создал обработчик для действия OnKeyPress. Обработчик работает, но он срабатывает только при сохранении, когда уже введены больше 3х знаков - то есть не оперативно, не при вводе 4го знака. я считываю вводимый текст при помощи DbGrid.SelectedField.Text, но этот метод мне кажется считывает сохраненное в базе значение, а не вводимый текст. Перечитал документацию, но так и не нашел, каким методом считывается текущее значение в редактируемой ячейке. (Пробовал также методы CurValue и NewValue - та же проблема.) Может, такой возможности в принципе нет и ее нужно программировать? Буду благодарен за любой ответ/совет/ИМХО. |
#2
|
||||
|
||||
так а сразу точность полю задать?
ну или до InplaceEditor достучаться и ему обработчик OnKey подменить. Пишу программы за еду. __________________ |
#3
|
||||
|
||||
а почему бы в БД заранее не задать формать поля, а пользователь пусть вводит хоть 100500 знаков после запятой. База сама отбросит лишнее
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#4
|
|||
|
|||
точность я пытался задать при помощи свойства TEditMask, но мне не нравится, что там по умолчанию светится десятичный знак. как еще можно ее задать? сейчас почитаю про InplaceEditor.
|
#5
|
|||
|
|||
Пока пытаюсь реализовать свою задачу при помощи InplaceEditor. Не могу понять одну вещь: объекту класса TStringGrid этот метод недоступен, а если создать тип на основании TStringGrid :
Код:
type TDBGridAccess = class (TStringGrid); ... var DBGridAccess1: TDBGridAccess; ... |
#6
|
|||
|
|||
NumLock, как можно "достучаться" до InplaceEditor?
|
#7
|
|||
|
|||
Задачу решил. Но обработчик сделал не для моего DBGrid'a, а для объекта TOraQuery, данные которого отображаются/редактируются через мой DBGrid (полностью цепочка выглядит так: TOraQuery -> TDataSource -> TDBGrid). Обработчик повесил на действие BeforePost, введенный, но еще не сохраненный текст получил вот так: Query.FieldByName('field_name').Value, где Query: TOraQuery, а field_name - имя редактируемого поля. То есть отреагировать и выдать сообщение сразу при вводе 4го знака так и не получилось, но в принципе задание решено. Всем большое спасибо за помощь!
|