Delphi XE4 Firemonkey Grid Control — индивидуальное оформление ячеек

Мы только что обновились с Delphi 2010 до XE4 и впервые используем FireMonkey, поэтому немного блуждаем в темноте, пытаясь понять, как все это работает.

В соответствии с запросом некоторое время назад я пытаюсь заставить отдельные ячейки в компоненте TGrid отображаться по-разному в зависимости от некоторого правила. Я проработал полезный код, опубликованный Майком Саттоном:

Управление сеткой Firemonkey - Стилизация ячейки на основе значения (через вызов функции OnGetValue)

Мне пришлось внести несколько изменений, чтобы скомпилировать его в XE4; все выглядит нормально при запуске кода, за исключением того, что:

  1. FontFill не распознается, поэтому пока отключил его.
  2. Стиль шрифта вообще не меняется, он отображается как стиль по умолчанию, несмотря ни на что.

Соответствующий код (остальное в значительной степени соответствует приведенной выше ссылке):

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 установлены правильно, поэтому проблема не в этом.

Любая помощь в этом будет действительно оценена. Заранее извиняюсь за что-то глупое, что я мог пропустить.


person Alex    schedule 10.05.2013    source источник
comment
Отличный вопрос, я хотел бы знать это сам.   -  person Warren P    schedule 10.05.2013
comment
Единственная потенциально полезная информация, которую я пока нашел, находится здесь: monkeystyler. com/blog/entry/ Однако я понятия не имею, относится ли это к моему запросу или нет, так как я недостаточно хорошо понимаю код стиля. Исходный код, упомянутый в моем запросе, кажется, хорошо работает с людьми, которые пробовали его, когда он был опубликован; Я не уверен, что это изменение XE3/XE4 заставляет его не работать.   -  person Alex    schedule 10.05.2013


Ответы (1)


Эта статья была в значительной степени заменена некоторыми материалами на моем сайте руководства по FireMonkey, http://monkeystyler.com/guide/Category%3aGrids

Начиная с XE3, если вы хотите изменить материал, вам нужно удалить соответствующий элемент из свойства StyledSettings,

StyledSettings := StyledSettings - [TStyledSetting.ssStyle, TStyledSetting.ssFontColor]

и Т. Д.

Чтобы изменить цвет шрифта, используйте свойство FontColor.

person Mike Sutton    schedule 11.05.2013
comment
Спасибо, Майк, теперь у меня все работает, отлично. Должен признаться, что для меня было не очевидно, куда вставить этот код (я уверен, что успею!); после проб и ошибок я бросил его в TFinancialCell.ApplyStyling, и тогда это сработало, так что я предполагаю, что это правильно? - person Alex; 11.05.2013
comment
Если вы используете пользовательский класс ячеек, вставьте его в конструктор, так как его нужно запустить только один раз. Посмотрите пример по ссылке, которую я дал. - person Mike Sutton; 12.05.2013