Добавлю немного.
Вот сам код програмки (чтобы было понятно как работает PageControl и WebBrouser):
Код:
procedure TForm1.CreateNewTab(Title : string); //Создаем новую вкладку в PageControl
var
tabsheet : TTabSheet;
WB : TWebBrowser;
begin
tabsheet := TTabSheet.Create(PageControl1);
tabsheet.Visible := true;
tabsheet.Caption := Title;
tabsheet.PageControl := PageControl1;
PageControl1.ActivePage := tabsheet; // Делаем новую вкладку активной
WB := TWebBrowser.Create(self); // Создаем на ней WebBrowser
TWinControl(WB).Parent := TabSheet;
WB.Align := alClient; // Распахиваем его на всю вкладку
WB.OnNewWindow2 := WebBrowser1NewWindow2; // Назначаем обработчик события OnNewWindow2
TabSheet.Tag := Integer(WB); // Запоминаем как браузер для TabSheet
end;
procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
begin
CreateNewTab('Обработанный листинг кода'); // Создаем новую вклакду в PageControl
ppDisp := TWebBrowser(PageControl1.ActivePage.Tag).DefaultDispatch; //Кладем на нее WebBrowser
end;
procedure TForm1.Button1Click(Sender: TObject); //Запрос на сайт (нажатие кнопки на сайте)
var WB : TWebBrowser;
begin
html_tag:= WebBrowser1.OleObject.Document.forms.item(0).elements;
for i:=0 to (html_tag.Length-1) do
begin
if html_tag.item(i).value = 'Show Highlighted' then //ищем элемент со значением "Show Highlighted" он же кнопка
html_tag.item(i).click; // и нажимаем на него
end;
end;
procedure TForm1.Button2Click(Sender: TObject); //Управление элементами на странице, закидываем текст и выбираем синтаксис
begin
html_tag:= WebBrowser1.OleObject.Document.forms.item(0).elements;
for i:=0 to (html_tag.Length-1) do
begin
if html_tag.item(i).name = 'code' then //ищем элемент с именем "code" - поле для ввода кода
html_tag.item(i).value:= (Memo1.Text); //и заливаем в него текст из Мемо
if html_tag.item(i).name = 'class' then //ищем элемент с именем "Class" - выбираем в комбобоксе тип синтаксиса
html_tag.item(i).value:= (ComboBox1.Text); //и присваиваем ему значение из комбобокс на форме (значения записаны в самом комбобокс)
end;
end;
procedure TForm1.Button3Click(Sender: TObject); //Грузим исходный файл TXT, XML
begin
openDialog1.InitialDir := GetCurrentDir;
if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TForm1.Button4Click(Sender: TObject); //Сохраняем полученный документ в HTML, MHT файл на выбор при помощи функций OLE enumeration
begin
WebBrowser1.ExecWB(OLECMDID_Saveas,OLECMDEXECOPT_PROMPTUSER);
end;
procedure TForm1.Button5Click(Sender: TObject); //Выход
begin
close
end;
procedure TForm1.Button6Click(Sender: TObject); //Печатаем
begin
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT);
end;
procedure TForm1.Button7Click(Sender: TObject); //Предпросмотр
begin
WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT);
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Button1.Enabled := True;
Button2.Enabled := True;
end;
procedure TForm1.FormCreate(Sender: TObject); //загрузка стартовой страницы
begin
WebBrowser1.Navigate('http://www.planetb.ca/projects/syntaxHighlighter/');
end;
Все работает нормально, проблемы только с сохранением, ну и предпросмотр соответственно показывает 1 вкладку браузера. Как победить пока не придумал.