Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem beim Formularaufbau (https://www.delphipraxis.net/108175-problem-beim-formularaufbau.html)

moperswings 8. Feb 2008 10:05


Problem beim Formularaufbau
 
Hallo,

ich möchte von meiner Form aus ein Webformular ausfüllen.
Lass ich das Programm so laufen, bekomme ich Zugriffsverletzungen!
Lass ich die procedure über einen Button.Click laufen, funktionierts!
Wie bekomme ich den Code ohne Button zum Laufen?
Hoffe, Ihr könnt mir helfen!
Viele Grüsse, moperswings!
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
        webbrowser1.Navigate('http:// ... ');
        sleep(50);
        webbrowser1.OleObject.document.forms.item('form1').elements.item('textfield').value := 'hallo';
        sleep(50);
        webbrowser1.OleObject.document.forms.item('form1').elements.item('submit').click;
end;

mkinzler 8. Feb 2008 10:11

Re: Problem beim Formularaufbau
 
Das IE-Control scheint zu diesem Zeitpunkt noch nicht instantiiert zu sein

sirius 8. Feb 2008 10:12

Re: Problem beim Formularaufbau
 
Schmeiss den Code in FormShow!
Und dann leg im Webbrowser ein Ereignis an (evtl.: OnDocumentComplete), nimm die Sleeps raus und schmeiss die unteren beiden Zeilen in das neue Ereignis

moperswings 8. Feb 2008 10:22

Re: Problem beim Formularaufbau
 
FormShow funktioniert soweit, das fehlerfrei Compiliert wird!
Die Befehle hatte ich auch schon rausgenommen, fehlt mir noch das Ereignis, weil die Befehle nicht ausgeführt werden!

sirius 8. Feb 2008 10:24

Re: Problem beim Formularaufbau
 
Zitat:

fehlt mir noch das Ereignis,
Dann legs doch an :gruebel:

moperswings 8. Feb 2008 11:29

Re: Problem beim Formularaufbau
 
Das Ereignis habe ich hinbekommen. Habe das aus der Hilfe übernommen.
ShowForm habe ich wieder rausgenommen!
ABER:
Jetzt wird mir das Formular in einer Schleife aufgerufen!
Wie bekomme ich den Dauerabruf hier raus?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  webbrowser1.navigate('http://localhost/button.html');
end;

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  if CurDispatch = nil then
     CurDispatch := pDisp;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  if (pDisp = CurDispatch) then
  begin
    webbrowser1.OleObject.document.forms.item('form1').elements.item('textfield').value := 'hallo';
    webbrowser1.OleObject.document.forms.item('form1').elements.item('submit').click;
    CurDispatch := nil; {die globale Variable leeren}
  end;
end;

marabu 8. Feb 2008 11:47

Re: Problem beim Formularaufbau
 
Hi,

du musst mehrere DocumentComplete-Handler vorhalten oder du setzt den Handler einfach auf nil:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with webbrowser1 do
  begin
    OnDocumentComplete := WebBrowserDocumentComplete;
    Navigate('http://localhost/button.html');
  end;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  with WebBrowser1 do
    if pDisp = DefaultInterface then
    begin
      OnDocumentComplete := nil;
      OleObject.document.forms.item('form1').elements.item('textfield').value := 'hallo';
      OleObject.document.forms.item('form1').elements.item('submit').click;
    end;
end;
Getippt und nicht getestet.

Freundliche Grüße

moperswings 8. Feb 2008 11:55

Re: Problem beim Formularaufbau
 
Läuft!

Vielen Dank, marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz