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

Вниз

Разное форматирование в одной колонке   Найти похожие ветки 

 
Tlotr   (2002-11-28 15:23) [0]

Здравствуйте.
Вопрост такой: Есть два типа товаров, один измеряется в double числах (тонны), другой в целых (штуки). Можно ли как-то выпендриться, чтобы в DBGride (я пользуюсь EhLib) отображать эти данные в одной и той же колонке (идеально - с разным DisplayFormat: "##0 штук" и "###,##0.000 тонн" соответственно. )

Очень нежелательно делать две колонки, ведь одна из них всегда окажется пустой, а так как данные в гриде еще и редактируются (вводятся), то и рисованием не помочь. Нутром чую, что копать надо в OnCalcFields, только вот если я изменяю DisplayFormat, то он меняется для всей колонки. А как бы сделать DisplayFormat для конкретной строки ?

Заранее благодарен, Игорь.


 
Prooksius ©   (2002-11-28 15:29) [1]

В калькулируемом поле (типа string) форматируешь строчку (из числа)


 
Jeer ©   (2002-11-28 15:29) [2]

TField.OnGetText


 
mike-d ©   (2002-11-28 21:14) [3]

Ты же как-то различаешь, где штуки, а где тонны?
Добавь колонку "единица измерения".


 
Tlotr   (2002-11-29 10:07) [4]

2 mike-d:
На данном этапе так и сделал, но вообще-то,
Дело в том, что штуки должны редактироваться целыми числами, не отображая дробных нулей, а тонны - три знака после запятой.

2 Prooksius, Jeer:
Вы, видимо, имели ввиду одно и то же ? Tnx, попробую...

Спасибо.


 
ЮЮ ©   (2002-11-29 10:23) [5]

Если это два разных столбца в физической таблице, то непосредственно в DBGride ты этого не сделаешь, т.к. стобец грида непосредственно связан с одним столбцом DataSeta.
Правильнее иметь одно целочисленное поле в таблице, а в гриде отображать его по разному. Но тогда и хранить надо будет не тонны, а килограммы


 
Tlotr   (2002-11-29 14:39) [6]

2 ЮЮ: Интересная мысль... :) Значит, до 65 тонн ? ;)

Кстати, а calculated-поля я так понимаю, редактировать через грид как data нельзя, да ? %(


 
ЮЮ ©   (2002-11-30 08:37) [7]

>Значит, до 65 тонн ? ;)
Нет, до 2147483,647 :-) Зато точно будешь знать, что если ввел
0,29 то и храниться и суммироваться будет 290, а не 0,289999999765 :-)

Так значит это всё-таки два разных поля в одной таблице, а реально используется одно? Не очень интересная мысль :-)))


 
Tlotr   (2002-12-01 04:43) [8]

2 ЮЮ
два разных поля в одной таблице, а реально используется одно?
Подловил.... Не совсем. :)
Скажем так, это для весовых используется одно. А для штучных известен их табличный вес (в зависимости от формата) и вес заказа калькулируется от него.

Масса весового товара = введенному значению.
Масса штучного товара = введенному значению * табличную массу одной штуки (в зависимости от формата).

Т.о., хотя и есть некоторая избыточность, но она позволяет не джойнить несколько дополнительных таблиц при расчетах.


 
maratFromTomsk   (2002-12-02 12:34) [9]

может быть в таблицу добавить поле типа DisplayName,
а в триггере его обрабатывать.
Редактирование данных, на мой взгляд, лучше вовсе делать в форме.
В этой форме можно показывать оба поля,
и в зависимости от типа разрешать редактировать требуемое поле.

можно еще поиграться форматом для поля
такие вещи я делал на фоксе
для каждого типа данных свой формат ...
в этом случае поле данных д.б. строкой

кроме этого для каждого типа данных можно
сделать валидацию данных,
при помещении данных в табицк обновлять требуемые поля
и т.п.

В своем проекте мы поступили так:
сделали класс - так называемые редакторы свойств
(наподобие Delphi PropEditor)
которые весь этот функционал обеспечивали.
Для каждого типа данных свой наследник от PropEditor

Ну и свой набор контролов,
для редактирования табличных данных используем наследник
от DrawGrid,
для паспорта свой контрол,
для адреса еще один,
для элемента справочника,
для документа
ну и т.д.

Это кстати удобно еще в том смысле что формы мало зависят от того как лежат данные
потом как мы не используем DataSet и их контролы
есть тут и плюсы и минусы




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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
1-61684
qwertyu123
2002-12-08 21:35
2002.12.19
resource


6-61733
pavor
2002-10-21 07:39
2002.12.19
Проблемы с написанием Web сервера...


1-61703
Tundra
2002-12-09 06:52
2002.12.19
Как убрать ScrollBar в ListBox-е


8-61712
Sniffer
2002-09-04 17:21
2002.12.19
OpenGL и перспектива


14-61813
sen
2002-11-29 08:24
2002.12.19
Авторский след в программе