![]() |
Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt...
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? |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
Hallo,
Schau dir mein Mini Webbrowser Demo an. |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
Zitat:
|
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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. :) |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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 |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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:
Falls noch jemand weiß, wie ich über das Menü -> Bearbeiten -> Suche
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; Die Suchfunktion ausführen kann wäre es mir auch ne große Hilfe *G* |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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.... |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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. |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
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:
// Wenn der User ein anderes Tab auswaehlt, dann den Status
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; // vom Vor u. Zurueck Button aendern.
Delphi-Quellcode:
Bei erzeugen eines neuen Browsers muss immer
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;
Delphi-Quellcode:
gesetzt werden
NeuerWebbrowser.FNavForward := False;
NeuerWebbrowser.FNavBack := False; |
Re: Webbrowser mit Tabsheets, Zurück/Vorwärts Button spinnt.
Thx das war jetzt verständlich werd es gleich mal ausprobieren. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz