GetNダイアログでグラフプレビューを作成
GetNグラフプレビューダイアログこのセクションはXファンクションのGetNダイアログのグラフプレビューを作成する方法を示します。これはプレビューグラフの起動、GUIの変更をプレビューグラフで更新、グラフ上で四角形が移動された時にどのよううにGUIを更新するか、等を含みます。

空のGetN グラフプレビューダイアログを作成する
- Xファンクションビルダを開くためにF10キーを押してください。
- Xファンクション編集ボックスに「PrevBox」と入力して、Xファンクションの名前にします。
- 変数リスト上で右クリックして「変数の追加」を選択して2つ目の変数を追加します。変数の名前、ラベル、他の値を次の画像と同じになるように入力します。

- Xファンクションビルダのツリービューボタン
をクリックしてツリービューに移動します。「使用のコンテクスト→メニュー」にある「自動GetNダイアログ」のドロップダウンリストで「プレビュー付きGetNGraphBox」を選択してから保存ボタンをクリックしてXファンクションを保存します。
- Xファンクションビルダを閉じて、コマンドウィンドウで「PrevBox -d」を実行します。GetNグラフプレビューダイアログが開きます。
Xファンクション, コードビルダでコーディングコードビルダでXファンクションをコーディングする
プレビューグラフを実行
GetNGraphPreview_OnInitGraphはプレビューグラフを起動する時に使用します。以下のコードをコピーして、この関数に貼り付けます。それからコンパイルボタンを押してください。プレビューダイアログボックスが開くとプレビューグラフに長方形が表示されます。コンパイルをクリックし、コマンドウィンドウで「PrevBox -d」を実行します。
// pgTemp をPageBase クラスオブジェクトからGraphPage オブジェクトへ投げる
GraphPage gp(pgTemp);
// このテンプレートをロードしてグラフにズームイン/アウト
// ボタンを追加。必要が無い場合、この行を取り除く
page_load(gp, "CurvePreview");
// グラフページでアクティブレイヤを入手
GraphLayer gl = gp.Layers();
// 四角形を追加。X位置をxfromとxto変数で参照
GraphObject go;
add_rect(gl, go, trGetN.xfrom.dVal, 0, trGetN.xto.dVal, -1,
SYSCOLOR_BLUE, 2, LN_VERTICAL, true, false);
GUI の変更をプレビューグラフに反映
- プレビューグラフの更新を促すには、GetNGraphPreview_OnChange 関数のdwUpdateGraph 変数にUPDATE_GRAPH_CHANGED 部分を追加する必要があります。例えば、
// GetNGraphPreview_OnUpdateGraph を呼び出してグラフを
// 更新する部分も簡単に含む
if( !(dwUpdateGraph & UPDATE_GRAPH_CHANGED) )
dwUpdateGraph |= UPDATE_GRAPH_CHANGED;
- 以下のコードをGetNGraphPreview_OnUpdateGraph 関数に追加してグラフが更新されるようにします。コンパイルボタンをクリックし、コマンドウィンドウで「PrevBox -d」を実行します。
// pgTemp をPageBase クラスオブジェクトからGraphPage
// オブジェクトへ投げる
GraphPage gp(pgTemp);
GraphLayer gl = gp.Layers(); // アクティブなグラフレイヤを入手
GraphObject go = gl.GraphObjects("Rect");
double x0 = trGetN.xfrom.dVal;
double x1 = trGetN.xto.dVal;
// GUI上でXの位置を更新して四角形にする
vector vv(4);
vv[0] = x0; vv[1] = x1; vv[2] = x1; vv[3] = x0;
Tree tr;
tr.Root.Data.X.dVals = vv;
go.UpdateThemeIDs(tr.Root);
go.ApplyFormat(tr, true, true);
// グラフウィンドウをリフレッシュ
gp.Refresh(TRUE);
グラフオブジェクトのイベントでGUIを更新
プレビューグラフ上で四角形を移動/サイズ変更した時にGUIを更新するには、以下のように設定します。
- GetNGraphPreview_OnInitGraph関数のadd_rect 関数の後に、次のコマンドを追加します。
// 四角形が移動またはサイズ変更した時に
//プレビューダイアログに通知するイベントスクリプトをセット
// 他のイベントタイプはoc_const.hファイルのGRCT_*を確認
set_LT_script(go, "run -oc notify_dlg_on_move_obj;",
GRCT_SIZEMOVE);
- GetNGraphPreview_OnChangeに以下のコードを追加して、GUI上の新しい位置に更新します。コンパイルボタンをクリックし、コマンドウィンドウで「PrevBox -d」を実行します。
if( bChangedByGraph )
{
// 四角形の X from/to を入手してGUIを更新
GraphPage gp(pgTemp);
GraphLayer gl = gp.Layers();
GraphObject goRect = gl.GraphObjects("Rect");
Tree tr;
tr = goRect.GetFormat(FPB_DATA, FOB_ALL, TRUE, TRUE);
vector vv;
vv = tr.Root.Data.X.dVals;
trGetN.xfrom.dVal = vv[0];
trGetN.xto.dVal = vv[1];
// UPDATE_GRID_* 部分を追加して GUIを更新
if( !(dwUpdateGrid & UPDATE_GRID_SIMPLE) )
dwUpdateGrid |= UPDATE_GRID_SIMPLE;
}
プレビューボタンを追加
プレビューボタンを追加したり自動プレビューチェックボックスを追加するにはXファンクション: Xファンクションのカスタマイズ: ダイアログにカスタムボタンを追加する: GetN グラフプレビューダイアログにプレビューボタンを表示するを確認してください。
|