Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Отследить печать документа хочется... (число прочтений - 27842 )
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #30 - 04. Июля 2006 :: 13:09
Печать  
Цитата:
Процедура вызывается из объекта, который ты в этой процедуре удаляешь.

Похоже на то. А на кой тогда вообще параметр Табл, если Табл уже умер?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #31 - 04. Июля 2006 :: 13:16
Печать  
vip писал(а) 04. Июля 2006 :: 13:09:
Цитата:
Процедура вызывается из объекта, который ты в этой процедуре удаляешь.

Похоже на то. А на кой тогда вообще параметр Табл, если Табл уже умер?

Нет. Ты не так понял. Как раз Табл еще не умер.
Смотри:
1. Процедура ПриОтправкеНаПечать вызывается из функции движка CSheetView:УжасnPrint(), где объект CSheetView, из которого идет вызов - это как раз окно таблицы.
2. Ты в процедуре ПриОтправкеНаПечать методом Табл.Показать("","",-1) закрываешь окно таблицы, при этом объект связанный с этим окном уничтожается.
3. После отработки процедуры управление возвращается в CSheetView:УжасnPrint(), чтобы продолжить обработку печати (даже если ты поставил статус возврата в ноль). Но ведь ты уже удалил это объект и фактически управление возвращается неизвестно какому объекту и это вызывает падение.

Короче. С Табл в процедуре ПриОтправкеНаПечать надо обращаться очень аккуратно.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #32 - 04. Июля 2006 :: 13:34
Печать  
Получается управлять Табл в процедуре обработки печати не получится.
Но все равно, большое дело сделал - отследить момент посылки на принтер.
Я все равно печать по своему обрабатываю. Если юзер совсем поражен в правах (нет даже главного меню программы), а печатать из просмотра надо, я в уголок окна таблицы цепляю анимированный гиф с картинкой принтера. При нажатии на него по-простецки посылаю "Ctrl+P".
А теперь, так как я перехватываю окно таблицы по его хэндлу, в твоей процедуре я над этим окном могу изгаляться, в т.ч. и закрывать.
Так что, спасибо. Улыбка
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #33 - 04. Июля 2006 :: 13:45
Печать  
vip писал(а) 04. Июля 2006 :: 13:34:
Получается управлять Табл в процедуре обработки печати не получится.
Но все равно, большое дело сделал - отследить момент посылки на принтер.
Я все равно печать по своему обрабатываю. Если юзер совсем поражен в правах (нет даже главного меню программы), а печатать из просмотра надо, я в уголок окна таблицы цепляю анимированный гиф с картинкой принтера. При нажатии на него по-простецки посылаю "Ctrl+P".
А теперь, так как я перехватываю окно таблицы по его хэндлу, в твоей процедуре я над этим окном могу изгаляться, в т.ч. и закрывать.
Так что, спасибо. Улыбка

И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.
В принципе, можно сделать небольшой наворот: в ПриОтправкеНаПечать делать таблицу невидимой с помощью Сервис::ПрятатьТаблицу(), запоминать эту таблицу в глобальный список, а потом в уже обработке ожидания физически закрывать все ранее спрятанные таблицы.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #34 - 04. Июля 2006 :: 13:59
Печать  
Цитата:
И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.

Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #35 - 04. Июля 2006 :: 14:49
Печать  
vip писал(а) 04. Июля 2006 :: 13:59:
Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.


эээ... с этого места поподробней... Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #36 - 04. Июля 2006 :: 14:57
Печать  
Цитата:
эээ... с этого места поподробней...

Я давно уже использую свою ВК semen.dll (назвал в честь любимого кота Семена).
Писал (и постоянно дописываю) только для себя. Аккуратно оформлять лень.
Когда мне чего-то не хватает, по-быстрому дописываю.
Пишу на VB, т.к. сями не владею. Практически 100% использую API.
Поэтому я спокойно перехватываю хэндл окна таблицы и обрабатываю, как хочу.
Так что АЛьФ в этом случае не прав.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #37 - 04. Июля 2006 :: 15:14
Печать  
Понял.

Эхх... семен семеныч...  Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #38 - 04. Июля 2006 :: 15:27
Печать  
Цитата:
Эхх... семен семеныч... 

Объект там один "AddIn.MyCatSemen" Улыбка
Методов более 60.
Но они совершенно бессистемные. Многие к тому же делают то же, что и FormEx, но через API.
Я и писать-то стал "в пику" Улыбка АЛьФу, когда он просил деньги за нынешний объект "Окна".
Но спасибо ему, что я решился писать свою ВК. Очень помогает.
Чего и вам желаю Подмигивание
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #39 - 04. Июля 2006 :: 17:00
Печать  
vip писал(а) 04. Июля 2006 :: 14:57:
Пишу на VB, т.к. сями не владею. Практически 100% использую API.

Когда-то на форум.миста.ру был задан вопрос по управлению меню 1С. И один спец (не помню кто) показал решение без использования всяких ВК. Открывался Ексель, создавался VBA проект, в проект импортировались API-функции и вызывались.
Ветку правда не нашел, видно погибла при чистке.. Печаль
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #40 - 04. Июля 2006 :: 17:15
Печать  
steban писал(а) 04. Июля 2006 :: 17:00:
vip писал(а) 04. Июля 2006 :: 14:57:
Пишу на VB, т.к. сями не владею. Практически 100% использую API.

Когда-то на форум.миста.ру был задан вопрос по управлению меню 1С. И один спец (не помню кто) показал решение без использования всяких ВК. Открывался Ексель, создавался VBA проект, в проект импортировались API-функции и вызывались.
Ветку правда не нашел, видно погибла при чистке.. Печаль

Есть такой интересный парень, smaharbA Улыбка
Идеями фонтанирует. Иногда весьма необычными. Почему-то ярый противник ВК.
Но патологически не может идею довести до рабочего состояния.
А так иногда такие перлы выдает Подмигивание
Кстати решение АЛьФа по меню неполное. Невозможно избавиться от меню "Действия".
Оно создается динамически.
Я главное меню во фронт-офисе убираю совсем.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #41 - 04. Июля 2006 :: 18:07
Печать  
Да, Абрахамс иногда выдает такОе...  Улыбка


А по меню действия, а не проще его отключать постоянно? В какой нибудь глобальной предопределенной процедуре?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #42 - 04. Июля 2006 :: 18:23
Печать  
Цитата:
А по меню действия, а не проще его отключать постоянно? В какой нибудь глобальной предопределенной процедуре?

Не представляю, как. Оно пересоздается и при переходе между окнами и при открытии нового окна.
Я в свое время намаялся с полным убиранием главного меню. У Штрих-М, по-моему, было сделано его скрытие. Но паскудно, через таймер. Дергалось при попытке появления.
А я сделал через сабклассинг главного окна 1С с перехватом события WM_WINDOWPOSCHANGING. Меню убивается еще до своего появления..
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #43 - 04. Июля 2006 :: 18:57
Печать  
Не задавался этим вопросом, но стало интересно, поиграюсь сегодня  Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #44 - 05. Июля 2006 :: 05:58
Печать  
vip писал(а) 04. Июля 2006 :: 13:59:
Цитата:
И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.

Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.

Ага, тебе-то все равно, а вот процедуре ПриОтправкеНаПечать не все равно. Если у тебя закрытие таблицы в ПриОтправкеНаПечать работает без вылета, значит у тебя где-то получается утечка памяти и объект таблицы ты не уничтожаешь.
Хотя, возможен вариант, что ты посылаешь окну таблицы сообщение на закрытие и окно обрабатывает это сообщение уже после всего, что должно сделать при печати и больше обращений к объекту нет. Тогда да, должно по идее срабатывать нормально.
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать