Xファンクションカスタムダイアログ Xファンクションはインターフェイスとしてダイアログビルダを元にカスタムダイアログを作成できます。ユーザがカスタムダイアログを使用してダイアログ内での自動更新もサポートさせる場合、あるいはOriginのメニューからダイアログを開く場合はカスタム化したダイアログと共にXファンクションを作成できます。そのご、OPXファイルを作成すると、他のユーザとも共有できます。
リソースのみのDLLをOrigin Cからアクセス可能なVisual Studio 2008 または 2010で構築するには、このサンプルを確認してください。リソースのみのDLLを作成するセクションを実行すると2つのファイル、Welcome.dll と resource.hを作成できます。
#include <..\Originlab\DialogEx.h> #include "resource.h" // リソースのファイル名を拡張子なしで表示、ここはWelcome.dllを記入 // DLL ファイルが .h ファイルと同じフォルダ内にある事を前提としている #define STR_DLG_RESOURCE_DLL "Welcome" // リソース DLLのファイル名 #ifdef _OWIN64 #define STR_DLG_RESOURCE_DLL "Welcome_64" // 64 bit DLL #else //!_OWIN64 #define STR_DLG_RESOURCE_DLL "Welcome" // 32 bit DLL #endif// _OWIN64 class CustomDialog : public ResizeDialog { public: // 重要: IDD_MY_DIALOG はダイアログのリソースIDを示す // STR_DLG_RESOURCE_DLL はダイアログのリソースDLL ファイルを示す CustomDialog(TreeNode& trXFSettings) : ResizeDialog( IDD_MY_DIALOG, STR_DLG_RESOURCE_DLL ) { m_trXFSettings = trXFSettings; } int DoModalEx(HWND hParent = NULL) { InitMsgMap(); return ResizeDialog::DoModal(hParent); } protected: EVENTS_BEGIN ON_INIT(OnInitDialog) ON_OK(OnOK) EVENTS_END BOOL OnInitDialog() { ResizeDialog::OnInitDialog(); Edit ed; ed = GetDlgItem(IDC_EDIT1); // 初期ダイアログのコントロールをXファンクションで実行 ed.Text = ftoa(m_trXFSettings.factor.dVal); return TRUE; } BOOL OnOK() { Edit ed; ed = GetDlgItem(IDC_EDIT1); m_trXFSettings.factor.dVal = atof(ed.Text); // 入力値が0の場合、自動的に1に変更される if ( m_trXFSettings.factor.dVal == 0 ) m_trXFSettings.factor.dVal = 1; return TRUE; } private: TreeNode m_trXFSettings; };
//put additional include files here #include "CustomDlg.h"
//put your own support static functions here bool OpenCustomDlg(TreeNode& tr, PEVENT_FUNC pfn, LPCSTR lpcszTitle, LPCSTR lpcszDescription, HWND hWndParent) { CustomDialog dlg(tr); if( dlg.DoModal(GetWindow()) ) { tr.AutoUpdate.nVal = AU_AUTO; // デフォルトは2(手動) return true; } else // ダイアログでキャンセルをクリック { return false; // メイン関数を呼び出さない } }
out = in * factor; // "Col(A)*8" のようなコメントを出力列のコメントラベルに表示 DataRange drIn; drIn = in.GetSourceDataRange(); Worksheet wks; int c1, c2; drIn.GetRange(wks, c1, c2); Column col(wks, c1); if( wks && col ) { string strOutputComment; strOutputComment.Format("Col(%s)*%g", col.GetName(), factor); out.SetOutputComment(strOutputComment); }
パッケージマネージャを使用すると、1つのパッケージファイルとして他のOriginユーザに渡すことができます。このパッケージをインストールするには、Originに直接パッケージファイルをドロップすれば行えます。