ニュートンメニュー

株式会社ニュートン

マイクロソフト認定パートナー

体験版ダウンロード

製品案内

カスタマイズ受付

ライセンスパック

ライセンスについて

製品購入ガイド

直販ショップ!
ニュートンストアで購入

コンポーネントソースで購入
SE Shopで購入
アット・ニフティストアで購入

優待販売・
キャンペーン情報

ユーザサービス
〔サポートページ〕

Windows 7
対応状況

Visual Studio
2010 対応状況

Visual Studio
2008 対応状況

サポート体制

お知らせ
・ニュースリリース
・イベント出展
・製品関連記事

会社概要

お問い合わせ先

SSL グローバルサインのサイトシール

 
ニュートンホーム Q&A
Chart ModelKit 3.7J

ファインチャートコンポーネント
Chart ModelKit 3.7J

このページは、Chart ModelKit 3.7J 関連のユーザ様より寄せられたご質問の一部とその回答を掲載しております。


【Chart ModelKit 3.7J Q&A一覧】

QNo.

タイトル

Q. 質問

日付

A. 回答

18 チャートのスクロール

Q. ペンレコーダのようなグラフを作成し、右端に常に最新の値を描き、グラフのX軸をスクロールさせるようなグラフを描きたいのですが、どうすればよいですか?

<実行イメージ>

 

2009/06/30

A. サンプルプロジェクトを用意いたしました。

このサンプルプロジェクトは、下のスクロールバーでチャートがスクロールします。

次のリンクよりサンプルプロジェクトをダウンロードできます。

ChartScrollingAxis.zip

 

17 十字線の描画とXY値の取得

Q. Chart ModelKitで、ChartViewerのグラフ上をクリックしたポイントに十字の線を描画し、その位置のX値とY値を取得したいのですがどうすればよいですか?
 

2009/06/30

A. サンプルプロジェクトを用意いたしました。

<画面例>


次のリンクよりサンプルプロジェクトをダウンロードできます。

GettingStarted2.zip

 

16 チャートの各要素にコードでアクセス

Q. Chart ModelKitでChartViewer上のチャートの各要素にコードでアクセスするにはどう記述すればよいですか?
 

2009/06/30

A. はい、Chart要素にアクセスするには、ChartViewer.Chart.GetByName()関数を使用します。

たとえば、チャート上の「AxisX」という名前の横軸の最大値を参照、設定する場合は、次のように記述します。
Axis axisX = (Axis)chartViewer1.Chart.GetByName("AxisX");

MessageBox.Show(axisX.MaxValue.ToString()); // 現在の最大値を表示
axisX.MaxValue = 100; // 最大値に100を設定

 

15

製品版なのに体験版ダイアログが表示される

Q. 体験版ではない製品版のライセンス登録を行ったChart ModelKit を含む.NET ModelKitを使用したアプリケーションをエンドユーザの実行環境で起動すると体験期間を示すダイアログ表示される場合があります。どうしたらよいですか?
 

2009/06/29

A. はい、それはプロジェクト内にある「licenses.licx」ファイルが関係しています。.NET ModelKitに限らず市販のコンポーネントをフォームに配置するとVisual Studioによってそのコンポーネントが自動的に「licenses.licx」にリスト(記述)されます。
しかし、フォームに配置せず実行時に新しいインスタンスを作成して利用するようなコードを記述してある場合は、「licenses.licx」にそのコンポーネントの記載はありません。
そういった場合にそのコンポーネントのライセンスが見当たらないため「体験版」などのダイアログが表示される仕組みになっているのです。
これを回避するためには、Visual Studioに頼らず必要なコンポーネントをあらかじめ「licenses.licx」ファイルに記載しておけばよいのです。

以下に、.NET ModelKitで使用するコンポーネントを製品別に記載します。必要部分をそのまま、「licenses.licx」に記載してください。

含まれる製品 コンポーネント名 licenses.licx上の記載
Report Sharp Shooter(全エディション)
および
ModelKit Suite
ReportManager PerpetuumSoft.Reporting.
Designer.ReportDesigner,
PerpetuumSoft.Reporting, Culture=neutral
Report Sharp Shooter(Liteを除く全エディション)
および
ModelKit Suite
ReportDesigner
(RSS.RunTimeDesigner)
PerpetuumSoft.Reporting.
Components.ReportManager,
PerpetuumSoft.Reporting, Culture=neutral
Report Sharp Shooter(Webを除く全エディション)
および
ModelKit Suite
ReportViewer
(RSS.Win)
PerpetuumSoft.Reporting.
View.ReportViewer,
PerpetuumSoft.Reporting, Culture=neutral
Report Sharp Shooter(Lite,Winを除く全エディション)
および
ModelKit Suite
SharpShooter
WebViewer
(RSS.Web)
PerpetuumSoft.Reporting.
Web.SharpShooterWebViewer,
PerpetuumSoft.Reporting.Web, Culture=neutral
OLAP ModelKit
および
ModelKit Suite
DataCube PerpetuumSoft.Olap.DataCube,
PerpetuumSoft.Olap,
Culture=neutral
Instrumentation ModelKit(Webを除く全エディション)
および
ModelKit Suite
Widget
(IMK.Win)
PerpetuumSoft.Instrumentation.
Windows.Forms.Widget,
PerpetuumSoft.Instrumentation, Culture=neutral
Instrumentation ModelKit(Winを除く全エディション)
および
ModelKit Suite
WidgetProducer
(IMK.Web)
PerpetuumSoft.Instrumentation.
Web.WidgetProducer,
PerpetuumSoft.Instrumentation.
Web,Culture=neutral
Chart ModelKit(Webを除く全エディション)
および
ModelKit Suite
ChartViewer
(Chart.Win)
PerpetuumSoft.Charts.Windows.
Forms.ChartViewer, PerpetuumSoft.Charts,
Culture=neutral
Chart ModelKit(Winを除く全エディション)
および
ModelKit Suite
WebChartViewer
(Chart.Web)
PerpetuumSoft.Charts.Web.
WebChartViewer,
PerpetuumSoft.Chart.Web,
Culture=neutral

 

14 グラフィック処理

Q. コードで、チャート上に線や矩形などを描画することができますか?

2008/10/17

A. はい、可能です。こちらのサンプルをご覧ください。

LinesInChart.zip

 

13

Visual Studio 2008のデザインのツールボックスに.NET Model Kit Suiteのコンポーネントが表示されません

Q. Visual Studio 2008がインストールされている環境に、.NET Model Kit Suiteをインストールしましたが、Visual Studio 2008のデザインのツールボックスに.NET Model Kit Suiteのコンポーネントが表示されません。
回避方法を教えてください。

 

2008/06/12
2008/07/30

A. .NET ModelKit Suite 3.7J のインストーラでは現在、Visual Studio 2008のIDEのツールボックスへのコンポーネントの自動登録のオプションがございませんので、次の通り手動で登録してください。

デザイン画面で「ツールボックス」上で右クリックメニューより
「タブの追加」を選び、例えば".NET ModelKit Suite 3.7J"といった
名称で新しいタブを作成します。
その新しいタブ上から、右クリックメニューの「アイテムの選択」を使います。

「アイテムの選択」ダイアログで名前空間でソート後、
名前空間が[PerpetuumSoft]で始まるものすべてにチェックをいれます。
「OK」ボタンを押します。

Chart ModelKit 3.7J(バージョン3.8) で修正され、インストールすれば Visual Studio 2008でも自動的にツールボックスに登録されるようになりました。  

12

.NET Model Kit Suiteをインストールできません

Q. Windows Vistaに.NET Model Kit Suiteをインストールしようとしているのですが、次のメッセージが表示されインストールできません。
回避方法を教えてください。


 

2008/06/05

A. Windows Vista上で次の設定を行ってください。
[コントロールパネル]→[ユーザアカウント]→[ユーザアカウント制御の有効化または無効化]→[ユーザアカウント制御(UAC)を使ってコンピュータの保護に役立たせる]のチェックを外してください。

その後、再度インストールを実行してください。

11 チャート

Q. 実行時にC#で"CustomPaletteItem"を実装するにはどうすればよいですか?

2008/04/30

A. 各系列値の色を変更するCustomPalette を使用したサンプルを作成しました。Series1 Palette プロパティをご覧ください。サンプルは以下からダウンロードできます。

TestChartSeriesValue.zip
 

10 パイチャート

Q. 実行時に各系列の値に色を設定するにはどうすればよいですか?

2008/04/30

A. あるSeries Valueの色を変更するには、 Series Value の数に応じて CustomPalette.Item プロパティを設定してください。次に、希望する Series Value インデックスパレットの Fill プロパティを変更してください。こちらのサンプルをご覧ください。

TestChartSeriesValue.zip

 

9

パイチャート -  パイスライスのラベル

Q. パイチャートを設定しています。値を追加するのはすごく簡単ですが、パイチャートの各スライスにテキストラベルをバインドする方法がわかりません。どうするのでしょうか?

2008/04/30

A. Formula プロパティのValueLabels に式を設定できます。この式は表示するテキストを定義します。また、カレントの値に文字列を結合("String" & Value)することもできます。
 

8

Y軸をデータソースにバインドする

Q. Y軸にdatetime 値、X軸には相対値を持つリボンチャート(両方とも同じテーブルから取得)を表示しなければなりません。どうやってY軸をデータソースにバインドできるのでしょうか?

2008/04/30

A. 実際には、"Value"プロパティにバインドできるようにするためにデータを変換しなければなりません(例:DateTime 型のToOADate ()関数を使用できます。Value プロパティにDateTime 型をバインドするのは典型的ではないので、実装は多数のファクタに依存します。

実際に何をする必要があるか詳しく教えてください。(どうしてY軸にDateTime
をしようするのですか?どのようなDateTime 型(Time/Date/Days/Hoursなど)を使用すればよいですか?Y軸のラベルには何を表示すればよいですか?)
 

Q. どうやってY軸にバインドするのか、double値以外の値のバインド方法を教えてください。Y軸でのDateTime 値の表示方法がわかれば、どのDateTime 型でも(時間:分なしのday値のラベル)試してみることができると思ったからです。

2008/04/30

A. Value-Axis(値軸)にバインドするために数値データが必要です。例えば、年間積算日を表示したい場合、次のように式をバインドして使用できます。

getDayOfYear(DateTimeProperty)
 

Q. 面(スプライン)チャートに系列が2つあります。1つはチャートの系列値で、2つ目はスケールラベルの値を書くために使用し、チャートとして表示しない値の配列です。
Series2を基にしてY軸のスケールラベルの値を計算するにはformula プロパティをどうやって設定すればよいですか?

2008/04/30

A. 問題は、ScaleLabels のテキストを計算するために系列の値を使用できないことです。
Series2が作成されるデータソースを変数として使用できます。

7

ScaleLables - 表示または非表示

Q. VB.NET アプリケーションで、2つの異なるリボン系列がほぼ同じ領域にあって、とてもうまく表示されています。時々、値の1つが飛び、グラフがとても高い位置に表示されてしまい、2番目の値がほとんど平らな線になって、Y軸が黒くなってしまいます。この場合、ScaleLables を非表示にしたいのですが、どうすればよいですか?

2008/04/30

A. 相対性(絶対性ではない)のScaleLabels.Step (例:10の代わりに10%)を使用することをお勧めします。
また、次のコードを使用して ScaleLabels を非表示にすることができます。

コード:

Dim chart As PerpetuumSoft.Charts.Chart = ChartViewer1.Chart
Dim labels As PerpetuumSoft.Instrumentation.Model.ScaleLabels = CType(chart.GetByName(<Scale labels name>), PerpetuumSoft.Instrumentation.Model.ScaleLabels)
If Not labels Is Nothing Then
    labels.Visible = False
End If

系列の線の色を変更する

Q. 動的にリボン系列の色を変更したいのですが、VB.NET のコードを教えてください。

2008/04/30

A. 次のコードを使用して線の色を変更できます。

コード:


Dim chart As PerpetuumSoft.Charts.Chart = ChartViewer1.Chart
Dim series As PerpetuumSoft.Charts.Series = CType(chart.GetByName("Series1"), PerpetuumSoft.Charts.Series)
If Not series Is Nothing Then
    series.Stroke = New SimpleStroke(LineStyle.<Your style>, Color.<Your Color>, <Your line width>)
End If

6 X軸の ScaleLabels

Q. ユーザが見たい日付データを選択できるようにしています。過去3ヶ月のラベルを取得した場合、X軸のラベルがすべて別のラベルと重なってしまいます。ラベルを5つ飛ばしまたは10飛ばしで表示する方法はありますか?

2008/04/30

A. ScaleLabels.Step プロパティを使用してください。

5

コードでデータセットからチャートの値を取得する

Q. 以下のコードを使用すると、データは静的になり、データセットのデータではありません。

コード:


series.Values.Add(PerpetuumSoft.Charts.SeriesValue.Create(2, 6));

    コードを使って、データセットをチャートにバインドしたい。

2008/04/30

A. サンプルを作りました。このサンプルはチャートを作成し、系列を動的にデータソースにバインドする方法を示しています。次よりダウンロードしてください。

CreatingChartDynamicallyExample.zip (VB.NET)

BindToDataSet()メソッドをご覧ください。チャートにデータソースを追加するコードがあります。
ChartViewer1.DataSources.Add(New PerpetuumSoft.Charts.Windows.Forms.ChartDataSource(DataTable1, "MyDataSource"))

そして、系列のプロパティにこのデータソースをバインドします。
series.Bindings.Add(New PerpetuumSoft.Charts.SeriesBinding("Argument", "ColumnX"))
series.Bindings.Add(New PerpetuumSoft.Charts.SeriesBinding("Value", "ColumnY"))
 

4

エラー:
ChartArea オブジェクト参照がオブジェクトのインスタンスに設定されていません

Q. まず、私のソースコード(D2005 .NET)は以下の通りです。

コード:


function XY...
var
area : PerpetuumSoft.Charts.ChartArea;
series : PerpetuumSoft.Charts.Series;
axisX : PerpetuumSoft.Charts.Axis;
axisY : PerpetuumSoft.Charts.Axis;
title : PerpetuumSoft.Charts.Title;
legend : PerpetuumSoft.Charts.Legend;
begin
chart := PerpetuumSoft.Charts.Chart.Create;
area := PerpetuumSoft.Charts.ChartArea.Create;
series := PerpetuumSoft.Charts.Series.create;
axisX := PerpetuumSoft.Charts.Axis.create;
axisY := PerpetuumSoft.Charts.Axis.create;
title := PerpetuumSoft.Charts.Title.create;
legend := PerpetuumSoft.Charts.Legend.create;

series.Name := 'Series1';
series.ScaleType := perpetuumsoft.charts.ScaleType.Numerical;
series.View := PerpetuumSoft.Charts.AreaSeriesView.Create;
series.Values.Add(PerpetuumSoft.Charts.SeriesValue.Create(0, 3));
series.Values.Add(PerpetuumSoft.Charts.SeriesValue.Create(1, 8));
series.Values.Add(PerpetuumSoft.Charts.SeriesValue.Create(2, 6));
series.Stroke := PerpetuumSoft.Framework.Drawing.SimpleStroke.create;
series.Fill := PerpetuumSoft.Framework.Drawing.LinearGradientFill.Create;
series.AutoArgument := False;

axisX.Arrow := SharpAngleAxisArrow.create;
axisX.Name := 'AxisX';
axisX.stroke := PerpetuumSoft.Framework.Drawing.SimpleStroke.create;
axisX.StartFromZero := False;

axisY.Arrow := SharpAngleAxisArrow.create;
axisY.Name := 'AxisY';
axisY.Stroke := PerpetuumSoft.Framework.Drawing.SimpleStroke.create;
axisY.StartFromZero := false;

title.Name := 'Title1';
title.TextFill := PerpetuumSoft.Framework.Drawing.SolidFill.create(Color.Aqua);
title.Text := 'My Chart';
title.DockingType := PerpetuumSoft.Charts.DockingType.Top;
title.DockingStyle := PerpetuumSoft.Charts.DockingStyle.Outside;
title.Center := PerpetuumSoft.Framework.Drawing.Vector.Create(216,8.6).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
title.Size := PerpetuumSoft.Framework.Drawing.Vector.Create(432,17.28).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
title.TextAngle := 0;

legend.BadgeIndent := 0;
legend.Center := PerpetuumSoft.Framework.Drawing.Vector.Create(386.44,39.68).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
legend.DockingStyle := perpetuumSoft.Charts.DockingStyle.Outside;
legend.DockingType := perpetuumsoft.Charts.DockingType.Right;
legend.ItemMargins := PerpetuumSoft.Framework.Drawing.Margins.Create(3.2,3.2,3.2,3.2);
legend.Name := 'Legend1';
legend.Size := PerpetuumSoft.Framework.Drawing.Vector.Create(32,32).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
legend.TextFill := PerpetuumSoft.Framework.Drawing.SolidFill.Create(Color.AliceBlue);

area.Name := 'ChartArea';
area.Dock := PerpetuumSoft.Charts.ChartAreaDockStyle.Client;
area.Fill := PerpetuumSoft.Framework.Drawing.SolidFill.Create(Color.White);
area.Palette := PerpetuumSoft.Charts.PaletteContrast.Create;
area.Center := PerpetuumSoft.Framework.Drawing.Vector.Create(216,152).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
area.Elements.Add(series);
area.Elements.Add(AxisX);
area.Elements.Add(AxisY);
area.Elements.Add(Title);
area.elements.Add(legend);

chart.GridStep := 16;
chart.MeasureUnit := &Unit.Pixel;
chart.Name := 'Chat1';
chart.Size := PerpetuumSoft.Framework.Drawing.Vector.Create(432,304).convertUnits(&Unit.Centimeter,&Unit.InternalUnit);
nicht auf eine Objektinstanz festgelegt
chart.Elements.Add(area);
chartViewer1.Chart := chart;
end;



別のスレッドのサンプルからこのコードを作成しました。ChartViewer で次のエラーが出ます。

引用:

ChartArea : オブジェクト参照がオブジェクトのインスタンスに設定されていません。


ゼロの参照はないのにどうしてこのエラーが出るのかわかりません。

2008/04/30

A. Delphiコードを見てみたら、軸の方向が設定されていませんでした。このコードをVB.NET で確認したら同じようなエラーが出ました。その後、次のコード(VB.NET)を使用して軸の方向を設定したら、動作しました。

axisX.Direction = PerpetuumSoft.Charts.AxisDirection.X
axisY.Direction = PerpetuumSoft.Charts.AxisDirection.Y
 

3 パラメータをチャートに渡す

Q. 実行時にチャートのタイトルや凡例の値を設定したいので、パラメータとしてチャートに渡さなければなりません。どうしたらいいですか?
 

2008/04/30

A. 動的にチャートを作成し、実行時に一部のプロパティを変更する方法を示した簡単なサンプルを作りました。次よりダウンロードできます。

CreateChartDynamically.zip (C#)
 

2

Chart ModelKit とOLAP ModelKitのコードをバインドする

Q. ChartSampleCenterの中にあるChart ModelKitをOLAP ModelKitにバインドさせるサンプルコードを見てみました。

列と行を切り替えても、Chart ModelKitのXスライスとYスライスがその切り替えについていかないことに気付きました。
切り替えたときにXスライスとYスライスも更新されるコードはありますか?

2008/04/30

A. 行を列に変えてデータキューブのレイアウトを変更するという意味でしょうか?それなら、データは再計算されます。もう1つの件は、このサンプル内のグラフは特定のレイアウトで作成されます。従って、他のレイアウトではキューブのスライスにデータがない場合があります。グラフを変更しても、正しくない場合があります。

違うことでしたら、もう少し詳しく教えてください。

Q. 説明します。

ユーザがOLAP Model Kit を変更するたびに自動的にその変更がOLAP チャートに反映されるようにOLAP Model Kit にOLAP チャートをバインドしたい。更に、OLAP チャートをバインドし、変更を反映させるコードはデータソースの構造とは完全に独立させる必要があります。

ChartCenterSampleで行を列にドラッグ&ドロップしたら、チャートも同じことを行えるようにしたい。

良い例としてはOfficeのWeb Component (Windows Formsのコンテキストで使用可能)です。OWCのChartSpaceをPivotTableにそのようにバインドできます。

Chart ModelKit ではできますか?

2008/04/30

A. データキューブのレイアウトに応じて、コードからデータソース内にフィールドを割り当てることができます。次のサンプルをご覧ください。

ChartWithOLAPSample.zip

これは簡単な例です。データキューブのレイアウトに応じてチャートを変更する別の方法がいくつかあります。
 

1

チャートが新しい値に更新されない

Q. 非常にシンプルなWinFormsチャート(デフォルトのスプラインチャート)があって、標準の値配列リストが読み込まれます。
新しい値に更新するには何をしなければならないですか?

"reload"を呼び出しても何も変わりません。
私がしたのは次の通りです。

private void FillLChart()
{
ArrayList ints = new ArrayList();
for (int i = 0; i < 10; i++)
{
ints.Add(new Point(i, i*2));
}
chartViewer1.DataSources.Add(new ChartDataSource(ints, "points"));
chartViewer1.Reload();
}

何が足りないのでしょうか?

2008/04/30

A. 系列のDataSourceプロパティを設定すればデータソースを表示するはずです。それには次のことを行ってください。

1) series1.DataSourceプロパティのデザイナを立ち上げる
2) DataSource フィールドにデータソース名(お客様のデータソース名は"points"です)を入力してください。
3) argument とvalue にフィールド名を入力してください。お客様の場合、Argument プロパティに"X"、Value プロパティに"Y"を入力しなければなりません。
 

 

Copyright (C) NEWTONE Corporation. All rights reserved.