Einzelnen Beitrag anzeigen

Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#15

Re: Png Grafik am Bildschirm suchen und Position ermitteln

  Alt 10. Sep 2007, 10:03
So, ich habe weiter recherchiert und bin mit Twebbrowser wohl am richtigen Weg.
Nachfolgende Codeschnipsel habe ich gefunden, die aber nicht funktionieren (ich verwende D7).
Quelle:
Link

Nachfolgende Vorgehensweise erscheint mir momentan sinnvoll:

1. Nummer der Form zu holen.
2. Alle Eingabefelder der Form holen und listen.

Delphi-Quellcode:
function GetFormByNumber(document: IHTMLDocument2;
    formNumber: integer): IHTMLFormElement;
var
  forms: IHTMLElementCollection;
begin
  forms := document.Forms as IHTMLElementCollection;
  if formNumber < forms.Length then
    result := forms.Item(formNumber,'') as IHTMLFormElement
  else
    result := nil;
end;

function GetFormFieldNames(fromForm: IHTMLFormElement): TStringList;
var
  index: integer;
  field: IHTMLElement;
  input: IHTMLInputElement;
  select: IHTMLSelectElement;
  text: IHTMLTextAreaElement;
begin
  result := TStringList.Create;
  for index := 0 to fromForm.length do
  begin
    field := fromForm.Item(index,'') as IHTMLElement;
    if Assigned(field) then
    begin
      if field.tagName = 'INPUTthen
      begin
        // Input field.
        input := field as IHTMLInputElement;
        result.Add(input.name);
      end
      else if field.tagName = 'SELECTthen
      begin
        // Select field.
        select := field as IHTMLSelectElement;
        result.Add(select.name);
      end
      else if field.tagName = 'TEXTAREAthen
      begin
        // TextArea field.
        text := field as IHTMLTextAreaElement;
        result.Add(text.name);
      end;
    end;
  end;
end;
//procedure TMyForm.Button1Click(Sender: TObject);
// Original geändert
procedure Form1.Button1Click(Sender: TObject);
var
  document: IHTMLDocument2;
  theForm: IHTMLFormElement;
  index: integer;
begin
   //Nachfolgend wird ein Fehler gezeigt:
  // document := TWebBrowser.Document as IHTMLDocument2;
  // und habe deshalb den Source abgeändert:
  document := WebBrowser1.Document as IHTMLDocument2;
  // und ab hier geht es bei mir nicht mehr weiter...
  theForm := GetFormByNumber(WebBrowser.Document as IHTMLDocument2,0);
  fields := GetFormFieldNames(theForm);

  for index := 0 to fields.count-1 do
    ShowMessage('Field ' + IntToStr(index) + ' called ' + fields[index]);
end;
So fehlerfrei, wie der Autor schreibt, scheint der Code für D7 nicht zu sein.
Kann jemand weiterhelfen?
  Mit Zitat antworten Zitat