Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.077 c
6-1160383751
Альберт
2006-10-09 12:49
2007.03.25
Отправить данные POST ом


3-1167752894
Kley
2007-01-02 18:48
2007.03.25
SQL Запрос


4-1162877920
Yevgeny
2006-11-07 08:38
2007.03.25
как запустить bat-файл из службы?


1-1169887508
Tehnik
2007-01-27 11:45
2007.03.25
TCheckListBox


15-1172518975
Kolan
2007-02-26 22:42
2007.03.25
Подключать ли анлим 256кБ/с если сейчас 1495кб/с





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский