![]() |
Wieder einmal: Felder im WebBrowser ausfüllen
Hallo!
Man kennt die Zeile für das Ausfüllen von Formularfeldern im WebBrowser:
Code:
Ist es möglich, den Namen der elements.item im Formular abzufragen? So etwas wie Findcomponent oder if ...name = 'FELDNAME' then
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Edit1.Text
Was bei mir nicht funktioniert ist die Namensabfrage über:
Code:
Agiere ich "blind", funktioniert es:
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 ...
Code:
Geht es nicht eleganter?
for b := 0 to WebBrowser.OleObject.Document.all.tags('FORM').Length -1 do
WebBrowser.OleObject.document.forms.item(b).elements.item('FELDNAME').value := 'Wert'; Gruß Rüd |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Delphi-Quellcode:
aber wenn du den feldnamen doch kennst,
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;
Delphi-Quellcode:
würde das auch gehen.
Edit1.Text:= WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value
Was genau willst du den tun? Gruß |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Zitat:
Gruß Rüd |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Delphi-Quellcode:
tut doch genau das.
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Edit1.Text
Falls in das Edit mit Copy&Paste eingefügt wird und ungewollte Leerzeicheichen mit drin sind.
Delphi-Quellcode:
Du musst nur das 'FELDNAME' durch 'DenrealenNamendesFeldes' ersetzen.
WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value := Trim(Edit1.Text)
Es sein das die .forms.item() nicht 0 ist. Testen kann man das so
Delphi-Quellcode:
Gruß
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 SM;) |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Zitat:
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 |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
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.
Delphi-Quellcode:
embdwb1.OleObject.document.forms.item('vbform').elements.item('message').value := Value;
Delphi-Quellcode:
Kannst du auch testen.
embdwb1.OleObject.Document.GetElementByID('Feldname').value := Value;
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:
Wenn ich das richtig sehe vergleichst du dort die FormNamen mit dem Feldnamen. Das sollte auch so nicht funktionieren.
try
if FormItem.Item(j).Name = 'FELDNAME' then ... |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Zitat:
Den Embedded habe ich lange Zeit eingebaut, wollte jetzt die "Fremd"-Komponenten `mal reduzieren. Zitat:
![]() Gruß Rüd |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Normalerweise solltest du keine Schleife brauchen.
Du nimmst dir einen Button zum Testen mit
Delphi-Quellcode:
Wenn eine Message aufgeht mit einer Zahl, nimmst du dir einen weiteren Button und trägst einfach,
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
Delphi-Quellcode:
ein.
procedure Tfrm1.btn1Click(Sender: TObject);
begin WebBrowser1.OleObject.document.forms.item('DieZahlausderMessage').elements.item('DenrichtigenNamendesFeldes').value:=Trim(Edit1.Text); end; |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Zitat:
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 |
AW: Wieder einmal: Felder im WebBrowser ausfüllen
Es ist schwierig dir bei ungenauen Angaben zu helfen!!
Zitat:
Zitat:
Delphi-Quellcode:
mal probiert?
embdwb1.OleObject.Document.GetElementByID('Feldname').value := trim(edit1.text);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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