Использую procedure TCalc.SetAutoKerning(const Value:boolean); begin Cell.CharAutoKer...

Автор ForumOOo (бот), 31 января 2019, 09:23

0 Пользователи и 1 гость просматривают эту тему.

ForumOOo (бот)

Компонент: Calc
Версия продукта: 4.x
Сборка: Copyright © 2017 The Apache Software Foundation.
ОС: windows xp

Использую
procedure TCalc.SetAutoKerning(const Value:boolean);
begin
  Cell.CharAutoKerning:=Value;supported
 // DoChange;
end;
для изменения интервала между символами, CharHeight - изменяет размер без проблем, а на CharKerning и CharAutoKerning ошибка Method 'CharAutoKerning' not supported by automation object.

--
Подпись: LunNata
Эл. почта: Nataly@spetm.com.ua

kompilainenn

Вопрос в чем? Ну и сам файл с макросом покажите
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

LunNata

Добрый день! Я загружаю данные в Calc через Delphi и мне нужно изменить междустрочный интервал и интервал между символами. Изменить размер, цвет шрифта получилось без проблем. А по CharAutoKerning ошибка "Method 'CharAutoKerning' not supported by automation object"

mikekaganski

#3
И всё-таки - в чём вопрос? То, что Вы написали - это рассказ о том, что Вы видите. Причём документация по сервису CharacterProperties вполне однозначно говорит, что свойство CharAutoKerning - опциональное. Поэтому надо проверять его доступность либо обрабатывать исключения. И объект, которому Вы хотите назначить значение свойства, не поддерживает его.

А если Вы хотите, чтобы он вдруг заподдерживал - это нужно вносить улучшения в программу. Я думаю, ребята в AOO будут рады Вашему вкладу; да и мы в ЛО тоже всегда рады помочь новичкам начать вносить исправления и улучшения.

P.S. Кстати, интересно: а в ЛО оно не заработает? Есть у нас коммит от 2013, где это свойство добавляется в Calc...

P.P.S. Нет, не заработает :)
С уважением,
Михаил Каганский

LunNata

И в пункте меню Формат нет интервала, и по правой кнопке мыши он не появляется, междустрочный интервал в Calc нельзя изменить, только во Writer .

Rafik

Рекомендую поставить на опен/либре офис расширение MRI - UNO object inspection tool. В нём можно смотреть какие свойства и методы поддерживает тот или иной объект.
Кстати, для ячейки MRI не показывает CharAutoKerning ни в методах, ни в свойствах.

LunNata

Есть CharKerning, мне и он подходит, а если нет междустрочного интервала, то и смысла в загрузке в OpenOffice Calc нет, все равно согласно стандартам не выгрузить. Спасибо, что ответили.

JohnSUN

Цитата: LunNata от 31 января 2019, 10:42
загружаю данные в Calc через Delphi и мне нужно изменить междустрочный интервал и интервал между символами
И вот тут "Внимание, вопрос!" Изменить с чего на что? А если сразу задать такой, чтобы не менять?
Другими словами, если гора не идёт к Магомету, то выгружать только данные, а всё форматирование сделать заранее и сохранить в файлах-шаблонах. И код станет проще, и результат красивее...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Rafik

Цитата: JohnSUN от 31 января 2019, 18:56...всё форматирование сделать заранее и сохранить в файлах-шаблонах. И код станет проще, и результат красивее...
Этот способ самый надёжный и сильно упрощающий код.

Если в отчёте количество строк тысячи и десятки тысяч, то составление отчёта может быть несколько длительным.
В такой ситуации можно из "шаблона " извлечь content.xml, пошаманить с ним и снова упаковать. При таком подходе отчёт будет делаться намного шустрее. Здесь, для составления отчёта, отпадает нужность калька на стадии его генерации. Если делфи хорошо дружит с xml, то внесение записей в контент можно организовать кодом, который будет делать необходимые изменения в content. Это усложнит код и придётся руками "распарсить" этот самый контент, чтобы понять куда, в каком виде и что вставлять.
Если не дружит с xml, то можно будет сделать шаблоны для сборки контента. Здесь есть большой недостаток - при изменении шаблона отчёта придётся переделывать шаблоны для сборки content.xml.