У меня есть форма с несколькими разделителями и панелями. Посередине находится панель, которая заканчивается TWebBrowser, настроенным для выравнивания alClient.
В прошлом это работало хорошо. Однако в Windows 7 с Internet Explorer 8 размер браузера изменен неправильно. Все остальное (то есть панели) имеют правильный размер, но не веб-браузер. Иногда, когда вы нажимаете в браузере, или чаще, когда вы прокручиваете, браузер будет переходить на правильный размер. Это не происходит в 100% случаев.
Я пытаюсь разобраться с изменением размера напрямую и заставить элемент управления изменить размер. Я не могу найти метод, который имеет какое-либо значение (то есть. Invalidate; .Repaint; .Update;)
TWebBrowser - это элемент управления OLE (ActiveX), который обертывает элемент управления Internet Explorer. Любые идеи о том, как я могу сделать изменение размера?
Обновлен фон:
Я сузил это до случая, когда у меня есть дочерняя форма, когда я меняю родителя, чтобы разместить его внутри другой формы. Мой элемент управления TWebBrowser находится в дочерней форме, которую я использую каждый раз, когда мне нужно показать HTML-документ.
В моей родительской форме у меня есть Сетка, разделитель и панель с сеткой, установленной на Выравнивание по верху, и панелью, настроенной для выравнивания клиента. Моя дочерняя форма (называемая THtmlViewer) имеет родительский элемент для панели. Форма THtmlViewer установлена на alClient, а элемент управления TWebBrowser на дочерней форме также настроен для выравнивания клиента.
Если я что-то делаю в форме изменения размера формы THtmlViewer, я сталкиваюсь с этой проблемой. Все, что находится непосредственно в FormResize или косвенно, используя свойства выравнивания. Тем не менее, если я позвоню изменить размер из родительской формы, все будет хорошо.
Кажется, ключ отключает код изменения размера в форме THtmlViewer. Если я оставляю обработчик OnResize или набор выравнивания, то не имеет значения, что я делаю в родительском объекте, изменение размера выполняется неправильно.
Я все еще не понимаю, зачем это нужно и почему я не могу заставить его обновляться с правильным изменением размера (THtmlViewer).
В качестве дополнительного примечания я также заметил, что Delphi 2007 в Windows 7 имеет точно такую же проблему с «страницей приветствия» в IDE.
Я обошел проблему, добавив метод для установки OnResize дочерней формы равным nil, а затем вызвал мой внутренний ForceResize из обработчика родительского OnResize. Я все еще хотел бы разобраться с этим из формы THtmlViewer и принял бы ответ, который позволит мне избежать этого взлома.