AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt...
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt...

Ein Thema von Teklab · begonnen am 23. Mai 2005 · letzter Beitrag vom 25. Mai 2005
Antwort Antwort
Teklab

Registriert seit: 28. Apr 2004
Ort: Stralsund
58 Beiträge
 
#1

Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt...

  Alt 23. Mai 2005, 20:51
Hallo,

ich nutze für meinen WebBrowser die Standard TWebBrowser Komponente.
Wenn man das Programm startet läd er im ersten Tabsheet eine Seite,
wenn ich dann auf Links und so klicke funzt der Vor und Zurück Button
wunderbar.

Doch wenn ich nun ein "Link im neuen Fenster" Befehl ausführe, wird
ein neues Tabsheet mit einem neuen WebBrowser geöffnet und der Vor und
Zurück Button stellt sich auf null...


Was kann ich dagegen tun? Alles in Array auslagen? kam mir irgendwie in
den Sinn... aber wie oder was schlagt ihr so vor?
Besucht meine Website www.teklab.de
oder www.cneumann.info
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 23. Mai 2005, 23:41
Hallo,

Schau dir mein Mini Webbrowser Demo an.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 23. Mai 2005, 23:44
Zitat von Teklab:
Doch wenn ich nun ein "Link im neuen Fenster" Befehl ausführe, wird
ein neues Tabsheet mit einem neuen WebBrowser geöffnet und der Vor und
Zurück Button stellt sich auf null...
Wohin soll es denn in dem neuen TWebBrowser zurückgehen? Es gibt ja nichts "davor".
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Teklab

Registriert seit: 28. Apr 2004
Ort: Stralsund
58 Beiträge
 
#4

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 24. Mai 2005, 07:57
Ach so, ich meine ja auch wenn ich wieder auf den ersten Tabsheet klicke und das erste BrowserFenster wieder
angezeigt wird sind die buttons immer noch inaktiv.
Besucht meine Website www.teklab.de
oder www.cneumann.info
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#5

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 24. Mai 2005, 08:38
Naja, hört sich halt nach einem Fehler an, bei dem du vergisst, die Buttons wieder zu aktivieren.
Du könntest ruhig auch ein bisschen Code posten, damit wir nicht hellsehen müssen

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Teklab

Registriert seit: 28. Apr 2004
Ort: Stralsund
58 Beiträge
 
#6

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 24. Mai 2005, 08:53
Nein ich vergesse ihn nicht zu aktivieren, er nimmt dann nur die Haltung des neuen Tabsheets/Browsers an, da der neu ist setzt er die Vor und Zurück Buttons auf Null.

1. klicke ich im neuen Fenster auf einen Link dann wird der Zurück Button aktiviert und klicke ich nun Tabsheet 1 an ist der Zurück Button immer noch aktiv obwohl es ja die Startseite war. Und es kommt beim klick dann ein Error.

2. genauso ist es umgekehrt.

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = Chr(vk_Return) then
WebBrowser1.Navigate(Edit1.Text);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if CheckBox1.Checked then
WebBrowser1.Refresh;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
WebBrowser1.GoBack;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
WebBrowser1.GoForward;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
WebBrowser1.Stop;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
WebBrowser1.Refresh;
end;

procedure TForm1.FormResize(Sender: TObject);
var
  r: TRect;
const
  SB_GETRECT = WM_USER + 10;
begin
  Edit1.Width := Form1.Width-68;
  Statusbar1.Perform(SB_GETRECT, 0, Integer(@R));
  ProgressBar1.Parent := Statusbar1;
  ProgressBar1.SetBounds(10, r.Top+2, 102, r.Bottom - r.Top-4);
with Statusbar1 do
begin
  Panels[1].Width := Width-125;
  Panels[0].Width := 125;
  Refresh;
end;
end;

procedure TForm1.WebBrowser1ProgressChange(ASender: TObject; Progress,
  ProgressMax: Integer);
var
  Position: Integer;
begin
  try
    if ProgressMax <> 0 then
    begin
      ProgressBar1.Enabled := true;
      Position := (Progress * 100) div ProgressMax;
      ProgressBar1.Position := Position;
    end;
  except
  end;
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  ProgressBar1.Position := 0;
  ProgressBar1.Enabled := false;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Webbrowser1.GoHome;
  FormResize(nil);
  Bitbtn1.Enabled := false;
  Bitbtn2.Enabled := false;
  Timer2.Enabled := false;
end;

procedure TForm1.WebBrowser1StatusTextChange(ASender: TObject;
  const Text: WideString);
begin
  StatusBar1.Panels[1].Text := Text;
end;

procedure TForm1.Schliessen1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.WebBrowser1CommandStateChange(ASender: TObject;
  Command: Integer; Enable: WordBool);
begin
  case Command of
    CSC_NAVIGATEBACK: Bitbtn1.Enabled := Enable;
    CSC_NAVIGATEFORWARD: Bitbtn2.Enabled := Enable;
  end;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  Webbrowser1.GoHome;
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
  WebBrowser1.GoSearch;
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
begin
  WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
end;

procedure TForm1.BitBtn8Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.teklab.de/chat');
end;

procedure TForm1.BitBtn9Click(Sender: TObject);
begin
if LinkManager = 1 then begin
PageControl2.Visible := false;
LinkManager := 0;
end
else begin
PageControl2.Visible := true;
LinkManager := 1;
end;
end;

procedure TForm1.Seiteeinrichten1Click(Sender: TObject);
begin
  WebBrowser1.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER);
end;

procedure TForm1.Drucken1Click(Sender: TObject);
begin
  WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
end;

procedure TForm1.Druckvorschau1Click(Sender: TObject);
begin
  WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER);
end;

procedure TForm1.Einstellungen1Click(Sender: TObject);
begin
  WebBrowser1.ExecWB(OLECMDID_PROPERTIES, OLECMDEXECOPT_PROMPTUSER);
end;

procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
  var
TabSheet: TTabSheet;
Web: TWebbrowser;
begin
  if Timer2.Enabled = false then Timer2.Enabled := true;
  if PopupBlocker < 2 then begin
  TabSheet := TTabSheet.Create(Form1.PageControl1);
  with TabSheet do
  begin
    PageControl := Form1.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.OnProgressChange := Webbrowser1ProgressChange;
  Web.OnstatusTextChange := Webbrowser1StatusTextChange;
  Pagecontrol1.Pages[pagecontrol1.PageCount - 1].caption := WebBrowser1.LocationName;
  PageControl1.ActivePage:=PageControl1.Pages[pagecontrol1.PageCount - 1];
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  PopupBlocker := PopupBlocker+1;
  if PopupBlocker = 20 then begin
  PopupBlocker := 0;
  Timer2.Enabled := false;
  end;
end;
Falls noch jemand weiß, wie ich über das Menü -> Bearbeiten -> Suche
Die Suchfunktion ausführen kann wäre es mir auch ne große Hilfe *G*
Besucht meine Website www.teklab.de
oder www.cneumann.info
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 24. Mai 2005, 10:01
Wenn du mein Kommentar ignorierst, dann wiederhole ich ihn gerne:

Schau dir doch mal mein Mini Webbrowser Demo an.
Dort findest du auch eine "Menü -> Bearbeiten -> Suche" und vieles mehr....
Thomas
  Mit Zitat antworten Zitat
Teklab

Registriert seit: 28. Apr 2004
Ort: Stralsund
58 Beiträge
 
#8

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 24. Mai 2005, 13:46
Ja, da steig ich irgendwie noch weniger durch, da dort was mit CurrentWB steht.
und dazu noch einige andere Dateien benötigt werden und ich nicht alles nutzen
will. ich machs nun ganz einfach. Ist sicher dumm

aber ich weiß es leider nicht besser. Da mein Programm eh schon XML Datenbanken
verwendet werde ich einfach Tabellen anlegen wo von jedem TabSheet die Seite
gespeichert wird und die danach einfach wieder gelöscht wird.
Besucht meine Website www.teklab.de
oder www.cneumann.info
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 25. Mai 2005, 07:54
Du kannst einfach fuer jeden Webbrowser den Vor & Zurueck Button Status speichern,
indem du:

// Den Webbrowser um Vor & Zurueck Status erweiterst:

Delphi-Quellcode:
type
  TWebbrowser = class(SHDocVw.TWebbrowser)
  private
    // Save CSC_NAVIGATEFORWARD and CSC_NAVIGATEBACK states
    FNavForward: Boolean;
    FNavBack: Boolean;
  public
  end;
.....

// Im OnCommandStateChange werden die Stati gesetzt

Delphi-Quellcode:
procedure TfrmMyBrowser.WebBrowser1CommandStateChange(Sender: TObject;
  Command: Integer; Enable: WordBool);
begin
  case Command of
    CSC_NAVIGATEBACK: begin
        // CSC_NAVIGATEBACK Status vom aktuellen Webbrowser speichern
        TWebbrowser(Sender).FNavBack := Enable;
        ToolbtnBack.Enabled := Enable;
      end;
    CSC_NAVIGATEFORWARD: begin
        // Save CSC_NAVIGATEFORWARD Status vom aktuellen Webbrowser speichern
        TWebbrowser(Sender).FNavForward := Enable;
        ToolBtnForward.Enabled := Enable;
      end;
  end;
end;
// Wenn der User ein anderes Tab auswaehlt, dann den Status
// vom Vor u. Zurueck Button aendern.

Delphi-Quellcode:
procedure TfrmMyBrowser.PageControlChange(Sender: TObject);
begin
  // Set Toolbutton State Back Forward
  ToolbtnBack.Enabled := TWebbrowser(ActivePage.Controls[0]).FNavBack;
  ToolBtnForward.Enabled := TWebbrowser(ActivePage.Controls[0]).FNavForward;
end;
Bei erzeugen eines neuen Browsers muss immer

Delphi-Quellcode:
NeuerWebbrowser.FNavForward := False;
NeuerWebbrowser.FNavBack := False;
gesetzt werden
Thomas
  Mit Zitat antworten Zitat
Teklab

Registriert seit: 28. Apr 2004
Ort: Stralsund
58 Beiträge
 
#10

Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.

  Alt 25. Mai 2005, 08:52
Thx das war jetzt verständlich werd es gleich mal ausprobieren.
Besucht meine Website www.teklab.de
oder www.cneumann.info
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 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