Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Смерть 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
2-1172754047
Ivolg
2007-03-01 16:00
2007.03.25
Отключение кнопок


15-1172507241
Calibr
2007-02-26 19:27
2007.03.25
Прозрачность


15-1172575389
Empleado
2007-02-27 14:23
2007.03.25
"Blood Diamond"


4-1163149202
Natalex
2006-11-10 12:00
2007.03.25
Запуск компоненты TService


2-1172825501
dsa256
2007-03-02 11:51
2007.03.25
Сборка и отправка RAW пакета =)