Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 00:03   #1
Vladimir Trufanov
Новичок
Джуниор
 
Регистрация: 02.01.2007
Сообщений: 2
По умолчанию Как поле FireBird.домен.Numeric(7,2) увидеть в DBGrid с добной частью?

Здравствуйте, эксперты!
Заполнил таблицу FireBird из таблицы Paradox. Одно из полей создано через домен Numeric(7,2). Из Delphi 7 значения этого поля в DBGrid показываются только целыми (мне нужно видеть дробную часть). При переключении на таблицу Paradox нормально - дробная часть присутствует!
Как добиться правильного представления?
Vladimir Trufanov вне форума Ответить с цитированием
Старый 07.01.2009, 01:47   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Например, так можно отображать поля в любом желаемом виде:
Код:
procedure TForm.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
...
if Column.Field.FieldName='Rashod' then
WriteText(DBGrid1.Canvas, Rect, 2, 2, FormatFloat('# ### ###,##',TableRashods.Value), Column.Alignment);
...
end;
З.Ы. Да, а сама универсальная процедурка вывода такова:
Код:
procedure TForm.WriteText(ACanvas: TCanvas; ARect: TRect; DX, DY: Integer;
  const Text: string; Alignment: TAlignment);
const
  AlignFlags : array [TAlignment] of Integer =
    ( DT_LEFT or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX,
      DT_RIGHT or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX,
      DT_CENTER or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX );
var
  B, R: TRect;
  I, Left: Integer;
begin
  I := ColorToRGB(ACanvas.Brush.Color);
  if GetNearestColor(ACanvas.Handle, I) = I then
  begin                    
   case Alignment of
      taLeftJustify:
        Left := ARect.Left + DX;
      taRightJustify:
        Left := ARect.Right - ACanvas.TextWidth(Text) - 3;
    else
    Left := ARect.Left + (ARect.Right - ARect.Left) shr 1
        - (ACanvas.TextWidth(Text) shr 1);
    end;
    ExtTextOut(ACanvas.Handle, Left, ARect.Top + DY, ETO_OPAQUE or
      ETO_CLIPPED, @ARect, PChar(Text), Length(Text), nil);
end;
end;
Можете заодно раскрашивать:
Код:
Brush.Color:=clRed;
Font.Color:=clYellow;
FillRect(Rect);

Последний раз редактировалось mihali4; 07.01.2009 в 01:53.
mihali4 вне форума Ответить с цитированием
Старый 07.01.2009, 10:00   #3
Vladimir Trufanov
Новичок
Джуниор
 
Регистрация: 02.01.2007
Сообщений: 2
По умолчанию

Закрываю тему. Слегка разобрался: я работал через BDE. Переключился на IBExpress, представление в DBGrid чисел Numeric(7,2) стало соответствующим. Всем спасибо!
Vladimir Trufanov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выпадающее поле в DBGrid photozaz БД в Delphi 4 26.10.2008 17:16
Как получить ID для новой записи с использованием триггеров?(Firebird) Paul Hindenburg БД в Delphi 20 01.06.2008 16:39
Задачи помогите увидеть ошибку! BBagi Помощь студентам 6 27.12.2007 18:43