После перепутались с этим еще немного я нашел решение, которое отвечает мою проблему
Символ деньги, полученные с помощью OnGetText событие поля набора данных, чтобы вернуть отформатированную строку:
procedure FDTableMyCurrFieldGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
DisplayText := True;
Text := FloatToStrF(Sender.AsCurrency, ffCurrency, 18, 2);
end;
Я мог бы сделать это в событии Grid OnPainting, но при этом он форматирует поле для всех связанных элементов управления, а также для сетки. Я использую «Sender», а не «FDTableMyCurrField», чтобы ссылаться на поле, чтобы я мог указать на это событие OnGetText всех других полей валюты в моих наборах данных.
Остальная часть форматирования выполняется в сетке. Ячейки сетки не отображаются явно, но вы можете обращаться к ним следующим образом: «TTextCell (Grid1.Columns [I] .Children [J])». Используйте сетку OnPainting событие для форматирования ячеек непосредственно перед их окраской.
Правое выравнивание достигается установкой выравнивания ячейки в сетке.
Цвет текста ячейки задается с помощью стилей. Нам нужно создать «textcellnegativestyle» в нашем приложении StyleBook. Это будет идентично стандарту «textcellstyle», за исключением того, что цвет кисти «переднего плана» будет красным. На настольном приложении вы можете сбросить TEdit в своем приложении, щелкнуть его правой кнопкой мыши и выбрать «Редактировать пользовательский стиль ...», а затем назвать пользовательский стиль «textcellnegativestyle» на основе «editstyle», но просто измените цвет кисти переднего плана на красный.
Mine - мобильное приложение, в котором «Редактировать пользовательский стиль» не отображается во всплывающем меню редактора форм Delphi для this reason. Чтобы добавить собственный стиль, вы должны отредактировать (копию) файла .style с помощью Notepad или текстового редактора.
- Копировать/вставить «textcellstyle» объект
- редактировать имя вставленного объекта «textcellnegativestyle»
- изменить «переднего плана» Кисть цвет на красный.
- Загрузите отредактированный файл в свое приложение StyleBook.
Вот как это выглядит в моем .style файла:
object TLayout
StyleName = 'textcellnegativestyle'
DesignVisible = False
Height = 50.000000000000000000
Width = 50.000000000000000000
object TLayout
StyleName = 'content'
Align = alContents
Locked = True
Height = 42.000000000000000000
Margins.Left = 4.000000000000000000
Margins.Top = 4.000000000000000000
Margins.Right = 4.000000000000000000
Margins.Bottom = 4.000000000000000000
Width = 42.000000000000000000
end
object TBrushObject
StyleName = 'foreground'
Brush.Color = claRed
end
object TBrushObject
StyleName = 'selection'
Brush.Color = x7F72B6E6
end
object TFontObject
StyleName = 'font'
end
end
Я использую событие Сетки OnPainting, чтобы установить выравнивание и стиль ячеек.вот мое рабочее решение:
procedure TFormMain.Grid1Painting(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
var
I, J: Integer;
T: TTextCell;
begin
// my Column 0 is text, all other columns are money in this example
for I := 1 to Grid1.ColumnCount - 1 do
for J := 0 to Grid1.Columns[I].ChildrenCount- 1 do
begin
T := TTextCell(Grid1.Columns[I].Children[J]);
// set the Cell text alignment to right align
T.TextAlign := TTextAlign.taTrailing;
// test the Cell string for a negative value
if (T.Text[1] = '-') then
begin
// remove the leading minus sign
T.Text := Copy(T.Text, 2, Length(T.Text) - 1);
// set the font to red using the style
T.StyleLookup := 'textcellnegativestyle';
end
else T.StyleLookup := 'textcellstyle';
end;
end;
Если это решение, вы должны оставить вопрос в качестве вопроса, а затем добавить ответ. o.o '' – EMBarbosa