gpt4 book ai didi

delphi - 如何通过 EmbeddedWB.FillForm 设置复选框的值? (德尔福)

转载 作者:行者123 更新时间:2023-12-03 15:55:31 25 4
gpt4 key购买 nike

如何通过 FillForm 方法设置复选框的值?我尝试了这些但不起作用:

  W.FillForm('Chkname', 'True');
W.FillForm('Chkname', '1');
W.FillForm('Chkname', '', 1);

最佳答案

我知道,已经很晚了,但我会尝试回答这个问题,因为这是一个很好的问题,而且即使是当前版本的 TEmbeddedWB没有实现此功能。

但是您可以添加自己的函数来执行此操作;在下面的示例中,我使用插入类 TEmbeddedWB我使用支持复选框和单选按钮填充的版本重载了 FillForm 函数。

如果您想设置复选框或选择某些单选按钮,请调用此版本的函数,其中:

  • FieldName(字符串)- 是元素的名称
  • Value(字符串)- 元素的值(可以为空,但在这种情况下,将设置 FieldName 的第一个元素;Web 开发人员应使用名称值对恕我直言)
  • 选择( bool 值)- 如果为 True,则选中复选框或选择单选按钮

这是代码:

uses
EmbeddedWB, MSHTML;

type
TEmbeddedWB = class(EmbeddedWB.TEmbeddedWB)
public
function FillForm(const FieldName, Value: string;
Select: Boolean): Boolean; overload;
end;

implementation

function TEmbeddedWB.FillForm(const FieldName, Value: string;
Select: Boolean): Boolean;
var
I: Integer;
Element: IHTMLElement;
InputElement: IHTMLInputElement;
ElementCollection: IHTMLElementCollection;
begin
Result := False;
ElementCollection := (Document as IHTMLDocument3).getElementsByName(FieldName);
if Assigned(ElementCollection) then
for I := 0 to ElementCollection.length - 1 do
begin
Element := ElementCollection.item(I, '') as IHTMLElement;
if Assigned(Element) then
begin
if UpperCase(Element.tagName) = 'INPUT' then
begin
InputElement := (Element as IHTMLInputElement);
if ((InputElement.type_ = 'checkbox') or (InputElement.type_ = 'radio')) and
((Value = '') or (InputElement.value = Value)) then
begin
Result := True;
InputElement.checked := Select;
Break;
end;
end;
end;
end;
end;

这是一个基本的用法示例:

procedure TForm1.Button1Click(Sender: TObject);
var
WebBrowser: TEmbeddedWB;
begin
WebBrowser := TEmbeddedWB.Create(Self);
WebBrowser.Parent := Self;
WebBrowser.Align := alClient;
WebBrowser.Navigate('http://www.w3schools.com/html/html_forms.asp');

if WebBrowser.WaitWhileBusy(15000) then
begin
if not WebBrowser.FillForm('sex', 'male', True) then
ShowMessage('Error while form filling occured...');
if not WebBrowser.FillForm('vehicle', 'Bike', True) then
ShowMessage('Error while form filling occured...');
if not WebBrowser.FillForm('vehicle', 'Car', True) then
ShowMessage('Error while form filling occured...');
end;
end;

关于delphi - 如何通过 EmbeddedWB.FillForm 设置复选框的值? (德尔福),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com