Сохранить иконку на кнопке в диалоге

Автор eeigor, 12 марта 2022, 16:37

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

eeigor

Пытаюсь загрузить с диска и сохранить иконку на кнопке диалога. Проблема в том, что при открытии диалога иконка не отображается. Есть какие-то особенности?
Кстати, у @JohnSUN иконки тоже не отображаются (ссылка), хотя в соответствующем свойстве был прописан путь, и, стало быть, иконки были подгружены. Речь о реализации элемента управления типа RefEdit в Calc.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#1
На мой взгляд, баг, надеюсь, что автор темы о нем сообщит.  :)

1. В любом документе создаем диалог, добавляем в него графический элемент управления (ImageControl), в этот элемент управления добавляем изображение из любого файла.
2. Сохраняем документ, закрываем LO.
3. Открываем LO, открываем документ  - изображение пусто.

Если посмотреть в структуру сохраненного файла, то ссылка на отображение имеет вид типа:
<dlg:img dlg:id="ImageControl1" dlg:tab-index="0" dlg:left="52" dlg:top="27" dlg:width="74" dlg:height="31" dlg:src="Pictures/100000010000001800000018E6444D7B53297AD8.png"/>
но папки Pictures/... в структуре документа нет.

Win 10 LO 7.3.1.3
Владимир.

eeigor

#2
Да, так и есть, и путь тот же, и имя то же. Бред. Между прочим, давно уже... и никому не было дела.  :)
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Цитата: eeigor от 12 марта 2022, 18:27имя то же
Вероятно, потому, что я в примере загружал Вашу картинку Shrink.png.
Владимир.

kompilainenn

Цитата: eeigor от 12 марта 2022, 18:27и никому не было дела
да это же мелочи в функционале, который юзают единицы. У нас баги более серьезные висят годами, как например нерабочие DDE связи
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

eeigor

#5
Цитата: sokol92 от 12 марта 2022, 17:28На мой взгляд, баг, надеюсь, что автор темы о нем сообщит.
https://bugs.documentfoundation.org/show_bug.cgi?id=147944

@JohnSUN создал хороший код, но без иконки "Shrink" кнопки выглядят сиротливо, а решение - непрофессионально. Досадно.

Edit:
Когда искал дубликаты бага по базе, использовал слова: "icon", "graphics" - и ничего не нашёл, а надо было: "image", "picture".
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#6
Игорь, спасибо!

Такое впечатление, что при сохранении файла программа "забывает" о необходимости сохранить изображение из элемента управления диалога.

Если одно и то же изображение вставить в графический элемент управления диалога и непосредственно на лист документа Calc, то изображение, естественно, сохраняется в папке Pictures архива и отображается в диалоге (см. вложение). "Трюк" до исправления бага.  :)

Так же исправляется приведенный Вами пример от @JohnSUN.
Владимир.

eeigor

#7
Цитата: sokol92 от 13 марта 2022, 13:27сли одно и то же изображение вставить в графический элемент управления диалога и непосредственно на лист документа Calc...
Да, так работает. Только пример от @JohnSUN с RefEdit носит общий характер - для выбора диапазона неизвестно где и когда. В этом случае добавлять иконку на целевой лист не реально. Я планировал поместить диалог с RefEdit в библиотеку 'My Macros & Dialogs', точнее использовать этот механизм с диалогами, где необходимо предоставить выбор диапазона. Нужна кнопка с внедрённой иконкой. В Excel я бы просто скопировал уже готовую кнопку. А здесь?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

Теперь мои девчата с удовольствием натыкают котиков на кнопки, а то после исхода с Excel они очень страдали без такой возможности. Спасибо, sokol92
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

Цитата: eeigor от 13 марта 2022, 14:25В этом случае добавлять иконку на целевой лист не реально.
Возможны две ситуации (расширения мы пока не трогаем).

1. Диалог находится в документе. Этот случай мы рассмотрели - вставляем на (скрытый) лист документа все необходимые изображения.

2. Диалог находится в библиотеке приложения. Такой диалог имеет структуру .xdl файла. В нашем случае это будет выглядеть примерно так:

<dlg:window dlg:id="Dialog1" dlg:left="280" dlg:top="142" dlg:width="38" dlg:height="36" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:img dlg:id="ImageControl1" dlg:tab-index="0" dlg:left="9" dlg:top="6" dlg:width="19" dlg:height="15" dlg:src="file:///C:/Temp/Shrink.png"/>
</dlg:bulletinboard>
</dlg:window>


Нужно с самим собой договориться, где и как хранить изображения на локальном диске (или в сети).
Владимир.

sokol92

Владимир.

economist

#11
Недооценивать важность самовыражения в офисной автоматизации в большой конторе нельзя. Многих моих подопечных за год-два она довела от "0" - до котиков на кнопках, написания своих UDF в сетевых либах и самостоятельного изучения SQL. Уверен что значительной доле пользователей очень тяжело начать макросятничать без авторской "конфетки", и в случае офисных пакетов - она доступна "с места". Красоту трехэтажных суперформул оценить почти невозможно, а вот удачные коты на кнопках с макросами - "заходят" всем.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...