LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: Riko on October 25, 2023, 11:52:00 am
-
Добрый день.
При передачи кастомной модели в качестве источника данных, возможно
ли из скриптов получить значения произвольных ролей элемента (цвет фона, цвет текста и т.п.)?
C увежением, Р
-
Ты же из модели хочешь данные доставать, не из самой таблицы.
Значит просто отдать БД в репорт не прокатит.
Модель знакома только твоему коду внутри программы.
Соответственно, LR должен обращаться к коду за порцией данных.
Для этого есть ICallbackDatasource, загляни в docs/UserManualRu.pdf, примерно на страницу 11, Внешние источники данных.
Другой вариант - построить несколько "плоских" моделей и отдать их все в твой репорт.
Третий вариант - скриптами пролублировать твои правила, которыми ты определяешь роли модели.
$S {
if ($D{table.field}==..)
...;
}
-
Здравствуйте.
Я рассматривал эти варианты - эти подходы требуют доп. работы + код программы становится сильно путанным.
В случаях когда модель для каждого элемента имеет набор кастомных ролей, которые можно использовать для форматирования отображаемых данных - думаю лучше иметь возможность получать их значения.
Добавил в LR функцию getFieldByRowIndexEx("FieldName", "row", "role") которая позволяет получать значения произвольных ролей каждого элемента: стандратные роли Qt (Display, Background ...) + кастомные роли модели. Выгрузил в отдельную ветку
PS: так же нет функций для получения значений заголовков моделей, нет функции для получения количества столбцов, строк.
-
это открытый проект :o)
напиши и шлефани пул-реквест или просто Алексу поправленные исходники. Будет у него время, посмотрит.
-
Уже...
Перед внесением доработок думал пововетоваться с сообществом - возможно не заметил существующей возможности.
-
Riko, Приветствую! Я там на github написал комментарий к pull request продублирую его здесь
Приветствую !
Очень ценю Ваше желание внести свой вклад в развитие проекта.
У меня большая просьба, если Вы хотите, чтобы Ваш pull request был принят, верните форматирование кода к изначальному виду. Во-первых, форматирование кода для разработчика дело интимное :), а во-вторых, так проще смотреть какие изменения были реально сделаны. Ну и желательно это объединить в один commit.