Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программное масштабирование элементов табличного документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
logist
Необходимы какие-то идеи.
Есть некий табличный документ, который содержит картинку как фон (РисунокТабличногоДокумента расятнутый на видимую область) и элементы типа РисунокТабличногоДокумента наложенные на фон. Все это создается пользователем в поле Табличного документа в режиме редактирования. Необходимо в зависимости от разрешения монитора и размеров отображаемого поля табличного документа программно масштабировать элементы таким образом что бы они все были в видимой части. Табличный документ может открываться в окнах и отображаться в полях разного размера.
Разрешение монитора получить не проблема, и высчитать его ширину и высоту в миллиметрах. Когда идет работа только с табличным документом (режим редактирования), т.е. когда он открыт в отдельном окне, можно каким-то тупым путем рассчитать высоту поля и отобразить, но вот потом этот табдок может открываться в поле других форм, и/или на мониторах другого разрешения, как смасштабировать элементы в этом случае (и не понятно - как получить размеры поля в котором он отображается). Создавать табдоки для каждого варианта монитора как-то не хочется (не практично, и пользователю это не удобно)
Ardi
Кэп предлагает: "Таблица\Вид\Масштаб".
logist
Цитата(Ardi @ 04.10.13, 15:33) необходимо зарегистрироваться для просмотра ссылки
Кэп предлагает: "Таблица\Вид\Масштаб".

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

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





там еще прикольное свойство есть у картинки "РазмерКартинки". Для внешней картинки "Растянуть", для внутренних "пропорционально", но внутренние уже изначально отредактировать в редакторе их положение и размер под внешнюю картинку. но это не будет программное маштабирование.
logist
Коэффициент от чего? Если бы было все так просто. Я не могу знать размеры поля в котором будет отображаться табдок...
Zaval
Почему? Поле - это же элемент формы?
Petre
Цитата(Zaval @ 04.10.13, 16:26) необходимо зарегистрироваться для просмотра ссылки
Почему? Поле - это же элемент формы?

Это при открытии. А что делать, если пользователь растягивает форму? Каким событием это отловить?
logist
Цитата(Zaval @ 04.10.13, 16:26) необходимо зарегистрироваться для просмотра ссылки
Поле - это же элемент формы?

Да. Можно подробнее, я наверное что-то упустил в образовании smile.gif)

Цитата(Petre @ 04.10.13, 16:37) необходимо зарегистрироваться для просмотра ссылки
А что делать, если пользователь растягивает форму? Каким событием это отловить?

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

Посмотрите, как реализовано со штрихкодом в восьмерке - по сути тот же рисунок, с изменяемыми в зависимости размера бумаги размерами.
По поводу масштаба ctrl+колесо мыши - sendkeys спасет отца русской демократии ...
Elstan
Есть полезная встроенная функция ПолучитьИнформациюЭкрановКлиента(), возможно это то, что вам нужно.
logist
Цитата(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");

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