前回は、ボタンを作成する方法をご紹介しました。
今回は、ボタンの「処理」をプログラムする方法をご紹介します。
そもそも、ボタンを作成するメリットは「処理を自動化できる」ことにあります。
複数の処理を一括して自動化することも可能です。
これを機に、面倒だった手作業を自動化しちゃいましょう。
OnChartEventでボタンの処理をプログラム
OnChartEvent関数は、チャートに何かしらの変更があった場合に実行されます。
ボタンを押した(クリック)ときにも、OnChartEventが実行されます。
void OnChartEvent(
const int id, // イベントID
const long &lparam, // long型イベントパラメータ
const double &dparam, // double型イベントパラメータ
const string &sparam // string型イベントパラメータ
);
このOnChartEvent関数に、ボタンを押されたときに実行したい処理を記述してあげればOKです。
ボタンが押されたときの処理コード
OnChartEvent関数は、チャートに何か変化があった場合に実行されるとお伝えしました。
クリック以外にも、マウスを動かしたとき、キーボードが押されたときなどにも実行されます。

そのため、どんな操作が行われたか判断する必要があります。
コード例)
void OnChartEvent(
const int id,
const long &lparam,
const double &dparam,
const string &sparam
){
if( id == CHARTEVENT_OBJECT_CLICK ) // オブジェクトがクリックされたか判定
{
if( sparam == "BUYbtn" ){ // クリックされたのが、自作「ボタン」か判定
//
// ここに実行したい処理を記述
//
Sleep(80);
ObjectSetInteger(0,sparam,OBJPROP_STATE,0); // ボタン戻す
}
}
}
「id」で、どんな操作がされたかを判定します。
「sparam」で、オブジェクト名から「ボタン」を特定します。
実は、押されたボタンは、押されたままの状態になっています。
そこで、ボタンを戻してあげる必要があります。
「ObjectSetInteger」で、ボタンが押されていない状態に戻します。
Sleep関数を使って、少し時間をおいてから戻すのがポイントです。
時間をおかないと、ボタンが押されたことが分からないほど、瞬間的にボタンが戻るからです。
OnChartEventのイベントID
オブジェクトのクリックイベント以外にも、下記の操作が行われた場合、OnChartEvent関数が実行されます。
CHARTEVENT_KEYDOWN | チャートウィンドウがフォーカスされている時のキー押下 |
CHARTEVENT_MOUSE_MOVE | マウスの移動、マウスボタンクリック |
CHARTEVENT_OBJECT_CREATE | グラフィックオブジェクトの作成 |
CHARTEVENT_OBJECT_CHANGE | プロパティダイアログを介してのオブジェクトプロパティ変更 |
CHARTEVENT_OBJECT_DELETE | グラフィックオブジェクト削除 |
CHARTEVENT_CLICK | チャートのクリック |
CHARTEVENT_OBJECT_CLICK | チャートに属するグラフィックオブジェクトでのマウスクリック |
CHARTEVENT_OBJECT_DRAG | マウスを使用してのグラフィカルオブジェクトのドラッグ |
CHARTEVENT_OBJECT_ENDEDIT | グラフィックオブジェクトの入力ボックスのテキスト編集 |
CHARTEVENT_CHART_CHANGE | チャート変更 |
ボタン以外にも必要な操作で処理を実行できるので、試してみると良いですね。