AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Wieder einmal: Felder im WebBrowser ausfüllen
Thema durchsuchen
Ansicht
Themen-Optionen

Wieder einmal: Felder im WebBrowser ausfüllen

Ein Thema von Rued · begonnen am 31. Jan 2016 · letzter Beitrag vom 2. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
66 Beiträge
 
Delphi 12 Athens
 
#1

Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 14:35
Hallo!

Man kennt die Zeile für das Ausfüllen von Formularfeldern im WebBrowser:

Code:
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Edit1.Text
Ist es möglich, den Namen der elements.item im Formular abzufragen? So etwas wie Findcomponent oder if ...name = 'FELDNAME' then

Was bei mir nicht funktioniert ist die Namensabfrage über:

Code:
  FormItem: Variant;
begin

...
   for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
   for j := 0 to FormItem.Length - 1 do
    begin
      try                                          
        if FormItem.Item(j).Name = 'FELDNAME' then ...
Agiere ich "blind", funktioniert es:
Code:
for b := 0 to WebBrowser.OleObject.Document.all.tags('FORM').Length -1 do
         WebBrowser.OleObject.document.forms.item(b).elements.item('FELDNAME').value := 'Wert';
Geht es nicht eleganter?

Gruß

Rüd
Rüdiger Droste
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#2

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 14:46
Delphi-Quellcode:
for I := 0 to wb.OleObject.Document.forms.Length - 1 do begin
    FormItem := wb.OleObject.Document.forms.Item(I);
    for j := 0 to FormItem.Length - 1 do begin
     memo1.lines.Add(FormItem.Item(j).Name);
    end;
aber wenn du den feldnamen doch kennst,
Edit1.Text:= WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value würde das auch gehen.

Was genau willst du den tun?

Gruß

Geändert von ScharfeMietze (31. Jan 2016 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
66 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 16:23
...
Was genau willst du denn tun?

Gruß
Ich will ein Formularfeld im Webbrowser mit bekanntem Namen ausfüllen, ohne eine Schleife durchlaufen zu müssen.

Gruß

Rüd
Rüdiger Droste
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#4

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 18:49
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Edit1.Text tut doch genau das.

Falls in das Edit mit Copy&Paste eingefügt wird und ungewollte Leerzeicheichen mit drin sind.
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Trim(Edit1.Text) Du musst nur das 'FELDNAME' durch 'DenrealenNamendesFeldes' ersetzen.

Es sein das die .forms.item() nicht 0 ist.
Testen kann man das so
Delphi-Quellcode:
  try
   for I := 0 to 20 do
    begin
     WebBrowser1.OleObject.document.forms.item(I).elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
     ShowMessage(IntToStr(I));
    end;
  except
  end; // try
Gruß
SM

Geändert von ScharfeMietze (31. Jan 2016 um 18:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
66 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 20:48
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Edit1.Text tut doch genau das.

Falls in das Edit mit Copy&Paste eingefügt wird und ungewollte Leerzeicheichen mit drin sind.
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Trim(Edit1.Text) Du musst nur das 'FELDNAME' durch 'DenrealenNamendesFeldes' ersetzen.

Es sein das die .forms.item() nicht 0 ist.
Testen kann man das so
Delphi-Quellcode:
  try
   for I := 0 to 20 do
    begin
     WebBrowser1.OleObject.document.forms.item(I).elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
     ShowMessage(IntToStr(I));
    end;
  except
  end; // try
Gruß
SM

Das ist genau die Lösung, die ich in meinem Ursprungs-Beitrag als "blind" bezeichne, da ich über eine Schleife operiere, die testet und den Wert somit nicht zielgerichtet setzt. Ich fragte nach einer eleganteren Lösung. Wenn es die nicht gibt, dann kann ich meinen Code halt nicht optimieren.

Gruß

Rüd
Rüdiger Droste
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#6

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 31. Jan 2016, 21:26
Du bekommst doch in der Message den Wert den du statt I einsetzen kannst um dann die Schleife wegzulassen.

Wahlweise kannst du auch statt dem Integer den 'Formnamen' eingeben.

embdwb1.OleObject.document.forms.item('vbform').elements.item('message').value := Value; embdwb1.OleObject.Document.GetElementByID('Feldname').value := Value; Kannst du auch testen.

Wenn du auf Embedded WB wechselst hast du z.B. FillForm, in dem du nur noch den Namen und die Message einträgst. Es gibt da schon einige Wege nach Rom.

Gruß
SM



Ps:
Delphi-Quellcode:
try
        if FormItem.Item(j).Name = 'FELDNAMEthen ...
Wenn ich das richtig sehe vergleichst du dort die FormNamen mit dem Feldnamen. Das sollte auch so nicht funktionieren.

Geändert von ScharfeMietze ( 1. Feb 2016 um 10:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
66 Beiträge
 
Delphi 12 Athens
 
#7

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 1. Feb 2016, 15:14
Du bekommst doch in der Message den Wert den du statt I einsetzen kannst um dann die Schleife wegzulassen.

Wahlweise kannst du auch statt dem Integer den 'Formnamen' eingeben.

embdwb1.OleObject.document.forms.item('vbform').elements.item('message').value := Value; embdwb1.OleObject.Document.GetElementByID('Feldname').value := Value; Kannst du auch testen.

Wenn du auf Embedded WB wechselst hast du z.B. FillForm, in dem du nur noch den Namen und die Message einträgst. Es gibt da schon einige Wege nach Rom.

Gruß
SM
Also geht es nur über die Schleife...
Den Embedded habe ich lange Zeit eingebaut, wollte jetzt die "Fremd"-Komponenten `mal reduzieren.

Ps:
Delphi-Quellcode:
try
        if FormItem.Item(j).Name = 'FELDNAMEthen ...
Wenn ich das richtig sehe vergleichst du dort die FormNamen mit dem Feldnamen. Das sollte auch so nicht funktionieren.
Da wirst Du wohl recht haben, hatte ich hier gefunden.

Gruß

Rüd
Rüdiger Droste
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#8

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 1. Feb 2016, 15:30
Normalerweise solltest du keine Schleife brauchen.

Du nimmst dir einen Button zum Testen mit
Delphi-Quellcode:
  try
   for I := 0 to 20 do
    begin
     WebBrowser1.OleObject.document.forms.item(I).elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
     ShowMessage(IntToStr(I));
    end;
  except
  end; // try
Wenn eine Message aufgeht mit einer Zahl, nimmst du dir einen weiteren Button und trägst einfach,
Delphi-Quellcode:
procedure Tfrm1.btn1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.forms.item('DieZahlausderMessage').elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
end;
ein.
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
66 Beiträge
 
Delphi 12 Athens
 
#9

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 1. Feb 2016, 15:56
Normalerweise solltest du keine Schleife brauchen.

Du nimmst dir einen Button zum Testen mit
Delphi-Quellcode:
  try
   for I := 0 to 20 do
    begin
     WebBrowser1.OleObject.document.forms.item(I).elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
     ShowMessage(IntToStr(I));
    end;
  except
  end; // try
Wenn eine Message aufgeht mit einer Zahl, nimmst du dir einen weiteren Button und trägst einfach,
Delphi-Quellcode:
procedure Tfrm1.btn1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.forms.item('DieZahlausderMessage').elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text);
end;
ein.
Ich habe das schon verstanden. Aber zum "Testen" brauchst Du sehr wohl eine Schleife und ich suchte nach einer Möglichkeit, die bspw. der parent-Eigenschaft oder Ähnlichem entspricht. Also ohne Test, ohne try and error.

Hintergrund ist, dass ich eine Vielzahl verschiedener Formulare habe. Aber ich mache es jetzt mit der Test-try-and-error-Schleife.

Danke Dir!

Gruß

Rüd
Rüdiger Droste
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#10

AW: Wieder einmal: Felder im WebBrowser ausfüllen

  Alt 1. Feb 2016, 16:20
Es ist schwierig dir bei ungenauen Angaben zu helfen!!
Zitat:
Ich will ein Formularfeld im Webbrowser mit bekanntem Namen ausfüllen, ohne eine Schleife durchlaufen zu müssen.
nun sagst du
Zitat:
Hintergrund ist, dass ich eine Vielzahl verschiedener Formulare habe.
Daher wären mehr Details von Vorteil. Da man natürlich auch wenn die Formulare bekannt sind was tun kann.

embdwb1.OleObject.Document.GetElementByID('Feldname').value := trim(edit1.text); mal probiert?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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