Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2011, 12:47   #11
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Извините, а Вы чужие посты читаете или только по диагонали просматриваете?
У объекта "Кнопка", размещённого на листе, я не нашёл свойства, при помощи которого можно делать его невидимым чтобы не выводился на печать. Об этом я уже писАл в своём посте Вчера, 23:41
К тому же, форма в отличие от рисунка "Кнопка" (ведь это получается именно картинка-Shape, а не OLE-object) автоматически позиционируется на экране и не скрывается с экрана при изменении масштаба и прокрутке документа.
И если Вам искренне жаль тех, кто по своей наивности до сих пор пользуется печатью документов, придуманной "мелко-мягкими", то предложите свой "продвинутый" вариант и скажите, как его внедрить в Ворд.
Alex_ST вне форума Ответить с цитированием
Старый 31.12.2011, 13:49   #12
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,166
По умолчанию

>И если Вам искренне жаль тех, кто по своей наивности до сих пор пользуется >печатью документов, придуманной "мелко-мягкими", то предложите свой >"продвинутый" вариант и скажите, как его внедрить в Ворд.

Ворд открываем, пишем белеберду всякую, выделяем её, ставим на запись макрос
вешаем выполнение на кноку, например Сотрол+1, что будет означать, что 1 копия
в него вкладываем Сонтрол З\P, указываем печать выделенного и копий 1
и по желанию скрываем если есть выделенные кнопки, но это уже записью на магнитофоне не сделать, но как я понял это уже Вам и не нужно
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.01.2012, 11:26   #13
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

А я выяснил, что наиболее «легкоусвояемы» — это кнопки на панели инструментов: вот, например, в Word 2003: http://programmersforum.ru/showthread.php?t=113041 (справа на верхней панели).

Я, пока Word имел диалог рисования кнопок, всегда с удовольствием его применял!

Последний раз редактировалось Sasha_Smirnov; 03.01.2012 в 11:46.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 03.01.2012, 14:38   #14
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
Сообщение от Alex_ST
А вот "Перед печатью", оказывается, - фиг вам!
Стандартный способ интерсептирования команд Word заключается в размещении
в пользовательском модуле процедуры с именем совпадающим с именем команды.
Посмотреть имена можно в списке макросы из "команд Word" диалога записи макроса.
В вашем случае это:
FilePrint
FilePrintDefault
ну и возможно имеет смысл обрабатывать
FilePrintPreview
Код:
Public Sub  FilePrint()
' Этот код выполняется до печати
End Sub
Вместо элемента MSFORM IMHO IMHO лучше использовать поле MACROBUTTON.
Спрятать его в обработчике печати - нет проблем (например, изменив тип поля
на PRIVATE)
Aent вне форума Ответить с цитированием
Старый 03.01.2012, 15:27   #15
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,166
По умолчанию

>Спрятать его в обработчике печати - нет проблем (например, изменив тип поля
на PRIVATE)
Можно поподробней, код, а то я юзаю Нide

Код:
Public Sub FilePrint()
'Этот код выполняется до печати

    MsgBox$ "FilePrint"

End Sub
Ага, контрол + З\P, а если мышей ткнули на Печать, как быть?

Последний раз редактировалось Ципихович Эндрю; 03.01.2012 в 15:34.
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.01.2012, 17:54   #16
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
Ага, контрол + З\P, а если мышей ткнули на Печать, как быть?
Не понял вопроса - подпрограмма FilePrint вызовется ВМЕСТО стандартной печати
Word Файл->Печать...
Для реальной печати документа в этой процедуре нужно использовать метод
ActiveDocument.PrintOut c необходимыми параметрами.
Так же можно из этой процедуры обратиться к стандартному диалогу печати и настроить его на
предопределённые параметры:
Пример:
Код:
 With Dialogs(wdDialogFilePrint)
         .Range = wdPrintRangeOfPages
         .Pages = "3,5,7-11"
         If .Show = -1 Then .Execute
 End With
Что же касается изменения типа поля:
Код:
'Эта процедура меняет в активном документе у всех полей MACROBUTTON тип на PRIVATE 
'Т.е. на скрытый текст
Public Sub HideAllMacroButton()
   Dim f As Field
   With ActiveWindow.View
       .ShowHiddenText = False
       .ShowAll = False
   End With
   For Each f In ActiveDocument.Fields
      If f.Type = wdFieldMacroButton Then
         f.Code.Text = Replace(f.Code.Text, "MACROBUTTON", "PRIVATE", 1, 1, vbTextCompare)
      End If
   Next f
End Sub
Вместо PRIVATE можно использовать для тех же целей поле типа COMMENTS.

Последний раз редактировалось Aent; 03.01.2012 в 18:15.
Aent вне форума Ответить с цитированием
Старый 03.01.2012, 18:02   #17
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,166
По умолчанию

за код спасибо, опробую
Имеется ввиду если юзер имеет предложенный Вами код и будет посылать на печать путём нажатия сочетания кнопок контрол + З\P тогда всё Окей, а если он воспользуется мышей ткнул на Печать, тогда пролёт, как быть
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.01.2012, 18:10   #18
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,166
По умолчанию

> f.Code.Text = Replace(f.Code.Text, "MACROBUTTON", "PRIVATE", 1, 1, vbTextCompare)
Одним словом не то, во всяком случае не то, что я думал, спасибо
тупо удаляет их
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.01.2012, 19:43   #19
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
если он воспользуется мышей ткнул на Печать
Если кликнул на Файл печать - будет вызван FilePrint
Если на кнопку с принтером в 2003 Word - будет вызван FilePrintDefault
Непонятно в чём ваш вопрос.

По поводу того как можно прятать кнопки.
Cтандартно по кнопке в "Элементы Управления" внедряется объект InlineShape.
Но можно добавить кнопку самому как Shape. Место можно задать закладкой.
Код:
Dim MyCB
Set MyCB = ActiveDocument.Shapes _
    .AddOLEControl(ClassType:="Forms.CommandButton.1")
With MyCB.OLEFormat.Object
    .Caption = "Моя кнопка"
End With
В этом случае для шейпа доступно свойство .Top, изменив которое, скажем, на -1000 мы легко спрячем кнопку перед печатью.
Aent вне форума Ответить с цитированием
Старый 03.01.2012, 20:04   #20
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,166
По умолчанию

сорри, теперь нет вопросов:
Код:
Sub FilePrint()
'Этот код выполняется до печати, при нажатии сочетаний клавиш Контрол з\p

    MsgBox$ "FilePrint"

End Sub

Sub FilePrintDefault()
'Этот код выполняется до печати, если мышью кликнуть на Печать

    MsgBox$ "FilePrintDefault"

End Sub
а что за кнопка, что высота у неё 0? и главное кнопка, у которой слева от неё якорь появляется? я обычно другие добавляю, код не помню
Код:
Dim MyCB As Object
Set MyCB = ActiveDocument.Shapes _
    .AddOLEControl(ClassType:="Forms.CommandButton.1")
With MyCB.OLEFormat.Object
    .Caption = "Моя кнопка"
    ВысотаКнопки = .Top
    .Top = -1000
    .Top = ВысотаКнопки
End With
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтоб при нажатии кнопки форма не работала? quarty Помощь студентам 6 05.11.2010 15:50
Как сделать при нажатии кнопки новое окно quarty Общие вопросы Delphi 9 01.11.2010 14:06
Builder. Как сделать раекцию на кнопки MakTpaxep C++ Builder 4 23.10.2010 21:55
Builder. Как в цикле сделать все кнопки неактивными? TwiX C++ Builder 4 25.12.2009 17:51
Как возможно сделать изменение кнопки xGroupers Общие вопросы Delphi 4 25.04.2008 00:07