Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Необходимы какие-то идеи. Есть некий табличный документ, который содержит картинку как фон (РисунокТабличногоДокумента расятнутый на видимую область) и элементы типа РисунокТабличногоДокумента наложенные на фон. Все это создается пользователем в поле Табличного документа в режиме редактирования. Необходимо в зависимости от разрешения монитора и размеров отображаемого поля табличного документа программно масштабировать элементы таким образом что бы они все были в видимой части. Табличный документ может открываться в окнах и отображаться в полях разного размера. Разрешение монитора получить не проблема, и высчитать его ширину и высоту в миллиметрах. Когда идет работа только с табличным документом (режим редактирования), т.е. когда он открыт в отдельном окне, можно каким-то тупым путем рассчитать высоту поля и отобразить, но вот потом этот табдок может открываться в поле других форм, и/или на мониторах другого разрешения, как смасштабировать элементы в этом случае (и не понятно - как получить размеры поля в котором он отображается). Создавать табдоки для каждого варианта монитора как-то не хочется (не практично, и пользователю это не удобно)
Сообщение отредактировал logist - 04.10.13, 14:36
Личные бесплатные консультации не даю, для этого есть форум!
а размер изображений внутри имеют право меняться? Если да, то задать для каждого внутреннего изображения коэффициентШиринаИзображения, КоэффВысотаИзображения, КоэффПоложениеШирина, КоэффициентПоложениеВысота.
Первые два - сжимать/ увеличивать внутренний рисунок. если равен 1 - размер внешнего рисунка на максимальное разрешение. Вторые два - точка положения рисунка, относительно точки внешнего рисунка. но тут еще смутно, нужно думать, знать возможности средств восьмерки
там еще прикольное свойство есть у картинки "РазмерКартинки". Для внешней картинки "Растянуть", для внутренних "пропорционально", но внутренние уже изначально отредактировать в редакторе их положение и размер под внешнюю картинку. но это не будет программное маштабирование.
Сообщение отредактировал Домовик - 04.10.13, 15:18
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0
Цитата(logist @ 04.10.13, 15:26)
Необходимы какие-то идеи. Есть некий табличный документ, который содержит картинку как фон (РисунокТабличногоДокумента расятнутый на видимую область) и элементы типа РисунокТабличногоДокумента наложенные на фон. Все это создается пользователем в поле Табличного документа в режиме редактирования. Необходимо в зависимости от разрешения монитора и размеров отображаемого поля табличного документа программно масштабировать элементы таким образом что бы они все были в видимой части. Табличный документ может открываться в окнах и отображаться в полях разного размера. Разрешение монитора получить не проблема, и высчитать его ширину и высоту в миллиметрах. Когда идет работа только с табличным документом (режим редактирования), т.е. когда он открыт в отдельном окне, можно каким-то тупым путем рассчитать высоту поля и отобразить, но вот потом этот табдок может открываться в поле других форм, и/или на мониторах другого разрешения, как смасштабировать элементы в этом случае (и не понятно - как получить размеры поля в котором он отображается). Создавать табдоки для каждого варианта монитора как-то не хочется (не практично, и пользователю это не удобно)
Посмотрите, как реализовано со штрихкодом в восьмерке - по сути тот же рисунок, с изменяемыми в зависимости размера бумаги размерами. По поводу масштаба ctrl+колесо мыши - sendkeys спасет отца русской демократии ...
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Elstan @ 31.10.13, 10:39)
Есть полезная встроенная функция ПолучитьИнформациюЭкрановКлиента(), возможно это то, что вам нужно.
Очень хорошо, что у 1С есть такая полезная функция Правда возвращает она только три параметра. У меня это реализовано через
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.Language = "VBScript"; Локатор = Новый ComОбъект("WbemScripting.SWbemLocator"); WMIСервис = Локатор.ConnectServer(".","root\cimv2"); Мониторы = WMIСервис.ExecQuery("SELECT * FROM Win32_DesktopMonitor");
"Мониторы" возвращает куда большей всякой информации. Но это все на данном этапе пока не нужно, возможно будет принято другое решение, без необходимости масштабировать.
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!