Jak dać WebBrowser do zakładki w PageControl?

0

Jak w temacie. Jak to zrobić? Ten kod nie działa - parent:

procedure TForm1.Button3Click(Sender: TObject);
var zakladka : TTabSheet;
    WebBrowser1     : TWebBrowser;
begin
zakladka := TTabSheet.Create(Self);
zakladka.Caption := 'Nowa';
zakladka.PageControl := PageControl1;

WebBrowser1 := TWebBrowser.Create(Self);
WebBrowser1.Align := alClient;
WebBrowser1.Parent := zakladka;

zakladka.Show;
end;
0

Na moje oko to najpierw trzeba przypisac parenta

WebBrowser1.Parent := zakladka;

a potem właściwość align

 WebBrowser1.Align := alClient;

ale nie sprawdzałem tego więc może się mylę.

0

WebBrowser1 := TWebBrowser.Create(zakladka);

0

Nadal nie działa :(

0

Hmm.. nie bardzo to rozumiem , jakoś dziwnie mi ten Twebrowser działa. Doszedłem do tego, że jeśli się chce go stworzyć dynamicznie to można tak:

var t:Twebbrowser;
begin
t := TWebBrowser.Createparented(tabsheet2.handle);//tabsheet2 to jakas zakladka pagecontrola 
t.HandleNeeded;//właściwość parent jest readonly więc niemożna sobie przypisac jej controlki jak to się zwykle robi przy obiektach pochodnych od Tcontrol
t.allign:=alclient;// niby sie spoko kompiluje ale efektów nie widać
end;

Webbrowser t pokazuuje sie na ekranie. Mozna zmieniac jego top, left width, height ale z jakichś powodów nie działa właściwość align. Może ktoś wie dlaczego i co zrobić by działała?

0

Już wiem. Tego parenta trzeba na nim wymusić poprzez rzutowanie.

t := TWebBrowser.Create(self);
Twincontrol(t).Parent:=tabsheet2;
t.Align := alclient;// teraz już align działa
0

Już się cieszyłem a tu dupa Może coś nie tak?

procedure TForm1.Button3Click(Sender: TObject);
var t:Twebbrowser;
begin
t := TWebBrowser.Create(self);
Twincontrol(t).Parent:=tabsheet1;
t.Align := alclient;// teraz już align działa
end;
0

No musisz

var t:Twebbrowser;

zadeklarować jako zmieną globalną , lub w klasie Tform1 a nie lokalną w procedurze buttonclick bo po wyjściu z tej procedury ginie jej adres.

0

Znajomy mnie poratował :)

procedure TForm1.Button3Click(Sender: TObject);
var zakladka : TTabSheet;
   t:Twebbrowser;
begin
TabSheet1:= TTabSheet.Create(PageControl1);
   TabSheet1.Caption:= 'WebBrowser.PageName';
   TabSheet1.PageControl := PageControl1;
   WebBrowser1:= TWebBrowser.Create(TabSheet1); //to jest ważne
   TWinControl(WebBrowser1).Parent:= TabSheet1;  //i to też
   WebBrowser1.Align:= alClient;
end;

Dzięki za dobre chęci :P

0

No to przeciez to jest dokładnie to co napisałem, tylko , że

 WebBrowser1:= TWebBrowser.Create(TabSheet1);

może być zastapione przez

WebBrowser1:= TWebBrowser.Create(form1);

ale ważne by zmienna WebBrowser1 byłą zadeklarowqana "wyżej" niż wewnątrz procedury buttonclick a czy ona sie nazywa "webbrowser1" czy "t" to nie ma zanczenia:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1