AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser OleObject - Felder füllen

Ein Thema von gee21 · begonnen am 9. Apr 2013 · letzter Beitrag vom 10. Apr 2013
 
nahpets
(Gast)

n/a Beiträge
 
#11

AW: Webbrowser OleObject - Felder füllen

  Alt 9. Apr 2013, 23:03
Hallo,

habe mal rumprobiert. Dazu habe ich die von Dir zur Verfügunggestellte HTML-Seite lokal abgespeichert. Mit folgendem Quelltext bekomme ich den Inhalt von Memo1.Text in das Formular:
Delphi-Quellcode:
unit ClientUnit1;

interface

uses
  SysUtils, Dialogs, Forms,OleCtrls, SHDocVw, Classes, Controls, StdCtrls, StrUtils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    wb: TWebBrowser;
    Memo1: TMemo;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    function WBFillForm(wb: TWebBrowser; sFieldName: string; sValue: string): Boolean;
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// ...HTML Formulare mit TWebBrowser automatisch ausfüllen lassen?
function TForm1.WBFillForm(wb: TWebBrowser; sFieldName: string; sValue: string): Boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := False;
  //no form on document
  if wb.OleObject.Document.all.tags('FORM').Length = 0 then begin
    Exit;
  end;
  //count forms on document
  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
      try
        // when the fieldname is found, try to fill out
        if AnsiUpperCase(FormItem.Item(j).Name) = AnsiUpperCase(sFieldName) then begin
          FormItem.Item(j).Value := sValue;
          Result := True;
        end;
      except
        Exit;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.ProcessMessages;
  while wb.Busy do Application.ProcessMessages;
  while wb.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;
  if not WBFillForm(wb,'message',Memo1.Text) then begin
    ShowMessage('Das Textfeld message wurde nicht gefunden.');
  end;
  Application.ProcessMessages;
  while wb.Busy do Application.ProcessMessages;
  while wb.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  wb.Navigate('E:\Delphi\WebModule\test.html');
  ShowMessage('***');
end;

end.
Allerdings nutze ich TWebBrowser und nicht tembeddedwb. Sollte dies die Ursache sein? Eigentlich ehre nicht.
  Mit Zitat antworten Zitat
 


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 19:40 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