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

Вниз

Как для колонок DBGrid установить необходимую маску?   Найти похожие ветки 

 
Valery_N   (2002-09-23 17:40) [0]

Помогите начинающему!

Нужно для некоторых колонок Grid выставить маски,
например # ###.##, чтобы не отображались нулевые значения и т.д.
Никак не могу наити, где это дело можно изменить.


 
Kuusiniemi ©   (2002-09-23 17:54) [1]

или DBGrid.DataSource.DataSet.FieldByName("ИмяПоля").EditMask := "то, что Вам надо";

или DBGrid.Columns[i].Field.EditMask := "то, что Вам надо";


 
kaif ©   (2002-09-23 23:34) [2]

У классов, производных от TNumericField есть 2 свойства:
DisplayFormat и EditFormat. Первое отвечает за способ отображения когда потомок DataSet в режиме просмотра, а второе определяет вид в режиме редактирования.
Рекомендую:
1. Создать persistent поля у твоего DataSet (TTable или TQuery). Для этого нужно дважды щелкнуть на компоненте - появится редактор полей. Добавить в нем все поля в список (с помощью контекстного меню, вызываемого правой кнопкой мыши в редакторе полей)
2. Числовые поля выбрать в Object Inspector-е и присвоить свойствам
DisplayFormat := "### ### ### ##0.00"
EditFormat := "###########0.00"
(для того, чтобы при редактировании пробелы исчезали)
-----------------
Теперь любые DataAware контролы будут правильно форматировать твои числа (не только DBGrid, но и DBEdit, например)
-----------------
Свойствами DisplayFormat и EditFormat обладают также и поля типа TDateTimeField и схожие с ними. Советую в них тоже вписывать форматирующие строки, например:
DisplayFormat := "dd/mm/yyyy" или (01.09.2002)
DisplayFormat := "dd mmmm yyyy г." (01 сентября 2002 г.)
-----------------
N.B. Если свойству EditFormat не присвоено значение, то компоненты используют значение, присвоенное DisplayFormat (если таковое имеется).


 
BlackTiger   (2002-09-24 12:40) [3]

kaif - мне бы дал кто-нить такой ответ, когда я ходил по этим граблям. Правда вот все несколько усложняется (это меня и путало), если колонки не известны до открытия DataSet"а, например, когда запрос динамический. Тогда это все надо проделывать кодом сразу после "Query.Active := true;". Еще хохма в том, что это не всегда работает. Вот тогда надо делать так, как написано в хелпе: вручную назначать обработчик "TField.OnGetText" каждому полю, которое нужно форматировать.


 
kaif ©   (2002-09-24 13:07) [4]

2 BlackTiger (24.09.02 12:40)
Нужно владеть всеми способами.
Простейший - тот, что я описал. Можно его доработать для случая, если список полей заранее не известен:

with DataSet do
for i := 0 to Fields.Count - 1 do
if Fields[i] is TNumericField then
with Fields[i] as TNumericField do
begin
DisplayFormat := "### ### ### ##0.00";
EditFormat := "###########0.00";
end;

Для более хитрых ситуаций можно использовать событие OnGetText.
Например, если мы хотим, чтобы значения NULL отображались как-то по особенному (например <None>).


 
Johnmen ©   (2002-09-24 13:51) [5]

>kaif © (24.09.02 13:07)

Небольшая ремарка : DisplayFormat:="#,###0.00"; EditFormat:="#0.00";



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
7-56363
alexsum
2002-08-09 11:54
2002.10.17
Прог не дает перегрузить NT,XP


1-56212
Andy BitOff
2002-10-07 20:31
2002.10.17
Клавиатура


14-56293
Hooch
2002-09-23 15:10
2002.10.17
Delphi or Visual Basic


3-55943
alenka
2002-09-22 23:27
2002.10.17
Хорошая книга по БД


3-55954
Bi
2002-09-24 07:49
2002.10.17
Как с помощью ADO получить список всех объктов БД, SQL Server