Entwickler-Ecke

Internet / Netzwerk - Textfeld von TWebBrowser füllen?


jackie05 - Fr 22.10.10 00:17
Titel: Textfeld von TWebBrowser füllen?
Hallo,
ich habe folgendes problem und zwar möchte ich ein Textfeld füllen lassen diese mit JavaScript oder CSS erstellt wurde:

Quelltext
1:
<input id="testForm:m" type="text" name="testForm:m">                    


und ich habe versucht dieses Feld mit diesem Code zu befüllen:

Delphi-Quelltext
1:
WbSetEditField(WebBrowser1,'m',Z1);                    


leider bekomme ich eine Zugriffsverletzung bei Delphi.

Kann mir Vielleicht jemand weiterhelfen?

Ich bedanke mich schonmal im Voraus.

MfG


jaenicke - Fr 22.10.10 06:01

Die Schutzverletzung solltest du nur innerhalb Delphi sehen und rührt daher, dass kein Feld mit dem Namen m gefunden wurde.

Du hast ja auch den Code dazu nicht gepostet, denn das input-Feld, welches du gepostet hast, heißt ja anders. :gruebel:


jackie05 - Sa 23.10.10 20:17

Danke Dir.
ja, aber wie kann ich solche Textfelder im WebBrowser füllen lassen?
Es muss doch eine möglichkeit geben, oder?

Ich habe zum Test mal alles in ListBox eintragen lassen, was alles gefunden wurde von WebBrowser:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
function WbEnumFields(WebBrowser: TWebBrowser; SL: TStrings): Boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := True;
  //Hat das Dokument Forms? (Frames)
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Result := False;
    Exit;
  end;
  //Bearbeite alle Frames
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
    // Bearbeite alle Felder eines Frames
    for j := 0 to FormItem.Length - 1 do
    begin
      try
        SL.Add(FormItem.Item(j).Name);
      except
        Result := False;
        Exit;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WbEnumFields(WebBrowser1,ListBox1.Items);
end;


dann meldet er nach ein paar einträge einen Fehler:

Delphi-Quelltext
1:
Project Project1.exe raised exception class EOleError with message 'Method 'Name' not supportet by automation object'.                    


Danke schonmal im Voraus.

MfG


jaenicke - Sa 23.10.10 20:26

user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
Es muss doch eine möglichkeit geben, oder?
naja, bezogen auf deinen obigen Code könntest du den ja einfach an den geposteten HTML-Code anpassen:

Delphi-Quelltext
1:
WbSetEditField(WebBrowser1, 'testForm:m', Z1);                    
Ob das mit dem Doppelpunkt geht, weiß ich aber nicht...