PanRollingチャートギャラリーから、銘柄と株式コードを取得するC# WPFアプリケーションを作成する
実際に、C# WPFで、PanRollingチャートギャラリーから、銘柄と株式コードを取得できるか、確認したいと思います。
WPFアプリケーションでPanRollingチャートギャラリーから、銘柄と株式コードの一覧を取得するサンプルプログラムです。
PanRollingチャートギャラリーを操作するcomを利用する手順
アプリケーションが、PanRollingチャートギャラリーから、株価データを取得するためには、comを使用する必要があります。そのため、利用するパソコンに、あらかじめ、PanRollingチャートギャラリーが、インストールされている必要があります。
実際に購入してから、自分に、C#から使うだけのスキルが無いことが明確になると、寂しい気持ちになるので、体験版を使って動作を確認していきます。
PanRollingチャートギャラリーの体験版は、「 Pan Rolling相場アプリケーション試用版」としてダウンロードできます。
- WPFアプリケーションを作成する
- 参照を追加する
- [プロジェクト] - [参照の追加] - [COM] タブ を選択
- Pan Active Market Database 1.3にチェック
- ActiveMarket という参照が追加される。
使用されている COM DLL は、amarket.dll です。
オブジェクトブラウザを使って、利用可能なメソッドを確認する
C#には、リフレクションと呼ばれる機能が存在するため、プログラムから、クラスや列挙体の内容を確認できます。また、プログラムを自分で作成しなくても、Visual Studioには、オブジェクトブラウザという機能が用意されており、その機能で、クラスの内容を確認することができます。
PanRollingチャートギャラリーを操作するcomにおいても、使用可能なメソッドは、オブジェクトブラウザを使用して確認できます。
また、オブジェクトブラウザで確認しなくても、インストールしたフォルダに、ヘルプファイルamarket.chmが存在します。
表示から、オブジェクトブラウザを選択します。
オブジェクトブラウザで、確認したいクラスを選択する。
PanRollingチャートギャラリーから、株式コードを取得するC# WPFアプリケーションを作成する
C#の技能が向上してくると同じと認識できるのかもしれませんが、C#にあまり馴染んでいない状況では、コンソールアプリケーション、Formアプリケーション、WPFアプリケーションは、全く、異なるコードに見えます。
私は、WPFアプリケーションを利用しているので、WPFアプリケーションで、利用できるコードが必要です。
まずは、PanRollingチャートギャラリーから、株式コードを取得するC# WPFアプリケーションを作成します。
コードと銘柄を格納するクラス
stock_CodeAndName.cs
using System;
namespace PanChart_GetValue
{
class stock_CodeAndName
{
public string stock_name { get; set; }
public string stock_code { get; set; }
public stock_CodeAndName(string code, string name)
{
stock_code = code;
stock_name = name;
}
public stock_CodeAndName(object code, object name)
{
stock_code = Convert.ToString(code);
stock_name = Convert.ToString(name);
}
}
}
コードと銘柄のリストを格納するクラス
stock_CodeAndNames.cs
using System.Collections.ObjectModel;
namespace PanChart_GetValue
{
class stock_CodeAndNames
{
public ObservableCollection _CodeAndNames = new ObservableCollection();
public stock_CodeAndNames()
{
ActiveMarket.Names Names = new ActiveMarket.Names();
System.Array codeArray;
System.Array nameArray;
Names.AllNames(ActiveMarket._KindFlag.AM_KINDFLAG_SPOTS, out codeArray, out nameArray);
for (int i = 0; i < codeArray.Length; i++)
{
_CodeAndNames.Add(new stock_CodeAndName(codeArray.GetValue(i+1), nameArray.GetValue(i+1)));
}
}
}
}
メインウインドウ
MainWindow.xaml
<Window x:Class="PanChart_GetValue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="株式銘柄リスト" Height="400" Width="350">
<DockPanel>
<DockPanel DockPanel.Dock="top">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Name="stock_code_box"
Height="23" Grid.Column="0"/>
<TextBox Name="stock_name_box"
Height="23" Grid.Column="1"/>
</Grid>
</DockPanel>
<ListView Name="TradingNameList">
<ListView.View>
<GridView>
<GridViewColumn Header="株式コード"
DisplayMemberBinding="{Binding stock_code}" />
<GridViewColumn Header="銘柄名"
DisplayMemberBinding="{Binding stock_name}" />
</GridView>
</ListView.View>
</ListView>
</DockPanel>
</Window>
分離コード
MainWindow.xaml.cs
using System.Windows;
using System.Windows.Controls;
namespace PanChart_GetValue
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
stock_CodeAndNames CodeAndName = new stock_CodeAndNames();
TradingNameList.ItemsSource = CodeAndName._CodeAndNames;
}
private void TradingNameList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// 項目を選択したとき、それぞれのメンバを表示する
// ListViewで何も選択されていない場合は何もしない
if (TradingNameList.SelectedItem == null) return;
// ListViewで選択されている項目を取り出す
stock_CodeAndName ListItem = (stock_CodeAndName)TradingNameList.SelectedItem;
// ListViewで選択されている項目をテキストボックスに表示する
stock_code_box.Text = ListItem.stock_code;
stock_name_box.Text = ListItem.stock_name;
}
}
}
実行結果
株式コードと銘柄名が表示されます。
リスト内で、銘柄を選択すると、上部のTextBlockに表示されます。
参考