Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Fr 22.10.10 00:17 
Hallo,
ich habe folgendes problem und zwar möchte ich ein Textfeld füllen lassen diese mit JavaScript oder CSS erstellt wurde:
ausblenden Quelltext
1:
<input id="testForm:m" type="text" name="testForm:m">					


und ich habe versucht dieses Feld mit diesem Code zu befüllen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: 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:
ausblenden volle Höhe 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
WbSetEditField(WebBrowser1, 'testForm:m', Z1);					
Ob das mit dem Doppelpunkt geht, weiß ich aber nicht...