Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизСмерть WebBrowser-a при изменении TForm.FormStyle Найти похожие ветки
← →
Мастерок © (2007-01-28 15:43) [0]WebBrowser окрашивается полностью в белый цвет. Как его оживить?
Далее код примера:
Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, MSHTML;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
IHTMLViewer: IHTMLDocument2disp;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("about:blank");
IHTMLViewer:=IHTMLDocument2disp(Webbrowser1.Document);
IHTMLViewer.writeln("При изменении FormStyle вместо WebBrowser-a остаётся белый прямоугольник - возмутительно!!!");
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FormStyle:=fsNormal;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FormStyle:=fsStayOnTop;
end;
end.
Unit1.dfm
object Form1: TForm1
Left = 248
Top = 199
Width = 570
Height = 484
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object WebBrowser1: TWebBrowser
Left = 8
Top = 8
Width = 545
Height = 377
TabOrder = 0
ControlData = {
4C00000054380000F72600000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
object Button1: TButton
Left = 232
Top = 392
Width = 75
Height = 25
Caption = "fsNormal"
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 232
Top = 424
Width = 75
Height = 25
Caption = "fsStayOnTop"
TabOrder = 2
OnClick = Button2Click
end
end
Project1.dpr
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
← →
Olivetti (2007-01-29 02:28) [1]Ну, для начала, вот это как-то нехорошо:
var
Form1: TForm1;
IHTMLViewer: IHTMLDocument2disp;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("about:blank");
IHTMLViewer:=IHTMLDocument2disp(Webbrowser1.Document);
IHTMLViewer.writeln("При изменении FormStyle вместо WebBrowser-a остаётся белый прямоугольник - возмутительно!!!");
end;
Сделай или:var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
IHTMLViewer: IHTMLDocument2disp;
begin
WebBrowser1.Navigate("about:blank");
IHTMLViewer:=IHTMLDocument2disp(Webbrowser1.Document);
IHTMLViewer.writeln("При изменении FormStyle вместо WebBrowser-a остаётся белый прямоугольник - возмутительно!!!");
end;
или (нелогичный вариант):var
Form1: TForm1;
IHTMLViewer: IHTMLDocument2disp;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("about:blank");
IHTMLViewer:=IHTMLDocument2disp(Webbrowser1.Document);
IHTMLViewer.writeln("При изменении FormStyle вместо WebBrowser-a остаётся белый прямоугольник - возмутительно!!!");
IHTMLViewer := nil;
end;
← →
Мастерок © (2007-01-29 05:14) [2]Вот блин - не действует
Пробовал оба варианта.
← →
DrPass © (2007-01-29 12:13) [3]Цитата из справки Delphi:
"Note: It is not advisable to change FormStyle at runtime."
Чисто умозрительно - попробуй это
WebBrowser1.Navigate("about:blank");
IHTMLViewer:=IHTMLDocument2disp(Webbrowser1.Document);
IHTMLViewer.writeln("При изменении FormStyle вместо WebBrowser-a остаётся белый прямоугольник - возмутительно!!!");
делать и после изменения стиля
← →
umbra © (2007-01-29 13:43) [4]
> WebBrowser окрашивается полностью в белый цвет
при измененииFormStyle
меняется хендл формы. ПосколькуTWebBrowser
- однопоточный СОМ-сервер, то его работа держится на сообщениях, которые посылаются окну-контейнеру (форме). Если хендл формы изменился, а веб-броузер не получает сообщений и, соответственно не знает, что делать.
Попробуйте после измененияFormStyle
присвоить значение хендла формы св-вуWebBrowser1.ParentWindow
← →
TIF © (2007-01-29 16:03) [5]Люди, может чуть не в тему, но как сделать Web Browser невидимым? А то у него свойства visible нет...
← →
umbra © (2007-01-29 16:37) [6]
WebBrowser.Application.Visible
?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.075 c