[DELPHI] Procedura TWebBrowser na PageControl


(Kamil321) #1

Mam Delphi7 i robię przeglądarkę z "kartami" czy jak kto woli "zakładkami". Gdy chcę odświeżyć WebBrowsera na aktywnej karcie za pomocą ImageButtona robię:

procedure TForm1.ImageButton4Click(Sender: TObject);

begin

(PageControl1.ActivePage.Controls[0] as TWebBrowser).Refresh;

end;

Ale co mam zrobić jeśli potrzebuję zrobić coś w zdarzeniu WebBrowsera z aktywnej karty? Gdy jeszcze nie miałem kart w przeglądarce, miałem taki kod, który sprawiał, że działał pasek postępu :slight_smile: :

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,

  ProgressMax: Integer);

begin

ProgressBar1.Max := ProgressMax; ProgressBar1.Position := Progress;

end;

Ale TForm1.WebBrowser1 byłoby, gdybym miał wrzuconego WebBrowsera luźno na formę, a nie kilka WebBrowserów na różnych kartach w PageControlu...

Wszystkich, którzy dokładnie przeczytali to, co napisałem i zrozumieli :lol: proszę o pomoc.


(Rkizeweter) #2

Za mało powiązań jak dla mnie pomiędzy ProgressBarem i PageControll w treści posta. Nie wiem co chcesz zrobić.


(Kamil321) #3

Chyba nie do końca zrozumiałeś...

Po kolei:

Mam cośtakiego:

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer);

I to działało, gdy WebBrowser1 miałem położony na Form1. Teraz mam go automatycznie tworzonego na kartach PageControla. W kodzie:

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer);

chodzi o to, że dana rzecz zostanie wykonana, gdy WebBrowser1 zmieni swój status (ProgresChange), a ja chcę tak:

rzecz zostanie wykonana, gdy WebBrowser, który znajduje się na aktywnej karcie, zmieni swój status (ProgresChange).

Rozumiesz teraz o co mi chodzi? Jak napisać procedurę webbrowsera z aktywnej karty?


(system) #4

Podczas tworzenia tego WebBrowsera na karcie.

var Web:TWebBrowser;

begin

   Web:=TWebBrowser.Create;

   Web.Parent:=PageControl1.ActivePage

   Web.Align:=alClient;

   Web.OnProgressChange:=WebBrowser1ProgressChange; // właśnie tu

end;

(Kamil321) #5

Wielkie dzięki 13tySmok, Może nie zrobiłem tego tak jak ty, ale ważne, że działa przez jedną linijkę :lol: :

WebBrowser.OnProgressChange:=WebBrowser1ProgressChange;

Do zamknięcia...