Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit PageControl (https://www.delphipraxis.net/135721-problem-mit-pagecontrol.html)

d3zemb3r 16. Jun 2009 16:33


Problem mit PageControl
 
Hallo,
ich erstelle durch einen Button eine neue Seite im PageCOnrtol.

Hierrauf wird nun ein TWebbrowser erzeugt.

WEnn ich nun die Seite wechsel, soll er auch in der adresseleiste die aktuelle URL aus dem aktuellen Tab auslesen.

Welche Methode im PageControl ist richtig?

mirage228 16. Jun 2009 16:51

Re: Problem mit PageControl
 
Wo steht die Adresse denn drin? Im Titel-Text der PageControl-Seite?
Wenn ja, dann:
Delphi-Quellcode:
URL := PageControl1.ActivePage.Caption;
Viele Grüße

d3zemb3r 16. Jun 2009 16:52

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Wo steht die Adresse denn drin? Im Titel-Text der PageControl-Seite?
Wenn ja, dann:
Delphi-Quellcode:
URL := PageControl1.ActivePage.Caption;
Viele Grüße

nein, im TWebbrowser1.LocationURL

mirage228 16. Jun 2009 16:58

Re: Problem mit PageControl
 
Du könntest einfach jeder TWebBrowser Instanz von Dir das selbe "OnDocumentComplete"-Ereignis zuweisen und dort rein schreibst Du dann:
Delphi-Quellcode:
procedure TForm1.WebBrowserDocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  // Vorrausgesetzt Dein TWebBrowser ist direkt dem TTabSheet untergeordnet.
  ((ASender as TComponent).Parent as TTabSheet).Caption := URL;
end;

d3zemb3r 16. Jun 2009 17:11

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Du könntest einfach jeder TWebBrowser Instanz von Dir das selbe "OnDocumentComplete"-Ereignis zuweisen und dort rein schreibst Du dann:
Delphi-Quellcode:
procedure TForm1.WebBrowserDocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  // Vorrausgesetzt Dein TWebBrowser ist direkt dem TTabSheet untergeordnet.
  ((ASender as TComponent).Parent as TTabSheet).Caption := URL;
end;

Hmm..

ich habe den twebbroser ja in einem tab also auf einer seite
ich will, wenn der tab gewechselt wird, dass dann die url aus dem erzeugten webbrowser in das adress edit eingetragen wird

quendolineDD 16. Jun 2009 17:15

Re: Problem mit PageControl
 
Sozusagen in dem Edit die Adresse des aktuell ausgewählten TPageControl -> TWebBrowser

mirage228 16. Jun 2009 17:15

Re: Problem mit PageControl
 
Ah, jetzt habe ich es verstanden.

Du könntest beim Erzeugen den TWebBrowser dem TTabSheet zuordnen:
Delphi-Quellcode:
TabSheet.Tag := Integer(WebBrowser);
Und dann im OnChange des PageControls schreibst Du einfach:
Delphi-Quellcode:
Edit1.Text := TWebBrowser(PageControl1.ActivePage.Tag).LocationURL;
Viele Grüße

Edit: Rechtschreibfehler

d3zemb3r 16. Jun 2009 17:19

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Ah, jetzt habe ich es verstanden.

Du könntest beim Erzeugen den TWebBrowser dem TTabSheet zuordnen:
Delphi-Quellcode:
TabSheet.Tag := Integer(WebBrowser);
Und dann im OnChange des PageControls schreibst Du einfach:
Delphi-Quellcode:
Edit1.Text := TWebBrowser(PageControl1.ActivePage.Tab).LocationURL;
Viele Grüße

Undefinierter Bezeichner 'Tab'

mirage228 16. Jun 2009 17:20

Re: Problem mit PageControl
 
Sorry, das sollte natürlich ebenfalls "Tag" heißen. Da hättest Du aber auch ruhig drauf kommen können...

d3zemb3r 16. Jun 2009 17:22

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Sorry, das sollte natürlich ebenfalls "Tag" heißen. Da hättest Du aber auch ruhig drauf kommen können...

Da bekomme ich eine Zugrifssverletzung

youuu 16. Jun 2009 17:22

Re: Problem mit PageControl
 
ignorieren ;)

mirage228 16. Jun 2009 17:25

Re: Problem mit PageControl
 
Zitat:

Zitat von d3zemb3r
Da bekomme ich eine Zugrifssverletzung

Du hast auch jedem TabSheet, wo ein WebBrowser drauf ist, diesen WebBrowser wie eben beschrieben zugewiesen?
Ansonsten baue noch eine Überprüfung ins OnChange des PageControl ein:
Delphi-Quellcode:
  if (PageControl1.ActivePage <> nil) and (PageControl1.ActivePage.Tag <> 0) then
    Edit1.Text := TWebBrowser(PageControl1.ActivePage.Tag).LocationURL else
  Edit1.Text := 'Ungültig oder was auch immer';

d3zemb3r 16. Jun 2009 17:30

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Zitat:

Zitat von d3zemb3r
Da bekomme ich eine Zugrifssverletzung

Du hast auch jedem TabSheet, wo ein WebBrowser drauf ist, diesen WebBrowser wie eben beschrieben zugewiesen?
Ansonsten baue noch eine Überprüfung ins OnChange des PageControl ein:
Delphi-Quellcode:
  if (PageControl1.ActivePage <> nil) and (PageControl1.ActivePage.Tag <> 0) then
    Edit1.Text := TWebBrowser(PageControl1.ActivePage.Tag).LocationURL else
  Edit1.Text := 'Ungültig oder was auch immer';

Was muss ich denn wo zuweise??

mirage228 16. Jun 2009 17:31

Re: Problem mit PageControl
 
Um mich mal selbst zu zitieren:
Zitat:

Zitat von mirage228
Du könntest beim Erzeugen den TWebBrowser dem TTabSheet zuordnen:
Delphi-Quellcode:
TabSheet.Tag := Integer(WebBrowser);


d3zemb3r 16. Jun 2009 17:35

Re: Problem mit PageControl
 
Zitat:

Zitat von mirage228
Um mich mal selbst zu zitieren:
Zitat:

Zitat von mirage228
Du könntest beim Erzeugen den TWebBrowser dem TTabSheet zuordnen:
Delphi-Quellcode:
TabSheet.Tag := Integer(WebBrowser);


Das muss da hin, wo der Tab generiert wird oder????

Also:
pageControl.Tag := Integer(TWebBrowser);

quendolineDD 16. Jun 2009 17:42

Re: Problem mit PageControl
 
Weißt du überhaupt was du da ansatzweise machst? Das scheint mir ganz und gar nicht so.

d3zemb3r 16. Jun 2009 17:45

Re: Problem mit PageControl
 
Zitat:

Zitat von quendolineDD
Weißt du überhaupt was du da ansatzweise machst? Das scheint mir ganz und gar nicht so.

Wenn ich es wüsste, würde ich ja nicht fragen.

Ich weiss leider nicht, wie es geht, sry

mirage228 16. Jun 2009 17:47

Re: Problem mit PageControl
 
Zitat:

Zitat von quendolineDD
Weißt du überhaupt was du da ansatzweise machst? Das scheint mir ganz und gar nicht so.

Mir auch nicht.

Aber da ja gilt: :dp: - will ich mal nicht so sein.

Ein PageControl hat einzelne Seiten ("Tabs"), die heißen TabSheets (Klasse TTabSheet).
Wenn Du nun also einen ein neuen Tab in das PageControl erzeugst und dabei auch den dazugehörigen TWebBrowser erzeugst, stellst Du sicher, dass Du diese Zuordnung von Tab und WebBrowser später wieder abgreifen kannst (daher die Zuweisung der neuen TWebBrowser-Instanz über das Tag-Feld an das Tabsheet - und nicht ans PageControl). Code möchte ich Dir dazu keinen geben, Du sollst Dir das bitte selbst erarbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 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-2025 by Thomas Breitkreuz