![]() |
@Sakura: In deinem Code hat das "oleobject" gefehlt!
|
also, weiß schon jemand wie man formularfelder in einer frameseite ausfüllen kann?
z.B: <frameset> <frame name="NavLinks" src="menu.html"> <frame name="Hauptframe" src="index2.html"> </frameset> die felder die ich ausfüllen will, sind im frame "Navlinks". Mit dem Code der hier gepostet wurde, kann man diese Felder aber nicht ausfüllen. Wenn man diese Frameseite aber einzeln öffnet (menu.html), kann man man mit diesem Code machen:
Delphi-Quellcode:
aber es geht eben nicht wenn man das ganze frameset öffnet! und das muss ich irgendwie umgehen können!
WebBrowser1.OleObject.Document.Forms.item('Name des Formulars').Elements.item('Name des Feldes').value := 'Irgendetwas';
|
Es sollte so gehen, wenn der IE den Zugruff über Frames nicht blockt:
Code:
WebBrowser1.OleObject.Document.Frames.item('Name des Frames').Forms.item('Name des Formulars').Elements.item('Name des Feldes').value := 'Irgendetwas'
|
Also ich habe es jetzt so gemacht
Code:
Ich erhalte den EOleError
procedure TForm1.FormCreate(Sender: TObject);
begin Webbrowser1.Navigate('http://www.tmssoftware.com'); end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.OleObject.Document.Frames.item('MAIN').Forms.item('loginform').Elements.item('REGEMAIL').value := 'Irgendetwas' end; "Die Methode 'Forms' wird vom Automatisierungsobject nicht unterstützt" |
Code:
Dann wohl eher so :D
WebBrowser1.OleObject.Document.Frames.item('Name des Frames').[color=#ff0000]Document.[/color]Forms.item('Name des Formulars').Elements.item('Name des Feldes').value := 'Irgendetwas'
|
Vielen Dank, das klappt schon mal.
Jetzt aber eine Frage. So benutze ich es jetzt
Code:
Ich rufe also die Seite 'http://www.tmssoftware.com' auf.
procedure TForm1.FormCreate(Sender: TObject);
begin Webbrowser1.Navigate('http://www.tmssoftware.com'); end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('REGEMAIL').value := 'Irgendetwas' end; Das Formular was ich ausfüllen will kommt aber erst wenn ich auf "Login" klicke. Wie kann ich also die Seite "http://www.tmssoftware.com/asp/reg_input.asp" im Mainframe aufrufen damit ich das Formular ausfüllen kann? Danke schon mal |
Code:
Mit oder ohne .Document, wahrscheinlich ohne.
WebBrowser1.OleObject.Document.Frames.item('MAIN')[color=#ff0008].Document[/color].location.href := 'http://www.Delphi-PRAXiS.net/';
|
Hm, danke aber das klappt nicht so wie ich es mir vorgestellt habe.
Also
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin Webbrowser1.Navigate('http://www.tmssoftware.com'); end;
Code:
Wenn ich jetzt Button 1 clicke, kommt eine zugriffsverletzung.
procedure TForm1.Button1Click(Sender: TObject);
begin with WebBrowser1 do begin OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('REGEMAIL').value := 'ensacom@t-online.de'; OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('REGCODE').value := 'Passwort'; OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('B1').value := 'Passwort'; end; end; Klicke ich im Webbrowser auf login und dann auf Button1, wird das Formular angezeigt und ausgefüllt. Ich will also nun das beim Start gleich das Formular im MainFrame angezeigt wird. Wenn ich aber
Code:
ins onCreate schreibe egal ob allein oder hinter webbrowser1.navigate.
WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.location.href := 'http://www.tmssoftware.com/asp/reg_input.asp';
kommt immer eine Zugriffsverletzung. Wie muß ich es also richtig aufrufen, so das beim start gleich die Seite mit dem Formular im Mainframe angezeigt wird? Vielen Dank schon mal |
Danke, hab es eben selber herausgefunden.
Ich hab es ins WebBrowser1DocumentComplete geschrieben. Vielen Dank nochmal. Ich werde jetzt öfter hier sein |
So, eine letzte Frage hätte ich noch
Code:
procedure TForm1.fillform;
begin with WebBrowser1 do begin OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('REGEMAIL').value := 'ensacom@t-online.de'; OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('REGCODE').value := 'Passwort'; OleObject.Document.Frames.item('MAIN').Document.Forms.item('loginform').Elements.item('B1').value := 'Passwort'; end; end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var CurWebrowser: IWebBrowser; TopWebBrowser: IWebBrowser; begin CurWebrowser := pDisp as IWebBrowser; TopWebBrowser := (Sender as TWebBrowser).DefaultInterface; if CurWebrowser = TopWebBrowser then begin WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.location.href := 'http://www.tmssoftware.com/asp/reg_input.asp'; end; fillform; //FEHLER end; Wenn ich fillform dort aufrufe gibt es eine zugriffsverletzung weil das Formular noch nicht im Mainframe ist. Hat einer ne Idee wie ich abfragen kann ob es komplett ist, um dann das Formular zu füllen? Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz