![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: 1 Всего: 1 |
Использую компонент THTMLLite (http://www.pbear.com/).
Для отображения формы окна без перехвата фокуса работает данный код:
Все контролы отображаются, а html (THTMLLite) - не хочет. При этом, когда раньше на его месте стоял RichEdit, то отображалось по этой же схеме все отлично. Подозреваю, что у недавно принятого мной к использованию компонента неадекватная реакция на ShowWindow (или вообще ее нет), но мозгов не хватает, чтобы это вылечить. Быть может, уважаемые профи сумеют найти причину такого поведения? Другой способ отображения без активации окна и его контролов вряд-ли найдется (в свое время, когда его искал, все перерыл). А другой компонент для отображения HTML можете и посоветовать - авось, с ним фокус пройдет. Это сообщение отредактировал(а) Romero - 16.5.2008, 13:36 |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
Romero, А почему Visible ему не хочешь сделать? Все равно же у тебя VCL...
Добавлено через 54 секунды или для этого? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: 1 Всего: 1 |
А его реально сжать по высоте отображенного контента? А отрубить системное контекстное меню?
Дело в том, что мне необходимо только отобразить строку с HTML-содержимым, полноценный браузер категорически не нужен. Плюс сжатие по высоте - в HTMLLite научился делать. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
при использовании WinApi применительно к VCL контролам надо отдавать отчет, что может произойти "рассинхронизация" состояний WinApi и VCL контролов. что может привести к странному поведению оных
-------------------- There are always someone smarter than you... |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: 1 Всего: 1 |
Rennigth, просто визибл менять не катит, нужно отображение без активизации.
Рассинхронизации не наблюдалось при использовании RichEdit - работало как часы. Думаю, HTMLLite просто как-то неправильно обрабатывает сообщение показа окна. В исходниках порылся - ничего не разглядел, что могло бы повлиять. Быть может, кто-то глянет в сырцы и скажет, чего не хватает или где лишнее? MetalFan, есть предложения, как выполнить ту же задачу (отображение окна программы без перехвата фокуса) без применения WinAPI к VCL? |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: 1 Всего: 1 |
Хм, обнаружил интересный факт.
Форма, на которой лежит HTMLLite, - не основная, и она не отображается изначально при запуске приложения. То есть, не рисуется, пока я ее не вызову вышеописанным способом. Так вот, если сначала я для этой формы вызываю Show и Hide, то далее она отображается нужным способом, HTMLLite становится видимым, причем даже каждый компонент отдельно показывать не надо. Выходит, что сначала компоненту нужно прорисоваться (или что он там делает при вызове метода Show для формы его содержащей), а дальше он сможет быть скрыт и показан без проблем. Как отловить, какое именно действие, совершаемое при Show, помогает? Не "моргать" же мне формой при запуске приложения, чтобы затем корректно ее отображать. |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: 1 Всего: 1 |
Чтож, если нет предложений, буду поступать именно так.
|
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
У этого компонента есть своя спецификация в отображении. Попробуй:
Тут важно вот что: если в твоей программе скроллбары точно не требуются и не появятся, то при показе в цикле их нужно исключать, иначе они будут отображены при любом раскладе. Но если они нужны, то проверки надо убрать. P. S. Для контролов флаг SW_SHOWNOACTIVATE можно заменить на SW_SHOW Это сообщение отредактировал(а) Rrader - 3.6.2008, 13:23 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |