Как раскрасить текст в диалоге без Richtx32.ocx?

Программирование на Visual Basic for Applications
Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Как раскрасить текст в диалоге без Richtx32.ocx?

Сообщение Кукша12 » 14.07.2007 (Сб) 23:12

Для выделения отдельных слов в диалогах моих макросов я использую Richtx32.ocx.
Этот компонент Richtx32.ocx надо регистрировать в системе. Всё бы ничего, но если в виндах включено "автообновление", то регистрация этого компонента слетает после таких "обновлений"!!!
В итоге, я вынужден вызывать регистрацию перед каждым вызовом диалогового окна, в котором должен быть раскрашенный текст. Это накладно и к тому же требует прав администратора, что крайне нежелательно, поскольку не у всех такие права есть.
В то же время, вспомните о режиме проверки правописания в самом MS Word - в окне запроса текст раскрашивается, причём явно не при помощи Richtx32.ocx.

Как избавиться от Richtx32.ocx Я идиот! Убейте меня, кто-нибудь!

Вдогонку:
Проект у меня для MS Word, на VBA, все макросы хранятся в файле dot.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 15.07.2007 (Вс) 1:32

Кукша12
Попробуй WebBrowser(Microsoft Internet Controls) - можно запихнуть HTML.
Изображение

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 15.07.2007 (Вс) 10:27

keks-n писал(а):Кукша12
Попробуй WebBrowser(Microsoft Internet Controls) - можно запихнуть HTML.


Спасибо. Звучит красиво, но никогда не пробовал. Несколько вопросов:
1) насколько я понял, ему нужна shdocvw.dll, которая присутствует, если в системе есть IE выше 3.0. Ну, IE как правило везде есть, мало кто его сносит. Однако, если нет, то эту dll надо опять же регистрировать в системе, и может появиться тот глюк со слетанием регистрации при автообновлении виндов...
2) я "любитель", поэтому извиняюсь за этот вопрос, но всё-же: как правильно завести WebBrowser в свой проект? Через интерфейс VBA не годится - пользователи запутаются.
3) посмотрел в поисковиках, но дельной статьи по WebBrowser не нашёл. Может подскажете где глянуть?

Отдельно Может я просто неправильно регистрирую компонент? Может только у меня слетает регистрация при автообновлении? Сейчас просто вызываю regsvr32 richtx32.ocx из командной строки по ходу выполнения макроса и всё. Но, этот способ как выяснилось ненадёжен...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.07.2007 (Вс) 12:48

1) Нельзя ставить отдельные библиотеки. Надо иметь весь IE в системе.
2) Если интерфейс VBA не годится, то как, собственно, выводятся уже имеющиеся диалоги?

Отдельно Первый раз, в принципе, слышу об этом эффекте.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 15.07.2007 (Вс) 14:57

GSerg писал(а):1) Нельзя ставить отдельные библиотеки. Надо иметь весь IE в системе.


То есть, если используется обрезанные винды без IE или каким-то иным способом IE вырезали из операционки (редко, но встречается же) то макросы становятся нерабочие... печально.

GSerg писал(а):2) Если интерфейс VBA не годится, то как, собственно, выводятся уже имеющиеся диалоги?


Если точнее, то по ходу выполнения вызывается такая строчка:
Код: Выделить всё
RetVal = Shell("regsvr32 /s C:\Rus\Richtx32.ocx", 1)

потом даю короткую задержку выполнения (пустой цикл) - на всякий случай жду окончания регистрации. Потом вывожу окно диалога. Всё работает, только правав админа нужны и вообще некрасиво это. Зато не надо заставлять пользователя в интерфейс VBA лезть и галочки проставлять.
Не спорю, может не прав я - поправьте если что.

GSerg писал(а):Отдельно Первый раз, в принципе, слышу об этом эффекте.


Сам прибалдел. Я отключаю автообновление сразу после установки виндов, поэтому сам долго не мог отловить... пользователи обнаружили закономерность.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.07.2007 (Вс) 15:06

[вредный совет]
Можно создать сервис, который будет работать с админскими правами, и по твоей команде регистрировать что скажешь.
[/вредный совет]
Изображение

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 15.07.2007 (Вс) 16:31

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

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.07.2007 (Вс) 16:35

Сервис ставится один раз админом, и потом работает с админскими правами безо всякого вмешательства.
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.07.2007 (Пн) 16:10

Что-то вообще непонятна проблема...
Текст ведь вполне можно и совсем несложно выводить непосредственно на форму или PictureBox. Причем любым цветом и фонтом... Нафига для вывода примитивного сообщения тут какие либо контролы вообще?

P.S Хотя и машины без IE я не встречал...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.07.2007 (Пн) 16:19

К слову, RTF-рендерилка без зависимостей приаттачена в соседнем топике.
Изображение

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 16.07.2007 (Пн) 21:07

Andrey Fedorov писал(а):Что-то вообще непонятна проблема...
Текст ведь вполне можно и совсем несложно выводить непосредственно на форму или PictureBox. Причем любым цветом и фонтом... Нафига для вывода примитивного сообщения тут какие либо контролы вообще?


Андрей, мне нужно вывести предложение в диалоговое окно и покрасить в нём другим цветом только отдельные слова. При этом надо иметь возможность поправить текст. Если кинешь примером как это делается без Richtx32.ocx и прочих посторонних библиотек - буду очень признателен.

ЗЫ: это узконаправленный корректор, (не спрашивайте какой и зачем :) ). Выводятся предложения с неправильным написанием, а возможные ошибки в них выделяются цветом. В общем всё надо сделать так же как и в стандартном проверщике правописания ворда.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.07.2007 (Пн) 21:16

Кукша12, ты зайди-таки в http://bbs.vbstreets.ru/viewtopic.php?t=33640 .
Там <s>готовая</s>минимально работоспособная рендерилка уже лежит.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.07.2007 (Пн) 21:28

А когда мне надо рендерить rtf, я CreateWindowEx невидимый системный рич где угодно, хоть на десктопе, и посылаю ему EM_FORMATRANGE...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.07.2007 (Пн) 21:30

(шёпотом) а там именно так и сделано...
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.07.2007 (Пн) 21:35

Кукша12 писал(а):Андрей, мне нужно вывести предложение в диалоговое окно и покрасить в нём другим цветом только отдельные слова. При этом надо иметь возможность поправить текст. Если кинешь примером как это делается без Richtx32.ocx и прочих посторонних библиотек - буду очень признателен.


Вообще-то в стандартном окошке орфографии Word-а слово остается раскрашенным лишь до начала его редактирования. Соответственно вначале можно показывать PictureBox с раскраской, а при начале редактирования юзером (или получении им фокуса, что проще) - подменять его на обычный TextBox. Это как самый примитивный вариант решения. Можно, как и говорилось, на PictureBox сделать простенький редактор с раскраской, только сложней это будет, да и стоит ли для данной цели?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.07.2007 (Пн) 21:35

Ну вот, решишь так сэкономить трафик на аттачах, и тут же...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 16.07.2007 (Пн) 23:03

Спасибо всем! Покопаюсь.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52

    TopList