• Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

проблема с Outlook-формой

  • Автор темы Автор темы CHIP
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
C

CHIP

Всем привет!
Такой вопрос, как можно удалить любой элемент с формы, когда она уже запущена?

метод Remove требует индекса из коллекции Pages... А как выудить этот индекс для определенного элемента на форме я не знаю (object.Index - ошибку выдает)

Если вместо индекса вписываю сам объект - то пишет "несовпадение типов"
Код:
Set а=objPage.Controls("Message")
Set b= objPage.Controls.Remove(a))

Подскажите плиз.. ;)
 
А что, сокрытие не подойдет? зачем удалять
 
Для: GROMILA
Ну я давно уже сделал с сокрытием, но пришлось его на кнопку вешать, а не в функцию Open_Item..
Потому что если при открытии делать видимым это поле, то оно автоматом имеет свои минимальные размеры (две строчки)... а мне этого не нужно.. мне нужно было чтобы видны были только прикрепленные файлы.
Но теперь если файлы есть, то видна кнопка типа "Показать вложения"... И по ее нажатию появляется это поле, но уже с нормальными (заданными мною) размерами...
А при закрытии формы опять становится невидимым..

Так что эту проблему я решил кое-как... А про удаление, так ничего и не нашел.

Кстати, как запретить удаление элемента из табличного представления папки?
Item_BeforeDelete() работает только при условии, что этот элемент открыт...
 
Мы извращались следующим образом:
1. Аутглюк при удалении помещает элемент в папку [Удаленные!!!!
2. Делается обработчик в надстройке (add-in), который перехватывает события папки [Удаленные]
3. Если елемент нельзя удалять, то обработчик препятствует помещению его в папку удаленные!!!
 
Для: GROMILA
Не.. это не то... Возможно ли такое запрещение посредством кода самой формы?

Мне нужно запретить такое удаление у 80 человек примерно... И не особо улыбается ходить и каждому прописывать код...
 
Не возможно.
Но можно еще порыть мсдн если речь идет об общих папках.
В этом случае нужно писать серверные скрипты, которые будут работать для всех, но ....
но я этого не пробовал делать.

Что касается более или менее серьезной разработки под OL вообще,
то делать инсталляционный пакет, который будет распространять изменения
функционала по сети!!!

Это САМЫЙ БОЛЬШОЙ НЕДОСТАТОК по сравнению с Lotus-ом,
где подобная операция обновления дизайна баз является встроенной и обычной.
 
Беда в том что как раз запрет нужен на удаление из персональных папок (не сетевых)...
Ну я подозревал что это невозможно сделать через саму форму... Увы =(

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

Как только вручную устанавливаю эту отправляемую форму в "Личные формы" - все отлично работает.

Вопрос: есть ли код для автоматической установки форм?

А то пока я только вижу шанс попробовать отследить все изменения в системе при ручной установке. И потом создать ехе-шник с этими изменениями...
 
Код конечно есть, и его не трудно в объектной модели OL найти.
Это операция публикации формы.
Форма может быть опубликована в трех местах:
1. В конкретной папке (доступна только в этой папке клиента OL)
2. В Библиотеке личных форм (доступна во всех папках клиента OL)
3. На сервере в общих папках (доступна на сервере и возможно на клиенте, проверь)

Что касается инсталлятора, то я пришел к выводу, что лучше
сделать отдельный проект на VB6 или на C#, где удобно отладить все нужные операции
А потом из инсталляционных прог только вызывать эти отлаженные интерфейсы.
Напрямую в инсталляционных прогах задолбаешься отлаживать, хотя и короче код!!!

Что касается применения VB6 или современного C#, то начиналь юзать OL-модель на порядок легче из VB6 а то и из VBA-макросов OL. Но реалии таковы, что перелезть на C# прийдется, так как микропух уже забил на VB6, и дальнейшее развитие будет только на платформе NET и должно пройти время тестирования.
 
Хочу предупредить еще о двух проблемах, которые весьма криво решаются, что ведет порой к тупику применения OL:
1. Поиск по пользовательским полям не работет без публикации полей в папке!!!
А программно это сделать через модель нельзя :)))))
(как подтверждение см.топик здесь)
Прийдется ИНСТАЛЛЯТОРУ таскать за собой папки с опубликованными средствами конструктора полями!!!

2. Для пользовательских полей Дата/Время нет компонента ввода на форме!!
рекомендуют использовать ActiveX MSDatePicker (название кривое по памяти пишу), но с ним есть проблема и очень большая:
- перестает работать сохранение даты (глючить обмен между формой и компонентом по ствойству Value)
- компонент нужно ИНСТАЛЛИТЬ на ПК!!!!!


На мой взгляд сие делает OL совершенно непригодным для серьезной разработки Workflow-приложений.
Так, чисто по мелочам.
 
Для: GROMILA
Ясно.. Код нашел.. Спасибо.

Будут еще вопросы - напишу сюда :)
 
Вот задался вопросом таким:
А как програмно запустить форму из библиотеки личных форм ??

Т.е. как к этой библиотеке обратиться?

А и еще.. Может кто знает как отключить сообщения отлука о том что на форме используется несколько полей типа "Сообщение" или "Заметка" ??
 
Вот задался вопросом таким:
А как програмно запустить форму из библиотеки личных форм ??

Т.е. как к этой библиотеке обратиться?
Что значит к ней обратиться? Она всегда доступна, причем глобально.
Просто открывай и все.


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

А про сообщения.. Там кароче даже если имена этих полей одинаковые, но всеравно выдается предупреждение.
Меня это удивляло потому что эти поля были на вкладках которые, либо одна либо другая скрывались...
Оказывается это не меняет дело.. а меняет только то, что если по умолчанию одно из полей сделать невидимым. а при открытии нужной вкладки делать видимым и все. Предупреждения нету =)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!