Jak dać WebBrowser do zakładki w PageControl?

Jak dać WebBrowser do zakładki w PageControl?
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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;
Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
0

Na moje oko to najpierw trzeba przypisac parenta

Kopiuj
WebBrowser1.Parent := zakladka;

a potem właściwość align

Kopiuj
 WebBrowser1.Align := alClient;

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

HE
  • Rejestracja: dni
  • Ostatnio: dni
0

WebBrowser1 := TWebBrowser.Create(zakladka);

  • Rejestracja: dni
  • Ostatnio: dni
0

Nadal nie działa :(

Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
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:

Kopiuj
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?

Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
0

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

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

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

Kopiuj
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;
Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
0

No musisz

Kopiuj
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

Znajomy mnie poratował :)

Kopiuj
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

Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
0

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

Kopiuj
 WebBrowser1:= TWebBrowser.Create(TabSheet1);

może być zastapione przez

Kopiuj
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:)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.