Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Разработка Printable ActiveX-компоненты (число прочтений - 3672 )
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Разработка Printable ActiveX-компоненты
12. Октября 2007 :: 09:11
Печать  
Народ, всем привет.

Помогите по сабжу пожалуйста. Разрабатываю компоненту для 1С-ки, которая будет вставляться в таблицу аналогично объекту 1С-ки "Диаграмма". В инете не смог найти информации по разработке подобных компонент. Сейчас получилось вставить в таблицу ActiveX Control, но у него проблемы с масштабированием в Preview и при печати Печаль. Если кто занимался подобным, пните в нужном направлении Улыбка.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Разработка Printable ActiveX-компоненты
Ответ #1 - 12. Октября 2007 :: 09:17
Печать  
Thor писал(а) 12. Октября 2007 :: 09:11:
Народ, всем привет.
Сейчас получилось вставить в таблицу ActiveX Control, но у него проблемы с масштабированием в Preview и при печати

Задавай размеры объектов в мм, а не пикселях.
на Preview  1с не обращай внимания.
  
Наверх
 
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Разработка Printable ActiveX-компоненты
Ответ #2 - 19. Декабря 2007 :: 09:16
Печать  
Появились новые подробности.

Разрабатывается визуальный ActiveX-объект(среда разработки — Delphi 5), функция которого состоит в отображении схемы изделия. Этот объект внедряется в стандартный объект 1С-ки "Таблица". Проблема состоит в том, что при обычном отображении схема выводится с нормальным масштабом, в режиме предварительного просмотра (Print Preview) масштаб схемы не подгоняется под масштабы листа (обычно больше), а при печати масштаб схемы очень маленький.
Как я понял, проблема заключается в изменении графического контекста (у экрана и принтера разное разрешение) и в режиме вывода изображения в контекст, наверное используется MM_TEXT.
Вопрос к знатокам: как для компоненты назначить другой режим отображения, или как перехватить изменение контекста (есть ли такое событие?).

P.S. Я экспериментировал со вставкой различных контролов и заметил, что все стандартные ActiveX от Microsoft (то есть написанные с использованием Visual C++/MFC) отображаются нормально, а все компоненты, написанные на Delphi, отображаются, так, как описано выше.
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Разработка Printable ActiveX-компоненты
Ответ #3 - 19. Декабря 2007 :: 09:42
Печать  
Thor писал(а) 19. Декабря 2007 :: 09:16:
Проблема состоит в том, что при обычном отображении схема выводится с нормальным масштабом, в режиме предварительного просмотра (Print Preview) масштаб схемы не подгоняется под масштабы листа (обычно больше), а при печати масштаб схемы очень маленький.
Как я понял, проблема заключается в изменении графического контекста (у экрана и принтера разное разрешение) и в режиме вывода изображения в контекст, наверное используется MM_TEXT.

Да, скорее всего, ты понял правильно. MM_TEXT - отображение одной единицы в физический пиксел устройства. В принципе, подойдет практически любой другой режим при правильном подходе Улыбка

Thor писал(а) 19. Декабря 2007 :: 09:16:
Вопрос к знатокам: как для компоненты назначить другой режим отображения, или как перехватить изменение контекста (есть ли такое событие?).

Перехватить событие? Зачем?! Что тебе это даст?

Не знаю Дельфи. В C++ все элементарно - SetMapMode. Плюс, возможно,  SetWindowExtEx и SetViewportExtEx. Да! При принт-превью нельзя использовать контекст рисования для получения информации о характеристиках устройства (например, для получения ширины символа и, соответственно, ширины строки). Поэтому для получения характеристик нужно использовать некий специальный "информационный" контекст. А чтобы данные с этого контекста могли быть пригодны и для экрана, и для принтера (с любыми разрешениями), контекст должен быть настроен устройствонезависимым образом.

Thor писал(а) 19. Декабря 2007 :: 09:16:
P.S. Я экспериментировал со вставкой различных контролов и заметил, что все стандартные ActiveX от Microsoft (то есть написанные с использованием Visual C++/MFC) отображаются нормально, а все компоненты, написанные на Delphi, отображаются, так, как описано выше.

Дельфи - суксь, C++ - рулез!  Смех
  
Наверх
 
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Разработка Printable ActiveX-компоненты
Ответ #4 - 08. Января 2008 :: 09:59
Печать  
Z1 писал(а) 12. Октября 2007 :: 09:17:
Thor писал(а) 12. Октября 2007 :: 09:11:
Народ, всем привет.
Сейчас получилось вставить в таблицу ActiveX Control, но у него проблемы с масштабированием в Preview и при печати

Задавай размеры объектов в мм, а не пикселях.
на Preview  1с не обращай внимания.


Можно поподробнее, плиз?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать