Turbo Delphi - Přístup ke komponentám
Dobrý den,
na formuláři je PageControl. Na každém jeho TabSheetu se dynamicky vytváří buď jedna komponenta (TWebBrowser) nebo devatenáct komponent (9xTImage,9xTLabel,TWebBrowser). Často k TWebBrowseru přistupuji (Navigate, Visible). Jak přistupovat? (TWebBrowser je vždy poslední)
Přistupuji přes vlastní funkci:
GetBrowser(Index);
Index udává, na kterém TabSheetu je onen WebBrowser (který TabSheet je jeho parent). Samotná funkce vypadá takto:
Result:=PageControl1.Pages[Index].Controls[PageControl1.Pagec[Index].ControlCount];
S touto funkcí s WebBrowserem pracuji jako s TComponent a ne jako s TWebBrowser. Jak mám funkci změnit, abych pracoval rovnou s TWebBrowser?
Moje snahy byly doposud marné:
Result:=TWebBrowser(PageControl1.Pages[Index].Controls[PageControl1.Pagec[Index].ControlCount]);
Result:=PageControl1.Pages[Index].Controls[PageControl1.Pagec[Index].ControlCount] as TWebBrowser;
Děkuji
Pokud je ten webbrowser pouze jeden, bude mnohem jednodussi si v ramci formulare v private nadeklarovat promennou a do ni priradit odkaz na ten webbroser. Pak to nemusis resit a pohodlne k nemu pristoupis.
Nie je to najlepšie/najuniverzálnejšie riešenie ale asi takto (narýchlo):
Kdyz budu webBrowser vytvaret, nebudu si deklarovat lokalni promennou, ale pouziju promennou WB.
Pak budu pres tu promennou k WebBrowseru pristupovat, nemusim nic pretypovavat a spolehat se na to, ze je WebBrowser posledni kompoennta.
Jinak ten tvuj kod bych opravil na:
S tou premennou deklarovanou vo vnútri triedy ako private to nepôjde...(musíš pozrieť jeho staršie predchádzajúce príspevky, čo ako vytvára/ruší za behu programu)
a za druhé: aj tak by si nemohol pristupovať ku jednotlivým wb cez jednu premennú, keď práve neukazuje na konkrétnu inštanciu (fuj aké slovo...).
Ja by som môj kód ešte poupravil: