行列ブックの基本操作
Origin Cの MatrixPage クラスは、Originの行列ブックに共通するメソッドとプロパティを提供します。このクラスは、Page クラス由来のもので、そのメソッドとプロパティを継承します。そして、行列ブックはOriginのWorksheetPageと同じデータ構造レベルに属し、どちらもウィンドウです。そのため、これらの操作は多くの面で似通っています。
ワークブックのような操作
行列ブックとワークブックの操作は似通っていて、多くの部分で共通しているので、ワークブックの基本操作の章を利用できます。
- 新しい行列ブックを作成
同メソッド Create を使用します。MatrixPage matPg; matPg.Create("Origin"); // Originテンプレートを使用して行列ブックを作成
- 行列ブックを開く
Openメソッドにより行列ブックを開く場合の違いは、行列ブックの拡張子がogm であることです。 - 行列ブックにアクセスする
既存の行列ブックにアクセスする方法は複数あり、メソッドはワークブックと同様です。Project クラスは、プロジェクト内の全行列ブックのコレクションを含みます。次のサンプルでは、それらをどのようにループするかを示します。foreach(MatrixPage matPg in Project.MatrixPages) out_str(matPg.GetName()); // 行列ブック名を出力
また、Collection クラスのItemメソッドに、行列ブックのインデックスを渡すことによって行列ブックにアクセスできます。
MatrixPage matPg; matPg = Project.MatrixPages.Item(2); if(matPg) // 3番目の行列ブックがあるとする out_str(matPg.GetName()); // 行列ブック名を出力
行列ブック名がわかっている場合、クラスコンストラクタにその名前を渡すことで、行列ブックにアクセスできます。
MatrixPage matPg("MBook1"); if(matPg) // "MBook1"という行列ブックがある場合 matPg.SetName("MyBook1"); // 行列ブック名を出力
- 行列ブックを保存
メソッド SaveToFile は、行列ブックを *.ogm ファイルとして保存するのに使用されます。MatrixPage matPg("MBook1"); // 行列ブックを OGM ファイルとして保存 bool bRet1 = matPg.SaveToFile("D:\\" + matPg.GetName() + ".ogm");
- 行列ブックの表示/非表示
これは、OriginObjectクラス由来のShowプロパティによるワークブックの表示/非表示と同じです。 - 行列ブックをアクティブにする
行列ブックをアクティブにするには、ワークブックと同じように PAGE_ACTIVATE 値のパラメータを沙汰すことによりSetShowメソッドを使用できます。MatrixPage matPg("MBook1"); matPg.SetShow(PAGE_ACTIVATE); // 行列ブックをアクティブにする
- 行列ブックを削除
行列ブックの削除にも、Destroy メソッドが使用できます。MatrixPage matPg; matPg = Project.MatrixPages.Item(0); // プロジェクト内の最初jの行列を取得 if( matPg ) // 行列ブックがある場合 matPg.Destroy(); // 行列ブックを削除
- 行列ブックを複製
Clone メソッドを使用して行列ブックを複製します。// データとスタイル保持して "MBook1" ウィンドウを複製 // 呼び出す前にこれらのウィンドウが存在することを確認 MatrixPage matPage("MBook1"); MatrixPage matPage1 = matPage.Clone();
- 行列ブックの名前とラベル
行列ブックのショートネーム、ロングネーム、コメントを扱うために、Origin Cは、ワークブックの扱いと同様に、受け継がれたメソッドを含むSetName, SetLongName, SetComments, Label プロパティを提供します。
イメージサムネールの表示
イメージサムネールを表示または非表示にするには、MatrixPage::ShowImageThumbnailsメソッドを使用出来ます。
MatrixPage mp("tangent"); mp.ShowImageThumbnails(true); // サムネールを有効にするために true をパス