MQL4 CEdit で文字列入力

MQL4 のパネルで指値などの文字を入力したいときは、CEdit(入力欄)を使います。

この記事では、CEdit に入力した文字をボタンで取得し、CLabel に表示するところまでを作ります。

CEditに入力した文字をCLabelに表示したパネル

[PR]


この記事で作るもの

  • CEdit で文字の入力欄を作る
  • OK ボタンで入力された文字を取得する
  • 取得した文字を CLabel に表示する

CAppDialog に CLabel と CButton を配置する方法は、以下の記事で解説しています。今回はそのパネルに CEdit を追加します。

MQL4でボタンを作成していましたが、よりトレードに使えるパネルを CAppDialog と CLabel を使って作成してみたいと思います...

CEdit で文字入力欄を作る

まずは入力欄と OK ボタンだけの、基本的なダイアログを作ります。大まかな流れは次の3ステップです。

  1. ヘッダーファイルをインクルード
    • ..\MQL4\Include\Controls\Edit.mqh をインクルードする
    • 入力を確定するボタン用に Button.mqh もインクルードする
  2. カスタムクラスを定義
    • CAppDialog を継承した CTestPanel クラスを定義し、Create() を書く
    • 入力欄を作る CreateEdit() と、ボタンを作る CreateButton() を定義する
    • イベントハンドラーで、ボタンをクリックしたら入力文字を Print() する OnClickButton() を呼ぶ
  3. オブジェクトを作成
    • CTestPanel のオブジェクト(インスタンス)TPanel を作る
    • OnInit() で Create() し、Run() で実行する

入力欄に文字を入れて OK を押すと、ターミナルの「エキスパート」タブに入力した文字列が出力されます。

エキスパートタブに入力文字列が出力された画面

入力した文字を CLabel に表示する

次に、CEdit に入力した文字を CLabel でパネル上に表示させます。

先ほどのコードに Label.mqh のインクルード、CLabel のメンバー変数、CreateLabel() を追加し、OnClickButton() の中でラベルに文字をセットしています。

OK を押すと、入力した文字がラベルに表示されました。

入力文字がCLabelに表示された画面

CEdit を使うときのポイント

文字の取得と設定はどちらも Text()

CEdit の Text(“文字”) は入力欄に文字をセットし、引数なしの Text() は入力された文字を取得します。CLabel も同じ書き方です。

ReadOnly(false) で入力できるようにする

サンプルでは ReadOnly(false) で編集可能にしています。逆に ReadOnly(true) にすると入力できなくなるので、CEdit を CLabel のような表示専用の欄としても使えます。

指値として使うなら数値に変換する

Text() で取得できるのは文字列(string)です。指値など価格として注文に使う場合は、StringToDouble() で数値に変換してから使いましょう。

ボタンを使わずに入力確定で処理する方法

入力欄で Enter キーを押すなどして入力が確定すると、CEdit から ON_END_EDIT イベントが送られます。イベントマップに ON_EVENT(ON_END_EDIT, testEdit, 関数名) を追加すれば、OK ボタンなしで入力確定時に処理を実行できます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする