Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Webbrowser Formularfelder überprüfen (https://www.delphipraxis.net/107299-webbrowser-formularfelder-ueberpruefen.html)

Larsi 25. Jan 2008 12:38


Webbrowser Formularfelder überprüfen
 
hi,
ichh möchte mit dem twebbrowser SÄMLTICHE formularfelder (textfelder^^) überprüfen ob ein bestimmter inhalt drinnen ist. ich war codetechnisch schon soweit:
Delphi-Quellcode:
Edit1.Text:=WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value;
aber diese funktion liest ja immer nur FELDNAME aus. oder gibt es eine möglichkeit den namen des feldes beim "eintippen" herausfinden?


MFG Lars Wiltfang

toms 25. Jan 2008 12:46

Re: Webbrowser Formularfelder überprüfen
 
Zitat:

Zitat von Larsi
aber diese funktion liest ja immer nur FELDNAME aus. oder gibt es eine möglichkeit den namen des feldes beim "eintippen" herausfinden?

Du kannst einen Event Sink auf die Felder setzen. Dann wirst du benachrichtigt, sobald sich der Inhalt eines Felder geändert hat.

Larsi 25. Jan 2008 12:58

Re: Webbrowser Formularfelder überprüfen
 
was? slink? gibts nciht ne möglichkeit das man das irgnedwie n bisschen umschriebt was ich scohn hatte!

Larsi 27. Jan 2008 13:05

Re: Webbrowser Formularfelder überprüfen
 
*push*
Ich kapier es nicht :(
Kann es mir jemand erkären??? :)
Kann man nicht wie in meiner schon fertigen Abfrage einfach das Feldname durch All oder so erstzen? Oder gehts' nicht so einfach? Und was ist "Sink"? Wie geht das?
Delphi-Quellcode:
Edit1.Text:=WebBrowser1.OleObject.document.forms.item(0).elements.item('FELDNAME').value;

marabu 27. Jan 2008 14:08

Re: Webbrowser Formularfelder überprüfen
 
Hallo Lars,

willst du in allen Input-Feldern einer Form oder eines Document suchen?

Delphi-Quellcode:
function FindInputElement(container: IDispatch; const subText: string): IHTMLInputElement;
var
  i: Integer;
  ec: IHTMLElementCollection;
  dummy: IDispatch;
begin
  if Succeeded(container.QueryInterface(IID_IHTMLFormElement, dummy)) then
    ec := (container as IHTMLFormElement).tags('input') as IHTMLElementCollection
  else if Succeeded(container.QueryInterface(IID_IHTMLDocument3, dummy)) then
    ec := (container as IHTMLDocument3).getElementsByTagName('input')
  else begin
    Result := nil;
    Exit;
  end;
  for i := 0 to ec.length do
    if i = ec.length then
      Result := nil else
    begin
      Result := ec.item(i, null) as IHTMLInputElement;
      if AnsiContainsText(Utf8ToAnsi(Result.value), subText) then
        Break;
    end;
end;
Testen kannst du so:

Delphi-Quellcode:
var
  ie: IHTMLInputElement;
begin
  // find first element in document
  with WebBrowser do
    ie := FindInputElement(Document, 'b');

  // find first element in some form
  with WebBrowser.Document as IHTMLDocument2 do
    ie := FindInputElement(forms.item(0, null), 'b');
end;
Grüße vom marabu

Larsi 27. Jan 2008 18:30

Re: Webbrowser Formularfelder überprüfen
 
und wie kann ich das jez mit ner If-Schleife :) machen dass immer ne messegebox bei "Sex" kommt? :)

Die Muhkuh 27. Jan 2008 18:42

Re: Webbrowser Formularfelder überprüfen
 
Zitat:

Zitat von Larsi
und wie kann ich das jez mit ner If-Schleife :) machen dass immer ne messegebox bei "Sex" kommt? :)

If-Schleife

Zum Thema, schau Dir die Paramter an und schaue, was die Funktion macht, dann kommst Du ganz leicht auf Deine Lösung ;)

Kleiner Tipp: <> nil ;)

@Detlef: Ich hol schon mal die Gläser :zwinker:

Larsi 27. Jan 2008 18:45

Re: Webbrowser Formularfelder überprüfen
 
das mit der if schleife war auch nicht ernst gemint :)
hab das grad in irgendner signatur gefunden mit der if schleife und musste das gleicfh mal schreiben^^

DeddyH 27. Jan 2008 18:47

Re: Webbrowser Formularfelder überprüfen
 
[OT] *Jippiieehh*, ich trinke Pils :mrgreen: (siehe meine Signatur) [/OT]

Larsi 27. Jan 2008 18:50

Re: Webbrowser Formularfelder überprüfen
 
timmt an deiner signatur stand das :)

Larsi 28. Jan 2008 07:43

Re: Webbrowser Formularfelder überprüfen
 
was muss ich da in die uses aufnehmen für den code? laut delphi ist nämlich die ganze funktion fehlerhaft :(
und durchsucht dass:
Delphi-Quellcode:
var
  ie: IHTMLInputElement;
begin
  // find first element in document
  with WebBrowser do
    ie := FindInputElement(Document, 'b');

 
end;
echt den text in ALLEN Textfeldern des Webbrowser???

Matze 28. Jan 2008 07:48

Re: Webbrowser Formularfelder überprüfen
 
Zitat:

Zitat von Larsi
was muss ich da in die uses aufnehmen für den code?

MSHTML

Larsi 28. Jan 2008 07:49

Re: Webbrowser Formularfelder überprüfen
 
aber ansicontainstext in der funkzion ist immernoch "befehlert"!

Matze 28. Jan 2008 07:53

Re: Webbrowser Formularfelder überprüfen
 
Nutze doch bitte deine Delphi-Hilfe:

Zitat:

Unit
StrUtils

Syntax
Delphi-Quellcode:
 function AnsiContainsText(const AText: string; const ASubText: string): Boolean;


Larsi 28. Jan 2008 07:58

Re: Webbrowser Formularfelder überprüfen
 
danke aber ich bekomm das mit der if Abfrage irgendwie nicht hin. also ich möchte dass wenn zb bei google in die textbox b eingegeben wird, dass dann ne messegebox kommt! Aber wie???

marabu 28. Jan 2008 08:21

Re: Webbrowser Formularfelder überprüfen
 
Hallo Lars,

es ist ein gewaltiger Unterschied, ob du die Eingabefelder des aktuellen HTML-Dokuments nach bestimmten Inhalten durchsuchen oder ob du im Augenblick der Eingabe eine Prüfung vornehmen möchtest. Den ersten Fall löst mein Code aus Beitrag #5, für den letzten Fall benötigst du Ereignisse. Wenn ich aber deine Probleme bei der Verwendung von bereits fertigem Code sehe, dann fürchte ich, dass du erst noch etwas üben musst.

Freundliche Grüße

Larsi 28. Jan 2008 08:37

Re: Webbrowser Formularfelder überprüfen
 
ja natürlich muss ich noch ganz viel üben :) rate mal warum ich in die delphipraxis gegangen bin??? wenn ich das alles wüsste bestimmt nicht(oer vielleicht doch^^)
und deshalb wäre es ganz nett von dir wenn du mir sagst wie diese verdammte if abfrage geht!!!

marabu 28. Jan 2008 09:15

Re: Webbrowser Formularfelder überprüfen
 
Ich kann dir nicht helfen, solange mir dein Problem nicht klar ist.

Soll die Inhaltsprüfung ereignis- oder benutzergesteuert ablaufen?

Larsi 28. Jan 2008 09:27

Re: Webbrowser Formularfelder überprüfen
 
also dafür wo du schon den code für gepostet hast. ich möchte alle textfelder in einem webbrowser object(Twebbrowser1) nach dem Wort Lars durchsuchen und wenn das der fall ist soll was passieren!

marabu 28. Jan 2008 11:38

Re: Webbrowser Formularfelder überprüfen
 
Liste der Anhänge anzeigen (Anzahl: 1)
FindInputValue() durchsucht eine ElementCollection ab index. FindInputElement() sucht wahlweise in einem FormElement, in einem HTMLDocument oder in einen WebBrowser.

Larsi 28. Jan 2008 18:55

Re: Webbrowser Formularfelder überprüfen
 
kann mir da irgendjemand mal schnell ne exe drausmachen mein delphi will im moment grad nicht :)

Larsi 28. Jan 2008 19:05

Re: Webbrowser Formularfelder überprüfen
 
also immer wenn ich deine datein öffnen will. ist die datei weg. virus oder antivirus(woran liegt das?) haste mir n virus da rein geschrieben^^

marabu 29. Jan 2008 09:18

Re: Webbrowser Formularfelder überprüfen
 
Im Archiv sind keine Kompilate enthalten. Welchen Virus meldet denn dein System?

Larsi 29. Jan 2008 14:45

Re: Webbrowser Formularfelder überprüfen
 
auch beim öffnen mit delphi kommen viele fehler das irgendne pas datei nicht gefundenn wurden konnte. deshalb wäre es nett von jemanden wenn er mir aus dem archiv mit den delphi dateien ne exe macht damit ich mal angucken kann wie das funktioniert :)

marabu 29. Jan 2008 17:54

Re: Webbrowser Formularfelder überprüfen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Lars, es tut mir leid - ich habe mir soeben das ZIP-Archiv heruntergeladen und festgestellt, dass ich eine falsche Form beigepackt habe. Im Anhang jetzt die richtige. Sorry.

EDIT: Anhang ausgetauscht ...

bitsetter 29. Jan 2008 18:01

Re: Webbrowser Formularfelder überprüfen
 
Hi,

geht bei mir trotzdem noch nicht zu kompilieren, Delphi konnte die EventObj.dcu nicht finden. Das mit dem Formular hatte ich vorhin schon hinbekommen, brauchte man bloß umbenennen.

Larsi 29. Jan 2008 18:17

Re: Webbrowser Formularfelder überprüfen
 
ja bei mir felht die auch aber man kann sie ja einfach aus dem projekt entfernen dasnn gehts wieder :)

marabu 29. Jan 2008 18:30

Re: Webbrowser Formularfelder überprüfen
 
Löscht bitte die Referenz auf diese Unit, sie wird in der Demo garnicht verwendet und stammt aus einer anderen Demo.

EDIT: Ich habe den Projekt-Quelltext im Anhang von Beitrag #25 bereinigt, damit nicht noch mehr Leute stolpern ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 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