Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизВвод данных в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c