Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TWebbrowser - Tabsheets (https://www.delphipraxis.net/31403-twebbrowser-tabsheets.html)

schuetze09 8. Okt 2004 15:29


TWebbrowser - Tabsheets
 
Hallo,

ich bin auch gerade dabei mir einen kleinen Browser mit Tabs zu basteln, leider habe ich mit diesem Tabs noch so meine Probleme.
Wenn ich eine Seite in einem neuen Fenster öffne klappt das auch. Wenn ich in der URL-Leiste eine neue Seite eingebe, wird sie nicht in dem gerade sichtbaren Tabsheet angezeigt....sondern in einem anderen... das ist mein Problem.?!?!?


MfG
Schuetze09

Pr0g 8. Okt 2004 15:39

Re: TWebbrowser - Tabsheets
 
hast du auf jedem Tabsheet eine TWebbrwser Instanz? Wie sieht dein Code aus um zu ermitteln welches Tabsheet aktuell sichtbar ist, um den Webbrowser auf diesem anzusprechen?

MfG Pr0g

schuetze09 8. Okt 2004 15:46

Re: TWebbrowser - Tabsheets
 
Also damit ertslle ich eine neue Instanz:

Delphi-Quellcode:
procedure TARowser.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
  TabSheet := TTabSheet.Create(ARowser.pagecontrol1);
  with TabSheet do
  begin
    PageControl := ARowser.pagecontrol1;
  end;
  Web := TWebbrowser.CreateParented(TabSheet.Handle);
  TabSheet.InsertControl(Web);
  TWinControl(Web).align := alClient;
  ppDisp := Web.DefaultDispatch;
  Web.OnNewWindow2 := Webbrowser1NewWindow2;
  Web.OnCommandStateChange := Webbrowser1CommandStateChange;
  web.OnDocumentComplete := Webbrowser1documentcomplete;
  Web.OnNavigateComplete2 := Webbrowser1NavigateComplete2;
  Web.OnProgressChange := Webbrowser1ProgressChange;
  Web.OnstatusTextChange := Webbrowser1StatusTextChange;
  Pagecontrol1.Pages[pagecontrol1.PageCount - 1].caption := 'Lade...';
  PageControl1.ActivePage:=PageControl1.Pages[pagecontrol1.PageCount - 1];
end;
so will ich auf dem aktuellen Tabsheet den Webbrowser ansprechen:

Delphi-Quellcode:
procedure TARowser.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN
    then begin
           if PageControl1.ActivePageIndex <= 0
           then begin
                  WebBrowser1.Navigate(ComboBox1.Text);
                  WebBrowser1.SetFocus;
                end
           else with PageControl1.ActivePage do
                begin
                   Web.Navigate(ComboBox1.Text);
                end;
         end
end;

Pr0g 8. Okt 2004 17:12

Re: TWebbrowser - Tabsheets
 
Ist "Web" eine normale Variable? Ich denke mal du würdest nen Array of TWebBrowser brauchen, da du doch mehrere erstellst.

MfG Pr0g

API 8. Okt 2004 18:52

Re: TWebbrowser - Tabsheets
 
Hallo

Sind TabSheet und Web globale Variablen?
Deklariere sie doch lokal.

Delphi-Quellcode:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
var
 TabSheet: TTabSheet;
 Web: TWebbrowser;
begin
...

und ändere das:

Delphi-Quellcode:
 ... else with PageControl1.ActivePage do
                begin
                   with PageControl1.ActivePage.Controls[0] as TWebbrowser do
                     Navigate(ComboBox1.Text);
                end; ...

schuetze09 9. Okt 2004 12:53

Re: TWebbrowser - Tabsheets
 
@API

Hallo, was soll ich sagen: DANKE!!! Funktioniert wunderbar :-D
Schön das man in diesem Forum so schnelle Hilfe bekommt...

@ALL

Und wie bekomme ich es jetzt hin das, wenn ich ein Popup-Menü öffne und auf "Neuer Tab" klicke, sich ein neuer öffnet??


MfG

schuetze09

Pr0g 10. Okt 2004 17:02

Re: TWebbrowser - Tabsheets
 
Zitat:

Zitat von schuetze09
Und wie bekomme ich es jetzt hin das, wenn ich ein Popup-Menü öffne und auf "Neuer Tab" klicke, sich ein neuer öffnet??

Genauso, wie du bisher neue Tabs anlegst :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz