Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser dynamisch generieren und "benamsen"...Wie? (https://www.delphipraxis.net/114264-twebbrowser-dynamisch-generieren-und-benamsen-wie.html)

torud 22. Mai 2008 14:12


TWebbrowser dynamisch generieren und "benamsen"...
 
Hallo Wissende,

ich schreibe gerade an einem kleinen Generator. In diesem kann der user die Anzahl der zu generierenden Seiten angeben. Ich erzeuge dann dynamisch in einem PageControl die Tabs und auf den Tabs dann jeweils eine Webbrowser-Komponente. Nun habe ich aber feststellen müssen, dass man der erzeugten Komponente keinen eigenen Namen geben kann.

Wie kann ich dann diese Komponente ansprechen, wenn ich nicht weiss wie sie heisst?

Den Parent kann man auch nicht so recht zuweisen. Da scheint alles irgendwie anders zu funktionieren, als bei Standardkomponenten.

Desweiteren ist es so, dass ich zwar im Code sagen kann, dass der Webbrowser alClient sein soll, aber er ignoriert dies leider, so dass ich die Grösse manuell setzen muss. Hat das alles einen Grund?

Hier mal mein Code, mit dem ich den Spass derzeit erzeuge:

Delphi-Quellcode:
with pg_preview do
  Begin
    for i := 1 to int_page_count do
      begin
        new_page := TAdvOfficePage.Create(pg_preview);
        new_page.Parent := pg_preview;
        new_page.Caption := siLang1.GetText('str_preview_page') + ' ' + inttostr(i);
        AddAdvPage(new_page);
        myBrowser := TWebBrowser.Create(new_page);
        //myBrowser.Name := nicht zulässig
        myBrowser.Align := alClient; //funzt leider auch nicht
        myBrowser.ParentWindow := new_page.Handle;
        myBrowser.Width := new_page.Width;
        myBrowser.Height:= new_page.Height;
        myBrowser.Navigate('about:blank');
      end;
  end;

torud 22. Mai 2008 14:51

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Also an alle, die auch mal dieses Problem haben sollten. Ich habe nach einer weiteren Suche hier im Forum die Lösung finden können. Damit ist auch das Alignment und Parent-Problem gelöst!

Delphi-Quellcode:
for i := 1 to int_page_count do
  begin
    new_page := TAdvOfficePage.Create(pg_preview);
    new_page.Parent := pg_preview;
    new_page.Caption := siLang1.GetText('str_preview_page') + ' ' + inttostr(i);
    AddAdvPage(new_page);
    myBrowser := TWebBrowser.Create(new_page);
    TWinControl(myBrowser).Name := 'web' + inttostr(i);
    TWinControl(myBrowser).Parent := new_page;
    TWinControl(myBrowser).Align := alClient;
    myBrowser.Navigate('about:blank');
  end;

Bernhard Geyer 22. Mai 2008 14:55

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Zitat:

Zitat von torud
Wie kann ich dann diese Komponente ansprechen, wenn ich nicht weiss wie sie heisst?

Wie wäre es die in einer eigenen List (z.B. myWebs: array of TWebBrowser) zu verwalten. Das Name-Property ist primär gedacht um DFM-Streaming und Membervariable zu synchronisieren.
Zitat:

Zitat von torud
Den Parent kann man auch nicht so recht zuweisen. Da scheint alles irgendwie anders zu funktionieren, als bei Standardkomponenten.

Kann öfter passieren wenn ActiveX-Controls VCL-Propertynamen für was anders "mißbrauchen" einfach auf Basisklasse casten (myBrowser as TControl is m.E. schöner als ein harter Cast).

torud 22. Mai 2008 15:00

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Jo danke, ich habe schon gemerkt, dass das noch nicht der Weisheit letzter Schluss ist, denn ich konnte dann später in einer Schleife den Browser NICHT ansprechen, da er über FindComponent nicht gefunden wurde...Warum auch immer...!?

Delphi-Quellcode:
(myBrowser as TControl).Name  := 'web_' + inttostr(i);
(myBrowser as TControl).Parent := new_page;
Geht so leider nicht, da der linken Seite nicht zugewiesen werden kann...Und nun?

Apollonius 22. Mai 2008 15:02

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Hast du FindComponent auch an der Page (dem Owner) aufgerufen?

torud 22. Mai 2008 15:05

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Zitat:

Zitat von Apollonius
Hast du FindComponent auch an der Page (dem Owner) aufgerufen?

Ok, das war der Grund dafür, dass er es nicht finden konnte. Dummer Anfängerfehler!

inherited 22. Mai 2008 20:54

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Nicht unbedingt Anfängerfehler, nur nicht gewusst, dafür gibt es ja das Forum hier ;)
Schöner wäre es aber die in einem Array oder eine Liste zu verwalten.

torud 22. Mai 2008 21:50

Re: TWebbrowser dynamisch generieren und "benamsen"
 
Dann gib mir doch bitte mal einen Tipp, wie ich das machen könnte. Ich seh nur Bahnhof, da ich Controls noch nie auf eine solche Art verwaltet habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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