ところで,
> <Button class="submit" >送信</Button>
には submit というのがあります.
下のサンプルコードは Google の画面で,検索語句を入力して検索を開始
するものです.このコードにはボタンクリックのコードはありません.
submit の操作の場合,何かを submit (サブミット) するのが目的です.
submit というのは,この場合,検索を開始するというぐらいの意味と
考えていいと思います.
例えば,山の頂上に立ったことを「サブミットした」と言います.
しかし,submit するには何かしらの操作が必要です.
下のコードは,submit を Delphi のコードで実行するものと言えます.
Google の検索画面では,[Enter] キーでも検索を開始します.
でも,ボタンがあれば,GUI 的には便利です.
そのためにボタンがあると考えてもいいと思います.
「ボタンをクリック」すると言うことに固執してしまうと本質を見失うことが
あります.
本当は submit という操作が目的です.
当サイトのサンプルプロクラム集の各ページに [Hide Index]というボタンが
あります.これは,左ペインの目次を非表示にするのが目的です.
[Hide Index] というボタンをクリックするのが目的ではありません.
同じく,ダウンロードというボタンは,ファイルのダウンロードが目的です.
プログラムは「勝てば官軍,動けば正義」です.
その意味では,このスレッドで書いたコードのように,
「何が何でもボタンをクリックする」
でもいいとは思います.
//=============================================================================
// ブラウザコンポーネントに指定のHTMLを表示
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
var
URL : String;
begin
URL := 'https://www.google.co.jp/';
EmbeddedWB1.Navigate(URL);
end;
//=============================================================================
// Googleの検索画面に検索語句をセットして[Google 検索]ボタンをクリック
// usesにMSHTML_EWBが必要
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LiElement : IHTMLElement;
LiElementCol : IHTMLElementCollection;
LiFormElement : IHTMLFormElement;
LMsgText : String;
begin
try
//検索欄に文字列をセット
LiElement := EmbeddedWB1.Doc3.getElementById('lst-ib');
LiElement.setAttribute('value', 'Delphi', 0);
//[Google 検索]ボタンをクリック
//実際にはsubmitを実行する
//したがって[Google 検索]ボタンが存在しなくてもsubmitは実行できる
LiElementCol := EmbeddedWB1.Doc2.forms;
LiFormElement := LiElementCol.Item(0, 0) as IHTMLFormElement;
LiFormElement.submit;
except
//細かいエラー処理は省略
LMsgText := '操作できませんでした.';
MessageBox(Handle, PChar(LMsgText), '操作結果', MB_ICONINFORMATION);
end;
end;
//=============================================================================
// [戻る]ボタン
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
begin
EmbeddedWB1.GoBack;
end;
上のサンプルを含めて,これまでのサンプルもダウンロードのファイルに
追加しました.[ダウンロード] のボタンはありません(笑)
http://mrxray.on.coocan.jp/Delphi/zip/TChromium_ButtonClick.zip
|