Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Selectfelder mit TWebBrowser ansprechen ?

  Alt 19. Feb 2005, 16:20
Hi,

Hier ein paar nützliche Funktionen für
Editfelder, Radiobuttons, Checkboxen, Select Felder (Combobox, Dropdown)

Delphi-Quellcode:
unit WebControl;

interface

uses
  Windows, SysUtils, Graphics, Dialogs, Classes,
  EmbeddedWB, MSHTML_TLB, SHDocVw_TLB, OleCtrls;

// Editfeld
function ReadEditValue(Webbrowser:TEmbeddedWB;Editname:String):String;
procedure SetEditValue(Webbrowser:TEmbeddedWB;Editname,Value:String);
// Radiobutton
function ReadRadioValue(Webbrowser:TEmbeddedWB;Radioname:String):String;
procedure SetRadioStatus(Webbrowser:TEmbeddedWB;Radioname,Value:String;SetValue:Boolean);
// Checkbox
function ReadCheckboxValue(Webbrowser:TEmbeddedWB;Checkboxname:String):String;
function ReadCheckboxStatus(Webbrowser:TEmbeddedWB;Checkboxname:String):Boolean;
procedure SetCheckboxStatus(Webbrowser:TEmbeddedWB;Checkboxname:String;Status:Boolean);
// Select
function ReadSelectValue(Webbrowser:TEmbeddedWB;Selectname:String):String;
procedure SetSelectValue(Webbrowser:TEmbeddedWB;Selectname,SelectValue:String);


implementation

function ReadEditValue(Webbrowser:TEmbeddedWB;Editname:String):String;
var
  Document: IHTMLDocument2;
  edTest: IHTMLInputTextElement;
begin
// Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Editname, 0),
      IHTMLInputTextElement, edTest) then
    begin
      // Aktuellen Wert auslesen
      Result:=(edTest.value);
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Editname+'" existiert ' +
        'nicht oder ist kein Text-Input-Element!');
      Result:='NIL';
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
    Result:='NIL';
  end;
end;

procedure SetEditValue(Webbrowser:TEmbeddedWB;Editname,Value:String);
var
  Document: IHTMLDocument2;
  edTest: IHTMLInputTextElement;
begin
// Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Editname, 0),
      IHTMLInputTextElement, edTest) then
    begin
      // Neuen Wert setzen
      edTest.value:= Value;
    end else begin
    ShowMessage('Element mit dem Namen "'+Editname+'" existiert ' +'nicht oder ist kein Text-Input-Element!');
    end;
  end else begin
    ShowMessage('Kein HTML-Dokument geladen!');
  end;
end;

// Wert den das RadioButton besitzt zurückgeben
function ReadRadioValue(Webbrowser:TEmbeddedWB;Radioname:String):String;
var
  Document: IHTMLDocument2;
  rbTestList: IHTMLElementCollection;
  rbTest: IHTMLOptionButtonElement;
  I: Integer;
begin
 // Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Radioname, EmptyParam),
      IHTMLElementCollection, rbTestList) then
    begin
      // Aktuellen Wert auslesen
      for I:= 0 to rbTestList.length - 1 do
      begin
        // Referenz auf i. RadioButton
        if Supports(rbTestList.item(I, EmptyParam),
          IHTMLOptionButtonElement, rbTest) then
        begin
          // Anzeigen, wenn dieser RadioButton ausgewählt
          if rbTest.checked then Result:=rbTest.value;
          // ShowMessageFmt('Der RadioButton mit dem Wert %s' +
          // ' ist ausgewählt!', [rbTest.value]);
        end
        else
        begin
          ShowMessage('Element, das "'+Radioname+'" heißt, ' +
            'aber weder RadioButton, noch CheckBox ist!"');
          Result:='NIL';
        end;
      end;
    end
    else
    begin
      ShowMessage('Es muss mindestens ein Element mit dem Namen "' +Radioname+
        '" existieren!');
       Result:='NIL';
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
    Result:='NIL';
  end;
end;

// Radiobutton der zu der Gruppe "Radioname" gehört und den Wert
// "Value" den Boolean Status "SetValue" geben
procedure SetRadioStatus(Webbrowser:TEmbeddedWB;Radioname,Value:String;SetValue:Boolean);
var
  Document: IHTMLDocument2;
  rbTestList: IHTMLElementCollection;
  rbTest: IHTMLOptionButtonElement;
  I: Integer;
begin
 // Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Radioname, EmptyParam),
      IHTMLElementCollection, rbTestList) then
    begin
      // Aktuellen Wert auslesen
      for I:= 0 to rbTestList.length - 1 do
      begin
        // Referenz auf i. RadioButton
        if Supports(rbTestList.item(I, EmptyParam),
          IHTMLOptionButtonElement, rbTest) then
        begin
          // Anzeigen, wenn dieser RadioButton ausgewählt
          //if rbTest.checked then Result:=rbTest.value;
        end
        else
        begin
          ShowMessage('Element, das "'+Radioname+'" heißt, ' +
            'aber weder RadioButton, noch CheckBox ist!"');
        end;
      end;
     // Neuen Wert setzen
      for I:= 0 to rbTestList.length - 1 do
      begin
        // Referenz auf i. RadioButton
        if Supports(rbTestList.item(I, EmptyParam),
          IHTMLOptionButtonElement, rbTest) then
        begin
          // Wir möchten den RadioButton mit dem Wert "3" aktivieren
          if rbTest.value = Value then
            rbTest.checked:= SetValue;
        end;
      end;
    end
    else
    begin
      ShowMessage('Es muss mindestens ein Element mit dem Namen "' +Radioname+
        '" existieren!');
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
  end;
end;


function ReadCheckboxValue(Webbrowser:TEmbeddedWB;Checkboxname:String):String;
var
  Document: IHTMLDocument2;
  CheckboxTest: IHTMLOptionButtonElement;
begin
 // Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Checkboxname, 0),
      IHTMLOptionButtonElement, CheckboxTest) then
    begin
      // Aktuellen Wert auslesen
      Result:=CheckboxTest.value;
      //If CheckboxTest.status=true then Showmessage('True') else
      Showmessage('False');
      //ShowMessage(CheckboxTest.status);
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Checkboxname+'" existiert' +
        'nicht oder ist kein Checkbox-Input-Element!');
      Result:='NIL';
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
    Result:='NIL';
  end;
end;

function ReadCheckboxStatus(Webbrowser:TEmbeddedWB;Checkboxname:String):Boolean;
var
  Document: IHTMLDocument2;
  CheckboxTest: IHTMLOptionButtonElement;
begin
  Result:=False;
 // Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Checkboxname, 0),
      IHTMLOptionButtonElement, CheckboxTest) then
    begin
      // Aktuellen Wert auslesen
      Result:=CheckboxTest.status;
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Checkboxname+'" existiert' +
        'nicht oder ist kein Checkbox-Input-Element!');
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
  end;
end;

procedure SetCheckboxStatus(Webbrowser:TEmbeddedWB;Checkboxname:String;Status:Boolean);
var
  Document: IHTMLDocument2;
  CheckboxTest: IHTMLOptionButtonElement;
begin
 // Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Checkboxname, 0),
      IHTMLOptionButtonElement, CheckboxTest) then
    begin
      CheckboxTest.status:=Status;
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Checkboxname+'" existiert' +
        'nicht oder ist kein Checkbox-Input-Element!');
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
  end;
end;


function ReadSelectValue(Webbrowser:TEmbeddedWB;Selectname:String):String;
var
  Document: IHTMLDocument2;
  edTest: IHTMLSelectElement;
begin
// Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Selectname, 0),
      IHTMLSelectElement, edTest) then
    begin
      // Aktuellen Wert auslesen
      Result:=edTest.value;
      // Neuen Wert setzen
      //edTest.value:= 'NineBerry is Great!';
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Selectname+'" existiert ' +
        'nicht oder ist kein Select-Element!');
      Result:='NIL';
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
    Result:='NIL';
  end;
end;

procedure SetSelectValue(Webbrowser:TEmbeddedWB;Selectname,SelectValue:String);
var
  Document: IHTMLDocument2;
  edTest: IHTMLSelectElement;
begin
// Referenz auf Dokument
  if Supports(WebBrowser.Document, IHTMLDocument2, Document) then
  begin
    // Referenz auf Eingabe-Control-Element
    if Supports(Document.all.item(Selectname, 0),
      IHTMLSelectElement, edTest) then
    begin
      // Neuen Wert setzen
      edTest.value:= SelectValue;
    end
    else
    begin
      ShowMessage('Element mit dem Namen "'+Selectname+'" existiert ' +
        'nicht oder ist kein Select-Element!');
    end;
  end
  else
  begin
    ShowMessage('Kein HTML-Dokument geladen!');
  end;
end;
Thomas
  Mit Zitat antworten Zitat