Главная страница
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.04 c
2-1172913668
tytus
2007-03-03 12:21
2007.03.25
Как пролистать ListView до нужной позиции?


2-1172647396
Нуб
2007-02-28 10:23
2007.03.25
Button


3-1167196294
Rentgen
2006-12-27 08:11
2007.03.25
Ошибки в IB при обрыве связи


15-1172502904
IMHO
2007-02-26 18:15
2007.03.25
Посоветуйте утилиту для Интернета


2-1172750857
Sapos
2007-03-01 15:07
2007.03.25
Поиск в БД