Witam
Pisze program który ma logowac sie na sronę banku, sprawdzić stan konta i wylogowac się.
Logowanie do mojego banku sklada sie z dwóch stron na ktorych wpisuje kody, trzecia strona to ta z której odczytuje stan konta. Na początku uzywałem do kazdej strony jednego buttona aby sprawdzac czy wszystko idzie ok ( WebBrowser ). Teraz chcĘ wszystko wcisnąć pod jeden button i mam maly problem bo musze poczekać aż dana strona się zaladuje i wykonać jakieś tam operacje i znowu czekać na nastepną strone.
Poradziłem sobie z tym tak : w zdarzeniu onDocumentComplete wywoluje procedure wczytana
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
wczytana;
end;
Procedura wczytana wyglada tak :
procedure TForm1.wczytana;
begin
case nr of
1 : Button2Click(self);
2 : Button3Click(self);
3 : Button4Click(self);
4 : Button6Click(self);
end;
end;
i teraz Naciskam button 1
procedure TForm1.Button1Click(Sender: TObject);
begin
AIB := TAIB.Create;
AIB.opensite(@WebBrowser1);
nr := 1;
end;
stronka się wczytuje, zdarzenie onDocumentComplete wywoluje procedure wczytana ktora wywoluje Button2Click, button2click ustawia nr:=2; i znowu strona sie wczytuje i tak az do konca.
Wiec z tego wynika że na ile stron chcĘ poczekać tyle procedurek musze napisać :/
I tu moje pytanie czy nie da się tego zrobić jakoś tak ??
<pseldokod>
openSite('http://.......');
czekaj_az_sie_otworzy;
wykonaj_operacje;
open_site (inna_strona);
czekaj_az_sie_otworzy;
od razu znaczam że nie chcĘ czekać jakiegoś czasu np Sleep(10000); tylko poczekać na zdarzenie OnDocumentComplet. Czy to jest mozliwe ???
I jeszcze jedno czy zamiast na koncu kazdej procedury ktora powinna poczekac zamiast uzywac zmiennej globalnej tu nr da sie to zrobic jakos tak WebBrowser.onDocumentComplete:=Button2Click ?
pozbyłbym sie w ten sposób procedury wczytana; i jednej zmiennej globalnej.
Ma ktoś może jakiś ciekawy sposób na WebBrowsera ?
Sorry jeśli to nie trzyma się kupy ale już za długo przy tym siedze chyba potrzebuje snu :P