Delphi XE4 Firemonkey Grid Control - индивидуальная стилизация ячеек
Мы только что обновились с Delphi 2010 до XE4 и впервые использовали FireMonkey, поэтому немного спотыкались в темноте, пытаясь понять, как все это работает.
В соответствии с запросом некоторое время назад я пытаюсь получить отдельные ячейки в компоненте TGrid для отображения по-разному на основе некоторого правила. Я работал с полезным кодом, опубликованным Майком Саттоном:
Firemonkey Grid Control - стилизация ячейки на основе значения (с помощью вызова функции OnGetValue)
Мне пришлось внести несколько изменений, чтобы он компилировался в XE4; все выглядит нормально при запуске кода, за исключением того, что:
- FontFill не распознан, так что пока это скрыто.
- Стиль шрифта не меняется вообще, он отображается как стиль по умолчанию, несмотря ни на что.
Соответствующий код (остальное в значительной степени по ссылке выше):
Procedure TFinancialCell.ApplyStyle;
var
T: TFMXObject;
begin
inherited;
ApplyStyling;
end;
Procedure TFinancialCell.ApplyStyling;
begin
// If IsNegative then
// FontFill.Color:=claRed
// else
// FontFill.Color:=claBlack;
Font.Style:=[TFontStyle.fsItalic];
If IsImportant then
Font.Style:=[TFontStyle.fsBold]
else
Font.Style:=[];
If Assigned(Font.OnChanged) then
Font.OnChanged(Font);
Repaint;
end;
Флаги IsImportant устанавливаются правильно, поэтому проблем не возникает.
Любая помощь с этим была бы очень признательна. Заранее извиняюсь за что-то глупое, что я могу пропустить.
1 ответ
Эта статья была в значительной степени заменена некоторыми материалами на моем сайте руководства FireMonkey, http://monkeystyler.com/guide/Category%3AGrids
Начиная с XE3, если вы хотите изменить материал, вам нужно удалить соответствующий элемент из свойства StyledSettings,
StyledSettings := StyledSettings - [TStyledSetting.ssStyle, TStyledSetting.ssFontColor]
и т.п.
Чтобы изменить цвет шрифта, используйте свойство FontColor