Показать сообщение отдельно
  #2  
Старый 26.04.2018, 08:56
Аватар для LIONSMILE
LIONSMILE LIONSMILE вне форума
Новичок
 
Регистрация: 19.03.2018
Сообщения: 51
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Добавлю немного.
Вот сам код програмки (чтобы было понятно как работает 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 вкладку браузера. Как победить пока не придумал.
Ответить с цитированием