Как заставить TProgressColumn работать при использовании с LiveBindings и наборами данных
Моя цель-иметь TGrid с несколькими столбцами, подключенными к TClientDataSet через LiveBindings. Один из столбцов имеет тип TProgressColumn.
Таблица отображает данные, но столбец индикатор выполнения не показывает ничего (т. е. 0% прогресса).
Столбец TProgressColumn связан с полем типа ftInteger. Значения в этом поле находятся в диапазоне от 0 до 100.
Я пробовал с ftSingle, но безуспешно. Я установил тип столбца, чтобы быть TProgressColumn через Свойство ColumnStyle, доступное в разделе TLinkGridToDataSourceBindSourceDb / Columns.
Странно то, что когда я использую TPrototypeBindSource для генерации значений - TProgressColumn работает, но только для значений ftUInteger. Он не работает для генераторов ftInteger.
Вот небольшая демонстрация (Delphi XE7):
Когда я ставлю точку останова в TProgressCell.DrawCell () и перейти через два условия для значения.Изординал и ценность.IsType пропускаются и ClampValue получает значение "Min", равное 0. Кажется, что-то не так со значением, переданным функции.
Есть ли что-то особенное при работе с TProgressColumn? Нужно ли использовать CustomFormat, CustomParse в TLinkGridToDataSourceColumn?
Это ошибка или я что-то пропустил?
Обновление: Благодаря "nompa" тайна была решена!
На самом деле "asInteger" - это хорошо известное свойство класса TField, т. е.:
someDataSet.fieldByName('myFieldName').asInteger
В Свойство CustomFormat вы можете получить доступ ко многим вещам, в том числе и к себе.свойства asInteger. Более подробная информация здесь: