Версия для печати темы (https://pro1c.org.ua/index.php?s=812939bd2bf17ec1fe53ad0a35cd2c5f&showtopic=14646)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Программное масштабирование элементов табличного документа

Автор: logist 04.10.13, 14:26

Необходимы какие-то идеи.
Есть некий табличный документ, который содержит картинку как фон (РисунокТабличногоДокумента расятнутый на видимую область) и элементы типа РисунокТабличногоДокумента наложенные на фон. Все это создается пользователем в поле Табличного документа в режиме редактирования. Необходимо в зависимости от разрешения монитора и размеров отображаемого поля табличного документа программно масштабировать элементы таким образом что бы они все были в видимой части. Табличный документ может открываться в окнах и отображаться в полях разного размера.
Разрешение монитора получить не проблема, и высчитать его ширину и высоту в миллиметрах. Когда идет работа только с табличным документом (режим редактирования), т.е. когда он открыт в отдельном окне, можно каким-то тупым путем рассчитать высоту поля и отобразить, но вот потом этот табдок может открываться в поле других форм, и/или на мониторах другого разрешения, как смасштабировать элементы в этом случае (и не понятно - как получить размеры поля в котором он отображается). Создавать табдоки для каждого варианта монитора как-то не хочется (не практично, и пользователю это не удобно)

Автор: Ardi 04.10.13, 14:33

Кэп предлагает: "Таблица\Вид\Масштаб".

Автор: logist 04.10.13, 14:38

Цитата(Ardi @ 04.10.13, 15:33) *
Кэп предлагает: "Таблица\Вид\Масштаб".

Хорошо Кэп, я подредактировал сообщение. Необходимо программно масштабировать.

Автор: Домовик 04.10.13, 15:00

а размер изображений внутри имеют право меняться?
Если да, то задать для каждого внутреннего изображения коэффициентШиринаИзображения, КоэффВысотаИзображения, КоэффПоложениеШирина, КоэффициентПоложениеВысота.

Первые два - сжимать/ увеличивать внутренний рисунок. если равен 1 - размер внешнего рисунка на максимальное разрешение.
Вторые два - точка положения рисунка, относительно точки внешнего рисунка. но тут еще смутно, нужно думать, знать возможности средств восьмерки





там еще прикольное свойство есть у картинки "РазмерКартинки". Для внешней картинки "Растянуть", для внутренних "пропорционально", но внутренние уже изначально отредактировать в редакторе их положение и размер под внешнюю картинку. но это не будет программное маштабирование.

Автор: logist 04.10.13, 15:18

Коэффициент от чего? Если бы было все так просто. Я не могу знать размеры поля в котором будет отображаться табдок...

Автор: Zaval 04.10.13, 15:26

Почему? Поле - это же элемент формы?

Автор: Petre 04.10.13, 15:37

Цитата(Zaval @ 04.10.13, 16:26) *
Почему? Поле - это же элемент формы?

Это при открытии. А что делать, если пользователь растягивает форму? Каким событием это отловить?

Автор: logist 04.10.13, 15:39

Цитата(Zaval @ 04.10.13, 16:26) http://pro1c.org.ua/index.php?act=findpost&pid=75728
А что делать, если пользователь растягивает форму? Каким событием это отловить?

В моем случае этого не надо отлавливать, формы открываются на весь экран и их изменение запрещено.

Автор: Petre 04.10.13, 15:44

Ну тогда: "ЭтаФорма.ЭлементыФормы.ПолеТабличногоДокумента.Ширина" ("*.Высота") в пунктах.

Автор: Fynjy 04.10.13, 18:31

Цитата(logist @ 04.10.13, 15:26) *
Необходимы какие-то идеи.
Есть некий табличный документ, который содержит картинку как фон (РисунокТабличногоДокумента расятнутый на видимую область) и элементы типа РисунокТабличногоДокумента наложенные на фон. Все это создается пользователем в поле Табличного документа в режиме редактирования. Необходимо в зависимости от разрешения монитора и размеров отображаемого поля табличного документа программно масштабировать элементы таким образом что бы они все были в видимой части. Табличный документ может открываться в окнах и отображаться в полях разного размера.
Разрешение монитора получить не проблема, и высчитать его ширину и высоту в миллиметрах. Когда идет работа только с табличным документом (режим редактирования), т.е. когда он открыт в отдельном окне, можно каким-то тупым путем рассчитать высоту поля и отобразить, но вот потом этот табдок может открываться в поле других форм, и/или на мониторах другого разрешения, как смасштабировать элементы в этом случае (и не понятно - как получить размеры поля в котором он отображается). Создавать табдоки для каждого варианта монитора как-то не хочется (не практично, и пользователю это не удобно)

Посмотрите, как реализовано со штрихкодом в восьмерке - по сути тот же рисунок, с изменяемыми в зависимости размера бумаги размерами.
По поводу масштаба ctrl+колесо мыши - sendkeys спасет отца русской демократии ...

Автор: Elstan 31.10.13, 9:39

Есть полезная встроенная функция ПолучитьИнформациюЭкрановКлиента(), возможно это то, что вам нужно.

Автор: logist 31.10.13, 10:31

Цитата(Elstan @ 31.10.13, 10:39) *
Есть полезная встроенная функция ПолучитьИнформациюЭкрановКлиента(), возможно это то, что вам нужно.

Очень хорошо, что у 1С есть такая полезная функция smile.gif Правда возвращает она только три параметра.
У меня это реализовано через
    Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); 
    Скрипт.Language = "VBScript";
    Локатор = Новый ComОбъект("WbemScripting.SWbemLocator");
    WMIСервис = Локатор.ConnectServer(".","root\cimv2");
    Мониторы = WMIСервис.ExecQuery("SELECT * FROM Win32_DesktopMonitor");

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua