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

Вниз

Ввод данных в dbGrid посредством onSetText   Найти похожие ветки 

 
Евгений Р.   (2006-05-16 16:33) [0]

Обрабатываю данные, введенные в DbGrid посредством функции onSetText для соответствующего целочисленного (tSmallIntField) поля таблицы. При вводе необходимо использовать буквы. Однако dbGrid не реагирует на нажатие буквенных клавиш.


 
Плохиш ©   (2006-05-16 17:18) [1]


> Обрабатываю данные, введенные в DbGrid посредством функции
> onSetText для соответствующего целочисленного (tSmallIntField)
> поля таблицы. При вводе необходимо использовать буквы.

Сам-то понял что сказал? Зачем кто-то будет реагировать на буквы, если всем известно, что буквы там не допустимы?


 
Виталий Панасенко   (2006-05-17 12:25) [2]


> Плохиш ©   (16.05.06 17:18) [1]
>
> > Обрабатываю данные, введенные в DbGrid посредством функции
>
> > onSetText для соответствующего целочисленного (tSmallIntField)
>
> > поля таблицы. При вводе необходимо использовать буквы.
>
>
> Сам-то понял что сказал? Зачем кто-то будет реагировать
> на буквы, если всем известно, что буквы там не допустимы?
>

Наверное, человек вводит данные в 16-й ситеме, самой понятной для коенчного пользователя. Или на их планете на руках - 16 пальцев..:-)


 
jack128 ©   (2006-05-17 19:42) [3]

Плохиш ©   (16.05.06 17:18) [1]
Сам-то понял что сказал? Зачем кто-то будет реагировать на буквы, если всем известно, что буквы там не допустимы?

а что в этом такого?  

Евгений Р.   (16.05.06 16:33)
гм.  Я что то не вижу нормальных способов решения.  А если не нормально, то можно попробовать Query + UpdateObject + в Query в запросе писать select cast(IntField as char(50)) from table"  ну или там приведение типов  в LocalSQL делается..


 
Евгений Р.   (2006-05-19 01:27) [4]

Ну пальцев на нашей планете не 16, а 12, как и у всех нормальных людей, хотя смотря что считать пальцем...

Для чего это нужно:
Существовал документ, в которои среди прочего в dbGrid вводился код группы товара. Сейчас назрела необходимость для отдельных групп уточнять товар (по усмотрению оператора).  Поэтому там, где необходимо уточнения оператор через дробь после группы товара печатает его код. Не хочу загромождать форму дополнительной колонкой, тем более не известно, приживется ли. Коды группы и товара хранятся в разных полях.

Идею с UpdateObject не понял, наверное чегото не знаю. Поясните.

Выход нашел другой: в таблице есть служебное текстовое поле, для хранения идентификатора. Его я отразил в dbGrid и переопределил ф-ции onGetText и onSetText. Поэтому Grid "думает", что работаем с текстовым поле и не вводит ограничений, а я показываю и корректирую информацию из двух целочисленных полей.

Но мне кажется, что должен быть способ поизящнее. Ведь настройка фильтрации при вводе происходит на уровне dbGrid, в зависимости от типа поля.

К статьи, может можно заставить грид заполнять вычисляемое поля, вызывая ф-цию onSetText?


 
ЮЮ ©   (2006-05-19 10:58) [5]

Можно, только придется наследоваться, чтобы перекрыть "тупые методы" грида, относящие fkCalculated field к "неполноценным", как например

procedure TCustomDBGrid.SetColumnAttributes;
var
 I: Integer;
begin
 for I := 0 to FColumns.Count-1 do
 with FColumns[I] do
 begin
   TabStops[I + FIndicatorOffset] := Showing and not ReadOnly and DataLink.Active and
     Assigned(Field) and not (Field.FieldKind = fkCalculated) and not ReadOnlyField(Field);
   ColWidths[I + FIndicatorOffset] := Width;
 end;
 if (dgIndicator in Options) then
   ColWidths[0] := IndicatorWidth;
end;


в результате чего по Tab-у мы проскакиваем мимо вычислимого поля. Наверняка есть подовная засада и при создании редактора поля.


 
Евгений Р.   (2006-05-19 13:54) [6]

Если я правильно понял, то Вы согласны, что фильтр редактора ввода должен быть нам подконтролен.

А каким образом им управлять???????



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
2-1147426161
eclipse
2006-05-12 13:29
2006.06.04
Множество таблиц... их связь с одной.... или другие варианты


2-1147792001
AlexanderMS
2006-05-16 19:06
2006.06.04
С процедурами - лучше?


4-1141962670
hawkins
2006-03-10 06:51
2006.06.04
Как подгрузить свою dll в чужой процесс(ы)?


3-1144642973
Старик
2006-04-10 08:22
2006.06.04
Выбор решения по спискам (DBCombobox vs LookUpCombobox)


15-1146768050
bogdan
2006-05-04 22:40
2006.06.04
Представить суму всемя способами