データグリッドビュー

Size: px
Start display at page:

Download "データグリッドビュー"

Transcription

1 データグリッドビュー.NET の新しいデータグリッドを大解剖.NET で (Visual Studio 2005 を使って )Windows アプリケーションを作成する場合 其のユーザーインターフェイスの構築には 予め用意されたコントロール ( 或いは コンポーネント ) 部品をフォームにドラッグ & ドロップし乍ら行うのが一般的で有り 此れは Visual Studio の大きな特徴でも有る 其の様なコントロール部品は.NET では標準 或いは サードパーティに依り多数用意されて居る 然して 其の様なコントロール部品の中でも 特に業務アプリケーション構築に於いて重要と成るのが グリッドコントロールで有る 謂う迄も無く グリッドコントロールは データを表形式で表示し セル内の値を編集したり 行追加に依りデータを追加したりする為の物で有る データベース上のレコードの参照 追加 削除 更新処理が主と成る業務アプリケーションでは グリッドコントロールの使い勝手が大きなポイントと成ると謂える 此の様に グリッドコントロールが業務アプリケーションで果たす役割は大きいが 其れに比例してグリッドコントロールに要求される機能も多い 実際.NET に標準で用意されて居るグリッドコントロール ( 具体的には DataGridView コントロール ) は 数有るコントロールの中でも最も複雑で規模の大きい物に成って居る 其の為 此れを使い熟し 適切な実装を行うには ( 行える様に成るには ) 少なからずの工数が必要と成る 本稿では 此の最も頻繁に利用され 開発者が実装に最も労力を要するで有ろうグリッドコントロールを使い熟す為に グリッドコントロールに付いて研究し乍 其の基礎から応用迄を解説して行く 先ずは.NET 標準のグリッドコントロールに付いて観て行くが 後半では サードパーティ製のグリッド製品等も取り上げる予定で有る 猶.NET でグリッドコントロールと謂えば Windows アプリケーション用と Web アプリケーション (ASP.NET) 用の物が有るが 本稿では Windows アプリケーション而巳にターゲットを絞って解説する Visual Studio 2005 で新たに追加された DataGridView コントロール.NET 標準のグリッドコントロールと仕ては.NET Framework 1.x(Visual Studio.NET 及び Visual Studio.NET 2003) 迄は DataGrid コントロールが使われて居たが.NET Framework 2.0(Visual Studio 2005) では全く新しく DataGridView コントロール ( 以下 DGV コントロールと略す ) が追加された.NET Framework 2.0 でも DataGrid コントロールは利用可能だが 此れは下位互換性の為に残されて居る丈で有る 此の事は DGV コントロールが DataGrid コントロールから根本的に大きく変わって居る事を意味して居る 2 つのグリッドコントロールの主な違いに付いては MSDN の Windows フォームの DataGridView コントロールと DataGrid コントロールの違いに付いて で纏められて居る 其の記述の内 先ず注目す可きは次の部分で有る DataGridView コントロールは全く新しいアーキテクチャを採用して居る為 DataGridView コントロールで DataGrid のカスタマイズされた機能を使用出来る様にする簡単な変換パスは有りません 折角 此れ迄多くの開発者が DataGrid コントロールに付いて多くのノウハウやテクニックを蓄積して来たと謂うのに 其等の殆どを捨てて仕舞わなければ成らないので有る! 今後は此の様な互換性の無い置き換えは控えて欲しい物で有る -1-

2 DataGridView コントロールの構造 扨て 気を取り直して DataGrid コントロールよりも簡単に拡張やカスタマイズが行えると謂う DGV コントロールに 新たな気持ちで取り組んで行く事にする 先ずは DGV コントロールの各名称を確認して置く事にする 以下の画面は DGV コントロールを配置した Windows アプリケーションの実装例で有る DataGridView コントロールの各名称此の画面の Windows アプリケーションでは フォームの中央に DGV コントロールを配置して居る 1 選択中のセル 2 行ヘッダ 3 列ヘッダ 4 イメージ列 5 テキストボックス列 ( デフォルトで使用される列 ) 6 リンク列 7 コンボボックス列 8 チェックボックス列 9 ボタン列 基本的に DGV コントロールでは表形式のデータを表示する 詰まり 各行が 1 つの (1 組の ) データを表し ( 此の画面では全部で 5 行のデータを表示して居る ) 各列には各データ内の同じ種類の項目が並ぶ ( 例えばタイトル表示用の列ならば各データのタイトル項目而巳 ) 拠って データが増えて行けば グリッドは縦方向に其れに合わせて長く成って行く事に成る 実際のデータは 各 セル 内に表示される ( 図中 1) セルは キーボードやマウスに依り選択する事が出来 選択されて居るセルには色が付けられる 複数個のセルを選択する事も出来る 先頭の行は 行ヘッダ と呼ばれる行 ( 図中 2) で有り 此処には各列の見出しを表示する 行ヘッダ内の各列部分をクリックすれば 其の列の項目でデータを昇順 又は 逆順に並べ替える様にする事も出来る 同様に 最も左端の列は 列ヘッダ と呼ばれる列 ( 図中 3) で有る 列ヘッダ部分をクリックする事に依り行単位での選択が出来る DGV コントロールでは 単成るテキストや数値以外のデータもセルで表示可能で有る 上記の画面では 全部で 6 種類の列を使用して居るが ( 図中 4~9) 此れが DGV コントロールに標準で備わって居る総ての種類の列で有る 以前の DataGrid コントロールに比べると イメージ列やボタン列等が増えて居る 此等以外の特殊な列 ( 例えば日付を選択する為の DataTimePicker コントロールを表示する様な列 ) を使いたければ 新しい列の種類を自作して表示させる事も出来る DataGridView コントロールのオブジェクト構造 次に DGV コントロールを構成する一連のオブジェクトに付いて観て行く事にする コントロールで有る DGV は クラスライブラリ的に観ると DataGridView クラスの 1 つのインスタンス ( オブジェクト ) で有るのだが 実際に DGV コントロールを構成する行や列 セルは総て個々の別のオブジェクトで有り DGV オブジェクトは 謂わば 此等のオブジェクトの入れ物と成って居る -2-

3 此の為 DGV コントロールのプログラミングをマスターするには 各オブジェクトの基と成るクラスの機能 ( プロパティやメソッド等 ) は基より 各クラスの継承関係や各オブジェクトの包含関係をも熟知して置く必要が有る 列オブジェクト 先ず列を示すオブジェクトだが 此れは DataGridViewColumn クラスの派生クラスのオブジェクトで有る ( ) 此の派生クラスには 次の図に示す様に 標準では 6 種類のクラスが存在し 先程の画面の 6 種類の列に対応して居る DataGridViewColumn クラスでは 列オブジェクト に共通のメソッドやプロパティが実装されて居り 各種類の列に固有の機能は 其の派生クラスで実装されて居ると謂う訳で有る 以降で登場する DGV コントロール関連のクラス ( クラス名は総て DataGridView~ で始まる ) は 総て System.Windows.Forms 名前空間に属するクラスで有る 列オブジェクトのクラス階層 此の図の先頭に有る DataGridViewElement クラスは DGV コントロールの総ての要素 ( 列や行やセル ) のベースと成るクラスで有る 此のクラスには 例えば DataGridView プロパティが有るが 此のプロパティに依り DGV コントロールの何の要素からも 其れが属して居る DGV コントロールを参照する事が出来る 其の派生クラスで有る DataGridViewBand クラスは 列や行等の帯状 (Band) のオブジェクトを表すベースクラスで有る DataGridViewElement クラスには 今 1 つ派生クラスが有り 其方は セルを表す DataGridViewCell クラスで有る ( 後述 ) 因みに 独自のコントロールを配置した列を使いたければ DataGridViewColumn クラスから継承した派生クラスを自作する事に成る 行オブジェクト DGV コントロールで既に行データを表示して居る場合 各行の行データは 行オブジェクト に依り表される 行オブジェクトとは DataGridViewRow クラスのオブジェクトで有る 此のクラスも列オブジェクトと同様に DataGridViewBand クラスの派生クラスで有る 行オブジェクトのクラス階層 -3-

4 セルオブジェクト 1 つの行オブジェクトには データの項目数 ( 其の行が属する DGV コントロールの列数 ) 分の セルオブジェクト が含まれる DGV コントロールで実際に表示されて居るデータを保持するのは 此のセルオブジェクトで有る セルオブジェクトは 以下の図で示した DataGridViewCell クラスをベースとする派生クラスのオブジェクトで有る セルオブジェクトの種類は 自ずと列オブジェクトの種類と同じ丈必要と成る ( ) 例えば イメージ列に含まれるセルは総て DataGridViewImageCell オブジェクトで有る 此の為独自の列を作った場合には 併せて其れに対応した独自のセルも実装しなくては成らない セルオブジェクトのクラス階層 DGV コントロールが管理するオブジェクトは 実際には 此等以外にもヘッダ内のセルを表すオブジェクト等多数存在するが 先ずは 此等のオブジェクトを押さえて置けば良い DataGridView コントロールのコレクション 次の図は DGV コントロールの主要なオブジェクトの関係を纏めた物で有る DGV コントロールの主要なオブジェクトの関連列とセルに付いては 実際には此の図で示して居る DataGridViewColumn オブジェクト 或いは DataGridViewCell オブジェクトの派生オブジェクトと成る -4-

5 図の左上に有る DGV から伸びて居る Columns プロパティ は DGV コントロールの此のプロパティから各列の列オブジェクトにアクセス出来る事を示して居る 同様に Rows プロパティからは DGV コントロールに含まれる各列の列オブジェクトにアクセス出来る 亦 図では少し解り難いが 列オブジェクトの Cells プロパティからは 其の列に含まれる個々のセルオブジェクトにアクセスする事が出来る 此等 3 つのプロパティの実体は 以下の表に示すコレクションクラスのオブジェクトで有る 3 つのプロパティと其れに割り当てられるオブジェクトのクラス プロパティ名 コレクションクラス名 ( プロパティの型 ) Columns プロパティ DataGridViewColumnCollection クラス Rows プロパティ DataGridViewRowCollection クラス Cells プロパティ DataGridViewCellCollection クラス 此等のプロパティには DGV コントロールに列や行を追加した時 又は 行にセルを追加した時に 該当するコレクションクラスのオブジェクトが作成され 設定される 此処では詳しく述べないが コレクションクラスの利用は.NET プログラミングでは頻繁に登場する為 是非押さえて於いて欲しい 例えば Add メソッドに依りコレクションの要素を追加したり インデクサ (VB ではデフォルトプロパティと成って居る Item プロパティ ) を使ってインデックス番号に依りコレクションの要素を取得したりと謂った具合で有る 以下では実際にコードを記述して DGV プログラミングを解説するが 其処で此等のプロパティにも触れる 初めての DataGridView プログラミング 其れでは 此処迄に登場したオブジェクトに付いて より理解を深める為に 実際にコードを記述して観る事にする 此処では次の画面の様なグリッドを表示するプログラムを記述して行く 此処で作成するサンプル プログラムの実行画面 2 列目ではクラスライブラリに含まれて居るアイコンを表示して居る DGV コントロールにデータを表示する為のプログラミングは 基本的に以下の様な手順と成る Visual Studio 2005 の IDE や DGV コントロールのデータバインディング機能 ( 次回で解説予定 ) を使えば (2) や (3) の手順はコードを記述せずとも可能だが 今回は総て明示的にコーディングを行って行く (1)DGV クラス (DGV コントロール ) のインスタンス化 (2) 列オブジェクトの追加 (3) 行オブジェクトの追加 (= データの追加 ) -5-

6 例えば データベースでは 最初にスキーマ ( カラムと成る項目 ) を決めてからしかレコードを追加出来ない様に DGV コントロールでも 先ず 列オブジェクトを追加して置き 其の列の種類に従った幾つかのセルを含む行オブジェクトを追加して行く事に成る 列オブジェクトの作成と追加 手順 (1) の DGV クラスのインスタンス化は 単にクラスを New する丈で有る Dim dgv As New DataGridView( ) DataGridView dgv = new DataGridView( ); Visual Basic C# DGV オブジェクトは 通常のコントロールと同様に フォームの Controls プロパティに追加すればフォーム上に表示される 次に 列で表示したいデータの種類に対応した列オブジェクトを作成する 此処では第 1 列でテキスト 第 2 列で画像を表示するので テキストボックス列とイメージ列を使用する Visual Basic Dim column1 As New DataGridViewTextBoxColumn column1.headertext = "1 列目の見出し " Dim column2 As New DataGridViewImageColumn column2.headertext = "2 列目の見出し " C# DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn( ); column1.headertext = "1 列目の見出し "; DataGridViewImageColumn column2 = new DataGridViewImageColumn( ); column2.headertext = "2 列目の見出し "; 亦 此処では 列ヘッダに見出しを表示する為に HeaderText プロパティに見出し用の文字列を設定して居る 此のプロパティは グリッドが表示されて居る時にも読み書きが可能で有る 扨て DGV クラスのプロパティの中で列オブジェクトを管理するのは 先程の図でも登場した Columns プロパティで有る 作成した列オブジェクトは 此のプロパティに追加して行く事に依り 実際に DGV コントロールに列がセットされる事に成る dgv.columns.add(column1) dgv.columns.add(column2) dgv.columns.add(column1); dgv.columns.add(column2); Visual Basic C# 因みに Visual Studio 2005 を使って居る場合には DGV コントロールをツールボックスからドラッグ & ドロップし [DataGridView タスク ] メニューから列の追加を選択すれば ダイアログから列を追加する事が出来る -6-

7 Visual Studio 2005 による列の追加列の名前 型 ( 種類 ) ヘッダに表示されるテキストを設定して [ 追加 ] ボタンをクリックすれば DGV コントロールに列が追加される 1 フォームに配置した DGV コントロール 2 DGV コントロールのスマートタグから開く [DataGridView タスク ] メニュー 3 列の種類を選択 3 の型を選択するコンボボックスでは 上述した 6 種類の列が選択出来る筈で有る 猶 [ 列の追加 ] ダイアログには データバインド列 と 非バインド列 の 2 つの列が有るが ( 上記の画面ではデータバインド列はグレイアウトして居る ) 此の列の違いに付いては 次回で解説する予定で有る 行オブジェクトの作成と追加 DGV コントロールに列オブジェクトを作成し追加すれば 次に行 ( 実データ ) を追加する 行の追加では 行オブジェクトを作成して追加し 更にセルオブジェクトを作成して追加すると謂った明示的な作業をしなくても DGV コントロールの Rows プロパティの Add メソッドを利用すれば メソッドのパラメータに実際のデータを並べて書く丈で良い ( ) 此のメソッドのドキュメントを観ると 独自に作成したコードから直接使用する為の物では有りません と書かれて居るが 方法 :Windows フォーム DataGridView コントロールの並べ替え機能をカスタマイズする に有るサンプルプログラム等では堂々と使われて居る 此処では Add メソッドに渡すパラメータと仕て 文字列とアイコン ( ) を指定する イメージ列に対しては Icon オブジェクトか Image オブジェクトが指定可能で有る -7-

8 Visual Basic dgv.rows.add("asterisk", SystemIcons.Asterisk) dgv.rows.add("error", SystemIcons.Error) dgv.rows.add("exclamation", SystemIcons.Exclamation) dgv.rows.add("question", SystemIcons.Question) C# dgv.rows.add("asterisk", SystemIcons.Asterisk); dgv.rows.add("error", SystemIcons.Error); dgv.rows.add("exclamation", SystemIcons.Exclamation); dgv.rows.add("question", SystemIcons.Question); SystemIcons クラスは Windows システムで共通のアイコンを Icon オブジェクトと仕て取得出来るクラスで有る 此処で此のクラスを使って居るのは 単にアイコンオブジェクトが簡単に得られると謂う理由からで有る 此の様な Add メソッドの呼出に依り セルオブジェクトや行オブジェクトが自動的に作成され DGV コントロールに追加される事に成る 行オブジェクトの作成と追加の別の方法 DGV コントロールへのデータの追加には幾つかの記述方法が有る 次に示すコードでは 先ず空の行を追加し 其の後 各セルにデータを設定して居る セルの値を読み書きするにはセルオブジェクトの Value プロパティを使用する Visual Basic Dim rowindex As Integer = dgv.rows.add( ) dgv.rows(rowindex).cells(0).value = "Asterisk" dgv.rows(rowindex).cells(1).value = SystemIcons.Asterisk C# int rowindex = dgv.rows.add( ); dgv.rows[rowindex].cells[0].value = "Asterisk"; dgv.rows[rowindex].cells[1].value = SystemIcons.Asterisk; Add メソッドが返す値は 其れに依り追加された行オブジェクトのインデックス 詰まり 行番号で有る (0 始まり ) 行番号が得られれば dgv.rows(< 行番号 >).Cells(< 列番号 >) に依り 1 つのセルオブジェクトを参照する事が出来る為 其の Value プロパティに依り特定の位置のセルの値を読み書き出来る (C# では ( ) の代わりに [ ] を使用 ) 亦 DGV コントロールには 行番号と列番号を指定して直接セルにアクセスする為のインデクサも用意されて居る為 行への値の設定には次の様な記述も可能で有る Visual Basic dgv(0, rowindex).value = "Asterisk" ' 1 列目の値 dgv(1, rowindex).value = SystemIcons.Asterisk ' 2 列目の値 C# dgv[0, rowindex].value = "Asterisk"; // 1 列目の値 dgv[1, rowindex].value = SystemIcons.Asterisk; // 1 列目の値 実際には セルの Value プロパティに対して此の様に直接データを設定する様な機会は少ないのだが 指定されたセルの値を得る為に Value プロパティを読み出すケースは少なくない ( ) -8-

9 Value プロパティの型は Object 型なので データを読み出す時には通常ダウンキャスト ( 例えば Integer 型や String 型へのキャスト ) が必要と成る サンプルコードの纏め 最後に 此処迄のコードを実際にコンパイルして実行出来る様に仕たソースコードを次に示して置く ' firstdgv.vb Visual Basic Imports System Imports System.Drawing Imports System.Windows.Forms Public Class MyForm Inherits Form Shared Sub Main( ) Application.Run(New MyForm( )) Dim dgv As DataGridView Sub New( ) dgv = New DataGridView( ) ' DGV のインスタンス化 dgv.dock = DockStyle.Fill ' フォームの全面に配置 ' ユーザーに依る新しい行の追加禁止 dgv.allowusertoaddrows = False ' ユーザーに依る行の変更 削除の禁止 dgv.readonly = True ' 行の高さの自動調整 dgv.autosizerowsmode = DataGridViewAutoSizeRowsMode.AllCells Me.Controls.Add(dgv) InitializeDGV( ) FillDGV( ) Sub InitializeDGV( ) Dim column1 As New DataGridViewTextBoxColumn column1.headertext = "1 列目の見出し " dgv.columns.add(column1) Dim column2 As New DataGridViewImageColumn column2.headertext = "2 列目の見出し " dgv.columns.add(column2) -9-

10 Sub FillDGV( ) dgv.rows.add("asterisk", SystemIcons.Asterisk) dgv.rows.add("error", SystemIcons.Error) dgv.rows.add("exclamation", SystemIcons.Exclamation) dgv.rows.add("question", SystemIcons.Question) End Class C# // firstdgv.cs using System; using System.Drawing; using System.Windows.Forms; public class MyForm : Form static void Main( ) Application.Run(new MyForm( )); DataGridView dgv; public MyForm( ) dgv = new DataGridView( ); // DGV のインスタンス化 dgv.dock = DockStyle.Fill; // フォームの全面に配置 // ユーザーに依る新しい行の追加禁止 dgv.allowusertoaddrows = false; // ユーザーに依る行の変更 削除の禁止 dgv.readonly = true; // 行の高さの自動調整 dgv.autosizerowsmode = DataGridViewAutoSizeRowsMode.AllCells; this.controls.add(dgv); InitializeDGV( ); FillDGV( ); void InitializeDGV( ) DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn( ); column1.headertext = "1 列目の見出し "; dgv.columns.add(column1); DataGridViewImageColumn column2 = new DataGridViewImageColumn( ); column2.headertext = "2 列目の見出し "; dgv.columns.add(column2); -10-

11 void FillDGV( ) dgv.rows.add("asterisk", SystemIcons.Asterisk); dgv.rows.add("error", SystemIcons.Error); dgv.rows.add("exclamation", SystemIcons.Exclamation); dgv.rows.add("question", SystemIcons.Question); プログラム内のコメントにも有る様に 此処では DGV コントロールを表示専用と仕て利用する為に AllowUserToAddRows プロパティと ReadOnly プロパティの 2 つを設定して居る デフォルトでは既存のセルの値を編集したり 一番下に表示される空の行から新しい行を追加したりする事が出来る DGV コントロールの編集機能に付いては孰れ取り上げる予定で有る 亦 DGV コントロールには 行の高さや 各列の幅をセルの値に応じて自動的に調節する機能が新しく追加されて居る 此のプログラムでは AutoSizeRowsMode プロパティを設定する事に依り 2 列目の画像全体が表示される様に仕て居るが 此のサイズ自動調節機能に付いても 回を改めて解説する予定で有る 今回は DGV コントロールの基本構造に付いて解説し 最後に簡単なサンプルプログラムを作成して実際にグリッドにデータを表示して観た DataGrid コントロールを使用した経験が有れば データを表示するのにデータバインド ( データ連結 ) 機能が使われて居ない事に気付いたと思う DGV コントロールでは 従来のデータバインドに依るデータの表示に加えて 非バインドモード ( 今回のサンプルプログラムは此れで有る ) や 大量のデータを扱う時に利用出来る 仮想モード 等が用意されて居る 次回は此の辺りの解説から始める予定で有る -11-

12 DataGridView コントロールでマインスイーパ 前回では DataGridView コントロール ( 以下 DGV コントロール ) のオブジェクト構造に付いて解説し 行や列の生成と 其等を DGV コントロールに追加する為の基本的なプログラミングに付いて解説した 然して DGV コントロールを表示する簡単なサンプルプログラムを作成した DGV コントロールには 大きく以下の 2 つのモードが有る 連結モード ( バインドモード ) 非連結モード ( 非バインドモード ) 前回のサンプルプログラムは 後者の非連結モードを利用した例で有る 今回は先ずは此の 2 つのモードに付いて簡単に説明し 其の後で非連結モードの応用例と仕て別のサンプルプログラムを作成する 連結モードと非連結モード 連結モード は.NET Framework 1.x の頃の DataGrid コントロールと同様に データベースから取得したレコードで満たされたデータセットを DGV コントロールに データ連結 (Data Binding) し データセットの内容をグリッド表示するモードで有る DGV コントロールの連結モードデータセットと連結する事に依り データセットの内容を DGV コントロールのグリッドに自動的に反映出来る 亦逆に グリッド上での編集結果をデータセットに反映出来る 猶 此の図では省略して居るが.NET Framework 2.0 では 通常は DGV コントロールとデータセットとの間に BindingSource コントロールを使用する 連結モードでは DGV コントロールの DataSource プロパティに データソースと成るデータセット ( 或いは コレクション 配列等 ) を指定する丈で 其の内容が表形式で表示される 詰まり データソースのレコードやデータに従って DGV コントロール内に行オブジェクトが自動的に作成される訳で有る ( デフォルトでは 列オブジェクトも自動作成される ) 亦 DGV コントロールは データソースを指定しなくても利用出来る様に成って居る 此れが 非連結モード で有る 此方のモードでは 列オブジェクトと行オブジェクトをコードに依り作成し 自由にデータを表示する事が出来る 前回のサンプルプログラムでは此れを行った -12-

13 データバインド列と非バインド列 データ連結の観点からは DGV コントロールの列にも 2 つの種類が有る 連結モードでは グリッドの各列は データソース内の列 ( データソースがコレクションや配列の場合には 其の要素の特定のプロパティ ) に対応付けられて居る 其の様な列は データバインド列 と呼ばれる 一方 データソース内の列に対応付けられて居ない列は 非バインド列 と呼ばれる 当然乍 非連結モードでは総ての列が非バインド列に成る 但し 連結モードでも総ての列がデータバインド列で有る必要は無く 非バインド列を DGV コントロールに追加する事も出来る 通常 此の場合には 非バインド列のセルには データバインド列のセルから求められた値を表示する 例えば 合計値列 と仕て使用する非バインド列のセルでは セルが表示されるタイミングで 其の行の他のセルの値の合計値を求めて表示する DGV コントロールを使ったマインスイーパ Grid スイーパ 今回は 非連結モードの応用例と仕て DGV コントロールを使ったマインスイーパで有る Grid スイーパ を作成して観る事にする マインスイーパを知らない人は居ないと思うが Windows の [ スタート ] メニューの [ 総てのプログラム ]-[ ゲーム ]-[ マインスイーパ ] で起動する爆弾撤去ゲームで有る 本物のマインスイーパでは 其のゲームフィールドを総てビットマップで表示して居るが Grid スイーパではフィールド表示にグリッドを利用する 以下が Grid スイーパの実行画面で有る 実行中の Grid スイーパの画面 ( 左 : ゲーム中 右上 : 失敗時 右下 : 成功時 ) -13-

14 此の Grid スイーパでは マウスのクリックや [ スペース ] キーに依り セルを開いて行く 間違って爆弾の有るセル ( 爆弾セル ) を開くと撤去失敗で有り 爆弾セルを赤色で表示する ( 上記画面右上 ) 爆弾セル以外の総てのセルを開ければ 爆弾セルが緑色で表示され 撤去成功と成る ( 上記画面右下 ) 亦 [F2] キーを押す事に依り 何時でもゲームを再スタートする事が出来る 猶コードを極力短くする為 マインスイーパには有る以下の様な機能は実装しない 旗が立てられない 時間制ではない 数字の色が全部同じ 其れでは 早速プログラミングして行く事にする フォームの設定 先ずは Visual Studio 2005 を起動し Windows アプリケーション の新規プロジェクトを作成する プロジェクト名は GridSweeperVB ( C# 版は GridSweeperCS ) とする 次に DGV コントロールをフォームに配置する 此の時表示される DataGridView タスク のメニューから [ 親コンテナにドッキング ] を選択して フォーム全面に配置して置く (DGV コントロールの右上に有る小さな三角マークグリフからも可能 ) 亦 プロパティウィンドウでは 名前 (Name) を dgv に変更し 更に DefaultCellStyle プロパティを選択すると現れる [...] ボタンをクリックし セルで使用されるフォントに付いて 以下の 2 つの設定を行う 配置の [Alignment] を MiddleCenter に指定 表示用フォントを [Font] で指定 ( 本稿では Arial Black の 9pt を選択 ) 此の DefaultCellStyle プロパティで設定されたセルスタイルは DGV コントロールに追加される行で使用される既定のセルスタイルと成る 此等の設定はコードからも行えるが IDE で設定した方が楽で有る 勿論 フォントの種類は自由に選択しても良い C# の場合には 更にプロパティウィンドウから次の 4 つのイベントに付いてイベントハンドラをフォームと DGV コントロールに追加して置く フォームの Load イベント DGV コントロールの CellClick イベント DGV コントロールの KeyDown イベント DGV コントロールの SelectionChanged イベント 全ソースコード Grid スイーパのソースコード (Form1.vb や Form1.cs に記述するコード ) は 200 行程度なので 以下に其の総てを示して置く 上記の設定を行い 此のコードを Form1.vb(C# の場合は Form1.cs) にコピー & ペーストすれば プログラムを実行出来る筈で有る 次のページからは 此の中のポイントと成る部分を解説して行く Public Class Form1 Visual Basic -14-

15 ' 定数の宣言 Const UNOPEN As Integer = -2 Const MINE As Integer = -1 ' 変数の宣言 Dim cellsize As Integer = 20 ' セルのサイズ Dim sx As Integer = 16 ' フィールドの幅 Dim sy As Integer = 16 ' フィールドの高さ Dim nummine As Integer = 40 ' 爆弾の数 Dim numcellopened As Integer ' 開いたセルの数 Dim gamestarted As Boolean ' ゲームを開始して居るか何うかのフラグ Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Load ' 以下はプロパティウィンドウでも設定可能 dgv.readonly = True dgv.columnheadersvisible = False dgv.rowheadersvisible = False dgv.allowusertoresizecolumns = False dgv.allowusertoresizerows = False dgv.allowusertoaddrows = False dgv.showcelltooltips = False ' 答えが観えない様に設定 ' フィールドの作成 dgv.rowtemplate.height = cellsize ' 追加される行の高さ dgv.columncount = sx dgv.rowcount = sy For Each col As DataGridViewColumn In dgv.columns col.width = cellsize Next ' フォームのサイズを DGV に合わせる Dim cell As DataGridViewCell = dgv(0, 0) Me.ClientSize = New Size(cell.Size.Width * sx + 3, cell.size.height * sy + 3) initgame( ) ' ゲームの初期化 Sub initgame( ) numcellopened = 0 gamestarted = True ' 総てのセルの初期化 For x As Integer = 0 To sx - 1 For y As Integer = 0 To sy - 1 dgv(x, y).value = UNOPEN dgv(x, y).style.forecolor = Color.WhiteSmoke dgv(x, y).style.backcolor = Color.WhiteSmoke Next Next -15-

16 ' 爆弾の配置 Dim rnd As New Random Dim donenum As Integer = 0 While donenum < nummine Dim x As Integer = rnd.next(sx) Dim y As Integer = rnd.next(sy) If CInt(dgv(x, y).value) <> MINE Then dgv(x, y).value = MINE donenum += 1 End While showremain( ) ' 残りセル ( 開いて居ないセル ) の表示 Sub showremain( ) Me.Text = " 爆弾 :" & nummine & " 残りのセル :" & (sx * sy - numcellopened) ' (x, y) がグリッド内に含まれるか Function isinfield(byval x As Integer, ByVal y As Integer) If x < 0 Or y < 0 Or x >= sx Or y >= sy Then Return False Return True End Function ' cell に隣接するセルを配列で返す Function getneighbors(byval cell As DataGridViewCell) Dim x As Integer = cell.columnindex Dim y As Integer = cell.rowindex Dim cc As New List(Of DataGridViewCell) If isinfield(x - 1, y - 1) Then cc.add(dgv(x - 1, y - 1)) If isinfield(x - 1, y + 1) Then cc.add(dgv(x - 1, y + 1)) If isinfield(x + 1, y - 1) Then cc.add(dgv(x + 1, y - 1)) If isinfield(x + 1, y + 1) Then cc.add(dgv(x + 1, y + 1)) If isinfield(x - 1, y) Then cc.add(dgv(x - 1, y)) If isinfield(x + 1, y) Then cc.add(dgv(x + 1, y)) If isinfield(x, y - 1) Then cc.add(dgv(x, y - 1)) If isinfield(x, y + 1) Then cc.add(dgv(x, y + 1)) Return cc.toarray( ) End Function ' 数字セルの表示 Sub drawnumbercell(byval cell As DataGridViewCell) cell.style.backcolor = Color.LightGray If CInt(cell.Value) = 0 Then ' 0 は表示しない ( 背景色で描画 ) cell.style.forecolor = Color.LightGray Else ' 1~8 の数字 -16-

17 cell.style.forecolor = Color.Blue ' セルを開こうとする Sub trycell(byval cell As DataGridViewCell) If gamestarted = False Then Return If CInt(cell.Value) = MINE Then gameover(false) ElseIf CInt(cell.Value) = UNOPEN Then opencell(cell) showremain( ) If numcellopened = sx * sy - nummine Then gameover(true) ' セルを開く Sub opencell(byval cell As DataGridViewCell) numcellopened += 1 Dim count As Integer = 0 ' 周りの爆弾の数を数える For Each c As DataGridViewCell In getneighbors(cell) If CInt(c.Value) = MINE Then count += 1 Next ' 周りの爆弾の数を表示 cell.value = count drawnumbercell(cell) ' 周りのセルに爆弾がない場合 周りのセルも開く If count = 0 Then For Each c As DataGridViewCell In getneighbors(cell) If CInt(c.Value) = UNOPEN Then opencell(c) ' 再帰呼出 Next Sub gameover(byval issuccess As Boolean) gamestarted = False Me.Text = "F2 キーでリトライ " ' 爆弾位置の表示 For x As Integer = 0 To sx - 1 For y As Integer = 0 To sy - 1 If CInt(dgv(x, y).value) = MINE Then -17-

18 dgv(x, y).value = "" dgv(x, y).style.backcolor = IIf(isSuccess, Color.Green, Color.Red) Next Next ' DGV の KeyDown イベントハンドラ Private Sub dgv_keydown(byval sender As Object, ByVal e As KeyEventArgs) _ Handles dgv.keydown If e.keycode = Keys.F2 Then initgame( ) If e.keycode = Keys.Space Then trycell(dgv.currentcell) ' DGV の CellClick イベントハンドラ Private Sub dgv_cellclick(byval sender As Object, ByVal e As DataGridViewCellEventArgs) _ Handles dgv.cellclick trycell(dgv(e.columnindex, e.rowindex)) ' DGV の SelectionChanged イベントハンドラ Private Sub dgv_selectionchanged(byval sender As Object, ByVal e As EventArgs) _ Handles dgv.selectionchanged ' セルを選択状態にさせない dgv.clearselection( ) End Class using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; C# namespace GridSweeperCS public partial class Form1 : Form int cellsize = 20; // セルのサイズ int sx = 16; // フィールドの幅 int sy = 16; // フィールドの高さ int nummine = 40; // 爆弾の数 const int UNOPEN = -2; const int MINE = -1; -18-

19 int numcellopened; // 開いたセルの数 bool gamestarted; // ゲームを開始して居るか public Form1( ) InitializeComponent( ); private void Form1_Load(object sender, EventArgs e) // 以下はプロパティウィンドウでも設定可能 dgv.readonly = true; dgv.columnheadersvisible = false; dgv.rowheadersvisible = false; dgv.allowusertoresizecolumns = false; dgv.allowusertoresizerows = false; dgv.allowusertoaddrows = false; dgv.showcelltooltips = false; // 答えが観えない様に // フィールドの作成 dgv.rowtemplate.height = cellsize; // 追加される行の高さ dgv.columncount = sx; dgv.rowcount = sy; foreach (DataGridViewColumn col in dgv.columns) col.width = cellsize; // フォームのサイズを DGV に合わせる DataGridViewCell cell = dgv[0, 0]; this.clientsize = new Size(cell.Size.Width * sx + 3, cell.size.height * sy + 3); initgame( ); // ゲームの初期化 void initgame( ) numcellopened = 0; gamestarted = true; // 総てのセルの初期化 for (int x = 0; x < sx; x++) for (int y = 0; y < sy; y++) dgv[x, y].value = UNOPEN; dgv[x, y].style.forecolor = Color.WhiteSmoke; dgv[x, y].style.backcolor = Color.WhiteSmoke; // 爆弾の配置 Random rnd = new Random( ); for (int donenum = 0; donenum < nummine; ) -19-

20 int x = rnd.next(sx); int y = rnd.next(sy); if ((int)dgv[x, y].value!= MINE) dgv[x, y].value = MINE; donenum++; showremain( ); // 残りセル ( 開いて居ないセル ) の表示 void showremain( ) this.text = " 爆弾 :" + nummine + " 残りのセル :" + (sx * sy - numcellopened); // (x, y) がグリッド内に含まれるか bool isinfield(int x, int y) if (x < 0 y < 0 x >= sx y >= sy) return false; return true; // cell に隣接するセルを配列で返す DataGridViewCell[] getneighbors(datagridviewcell cell) int x = cell.columnindex; int y = cell.rowindex; List<DataGridViewCell> cc = new List<DataGridViewCell>( ); if (isinfield(x - 1, y - 1)) cc.add(dgv[x - 1, y - 1]); if (isinfield(x - 1, y + 1)) cc.add(dgv[x - 1, y + 1]); if (isinfield(x + 1, y - 1)) cc.add(dgv[x + 1, y - 1]); if (isinfield(x + 1, y + 1)) cc.add(dgv[x + 1, y + 1]); if (isinfield(x - 1, y)) cc.add(dgv[x - 1, y]); if (isinfield(x + 1, y)) cc.add(dgv[x + 1, y]); if (isinfield(x, y - 1)) cc.add(dgv[x, y - 1]); if (isinfield(x, y + 1)) cc.add(dgv[x, y + 1]); return cc.toarray( ); // 数字セルの表示 void drawnumbercell(datagridviewcell cell) cell.style.backcolor = Color.LightGray; if ((int)cell.value == 0) // 0 は表示しない ( 背景色で描画 ) cell.style.forecolor = Color.LightGray; -20-

21 else // 1~8 の数字 cell.style.forecolor = Color.Blue; // セルを開こうとする void trycell(datagridviewcell cell) if (gamestarted == false) return; if ((int)cell.value == MINE) gameover(false); else if ((int)cell.value == UNOPEN) opencell(cell); showremain( ); if (numcellopened == sx * sy - nummine) gameover(true); // セルを開く void opencell(datagridviewcell cell) numcellopened++; int count = 0; // 周りの爆弾の数を数える foreach (DataGridViewCell c in getneighbors(cell)) if ((int)c.value == MINE) count++; // 周りの爆弾の数を表示 cell.value = count; drawnumbercell(cell); // 周りのセルに爆弾がない場合 周りのセルも開く if (count == 0) foreach (DataGridViewCell c in getneighbors(cell)) -21-

22 if ((int)c.value == UNOPEN) opencell(c); // 再帰呼出 void gameover(bool issuccess) gamestarted = false; this.text = "F2 キーでリトライ "; // 爆弾位置の表示 for (int x = 0; x < sx; x++) for (int y = 0; y < sy; y++) if ((int)dgv[x, y].value == MINE) dgv[x, y].value = ""; dgv[x, y].style.backcolor = issuccess? Color.Green : Color.Red; // DGV の KeyDown イベントハンドラ private void dgv_keydown(object sender, KeyEventArgs e) if (e.keycode == Keys.F2) initgame( ); if (e.keycode == Keys.Space) trycell(dgv.currentcell); // DGV の CellClick イベントハンドラ private void dgv_cellclick(object sender, DataGridViewCellEventArgs e) trycell(dgv[e.columnindex, e.rowindex]); // DGV の SelectionChanged イベントハンドラ private void dgv_selectionchanged(object sender, EventArgs e) // セルを選択状態にさせない dgv.clearselection( ); -22-

23 以下では プログラムの実行順に従って解説して行く DGV コントロールの初期設定 フォームの Load イベントハンドラでは DGV コントロールの初期設定を行う 此処では 先ず 行ヘッダ 列ヘッダを非表示にし ユーザーがセルのサイズを変更出来ない様に仕て置く Load イベントハンドラでポイントと成るのは ゲームフィールドの作成部分で有る 非連結モードでは 次の様に記述する丈で sx 個の列オブジェクトと sy 個の行オブジェクトが作成される 従って最終的には sx * sy 個のセルが作成される事に成る dgv.columncount = sx dgv.rowcount = sy 行数と列数の指定に依るセルの作成 (Load イベントハンドラ内 ) 此の様に仕て作成される列オブジェクトは 最も標準的な列で有るテキストボックス列 (DataGridViewTextBoxColumn オブジェクト ) で有る 此の列に属するセルは 其の Value プロパティにセットした値が文字列と仕て表示される 但し 此れ丈では行や列のサイズがデフォルトの儘で有る Grid スイーパではセルを正方形にし度いので 上記の 2 つのプロパティを設定する前に以下のコードに依り 先ず追加される行の高さを指定する dgv.rowtemplate.height = cellsize ' 追加される行の高さ行テンプレートにおける行の高さの指定 (Load イベントハンドラ内 ) DGV コントロールに行が追加される場合には 其の RowTemplate プロパティにセットされて居る行オブジェクトが行のテンプレート ( 雛形 ) と成る為 此処で行のスタイルを調整して置けば 以降の行の追加時には 其のスタイルが総ての行で使用される様に成る 一方 列の幅に関しては此の様な列テンプレートが存在しない為 次の様に仕て 総ての列に対して Width プロパティを設定する必要が有る For Each col As DataGridViewColumn In dgv.columns col.width = cellsize Next 各列の幅の設定 (Load イベントハンドラ内 ) 勿論 行の高さに関しても 総ての行に付いてループに依り Height プロパティを設定しても良い 以上に依り 正方形のセルが敷き詰められたフィールドの出来上がりで有る ゲームフィールドの初期化 DGV コントロールの初期設定が終われば 次に initgame メソッドでゲームフィールドの初期化を行う マインスイーパでは 各セルに付いて少なく共 2 つの状態を管理する必要が有る 爆弾が有るか無いかと 既に開かれたか何うかで有る ( 尤も 既に開かれた爆弾の有るセルと謂うのは 其の時点でゲームが終了なので存在しない ) Grid スイーパでは 此の状態を各セルの Value プロパティの値で管理して仕舞う 詰まり 総てのセルの Value プロパティを 先ず 未だセルが開かれて居ない事を示す UNOPEN(-1) に設定する 此れに依りセルの表示が総て -1 と成って仕舞うが 其の背景色と前景色を同じにする事に依り 其れが表示されない様にして居る 此れを行って居るのが initgame メソッドの次のループで有る -23-

24 For x As Integer = 0 To sx - 1 For y As Integer = 0 To sy - 1 dgv(x, y).value = UNOPEN ' 開かれて居ない状態 dgv(x, y).style.forecolor = Color.WhiteSmoke dgv(x, y).style.backcolor = Color.WhiteSmoke Next Next 総てのセルの初期化 (initgame メソッド内 ) 前回でも説明した様に 各セルは DGV コントロールのインデクサに依り dgv(x, y) の形で指定出来る ( 此処で dgv は DGV コントロールのインスタンス ) クリックされ開かれたセルの Value プロパティには 其のセルの周りの爆弾の数を代入する事に成るのだが ( 爆弾が無ければ 0 ではなく空文字を代入する ) 其の時は前景色と背景色を変更する事に依りセルを開いた様に観せて居ると謂う訳で有る 次に 乱数で爆弾の位置を決め 其の位置のセルの Value プロパティを MINE(-2) に設定する Dim rnd As New Random Dim donenum As Integer = 0 ' 爆弾を配置し終える迄ループ While donenum < nummine ' 乱数で爆弾の位置を決める Dim x As Integer = rnd.next(sx) Dim y As Integer = rnd.next(sy) ' 爆弾が無ければ爆弾を配置 If CInt(dgv(x, y).value) <> MINE Then dgv(x, y).value = MINE donenum += 1 End While 爆弾の配置 (initgame メソッド内 ) セルの Value プロパティを設定する場合には 単に文字列や数値を代入すれば良いが ( 表示時には文字列に変換されて表示される ) Value プロパティは Object 型なので 其の値を取り出す時には CInt(dgv(x, y).value) の様に 元の型にキャストする必要が有る 処で 此の時点で爆弾を配置するのは本当は正しくない 此れでは最初に開いたセルが行き成り爆弾と謂うナンセンスな状況が有り得る為で有る 本来で有れば 1 つ目のセルが開かれた後で爆弾を配置す可きなのだが 今回は其の様な処理は割愛した initgame メソッドでは 既に開いたセルの数 numcellopened を 0 にし ゲーム中か何うかを示すフラグ gamestarted を true に設定して置く セルの選択を禁止 DGV コントロールでは 通常のセルの値は 其のセルのスタイルの ForeColor プロパティや BackColor プロパティで設定された色で表示されるが グリッド上で選択されて居るセルに付いては 此等のプロパティの色ではなく SelectionForeColor プロパティや SelectionBackColor プロパティの色が使用される -24-

25 此の為 Grid スイーパでは セルが選択された時にもセルに書き込んだ値 (-1 や -2) が観えない様に 選択されたセルの色も同時に設定する必要が有る 然うしないと次の画面の様に答えが観えて仕舞う 選択すると観えて仕舞うセルの値選択されたセルの色は通常のセルの色とは別に設定されて居る為 其の色も変更して置かないと 此の様な状態に成って仕舞う 併し 此等の設定はコードを煩雑にするので 今回はセルの選択自体を出来なくして仕舞って居る ( 此れに依りフォーカスが移動しても セルが選択されない様に成る ) 但し DGV コントロールには 現在選択されて居るセルの選択を解除する為の ClearSelection メソッドが用意されて居るが セルの選択を禁止する様な機能は用意されて居ない ( ) MultiSelect プロパティを False に設定すれば 複数のセルの選択は禁止出来る 其処で今回は 選択されて居るセルが変化した時に発生する SelectionChanged イベントのタイミングで ClearSelection メソッドを呼び出して セルが選択されても直ぐに其れを解除して居る SelectionChanged イベントハンドラは次の様に成る Private Sub dgv_selectionchanged(byval sender As Object, ByVal e As EventArgs) _ Handles dgv.selectionchanged ' セルを選択状態にさせない dgv.clearselection( ) セルが選択されない様にする SelectionChanged イベントハンドラ ClearSelection メソッドの呼出に依り現在選択されて居るセルが変化するが 此の時は幸いに仕て SelectionChanged イベントは発生しない様で有る 因みに 選択されて居るセルをコードから設定するには セルの Selected プロパティを True に設定すれば良い 蛇足に成るが SelectionChanged イベントハンドラで ClearSelection メソッドを呼び出した後に此れを行うとスタックオーバーフローが発生してプログラムは停止して仕舞う -25-

26 セルのクリック処理 DGV コントロールでは セルがクリックされると 其のセルが選択されフォーカスが設定されるが Grid スイーパではセルがクリックされたら 其のセルを開く ( 実際には開いた様に観せる為に色を変更し Value プロパティを書き換える ) 処理が必要で有る 其処で セルがクリックされた時に発生する CellClick イベントをハンドリングする CellClick イベントハンドラでは メソッドのパラメータと仕て DataGridViewCellEventArgs オブジェクトが渡されるので 其の ColumnIndex プロパティと RowIndex プロパティに依り 何の位置のセルがクリックされたかを知る事が出来る 詰まり クリックされたセルオブジェクトは dgv(e.columnindex, e.rowindex) に依り得る事が出来る CellClick イベントハンドラは 次の様に成る 此処ではクリックされたセルを trycell メソッドに渡す Private Sub dgv_cellclick(byval sender As Object, ByVal e As DataGridViewCellEventArgs) _ Handles dgv.cellclick ' クリックされたセルを trycell メソッドに渡す trycell(dgv(e.columnindex, e.rowindex)) DGV コントロールの CellClick イベントハンドラ キー入力の処理 DGV コントロールでは予め多くのキーをハンドリングして居り ( ) 例えば フォーカスの有るセルを移動するには カーソルキーやタブキーが使える キーの一覧は Windows フォーム DataGridView コントロールの既定のキーボード処理とマウス処理に有る Grid スイーパでは [F2] キーでゲームの再スタートを行い [ スペース ] キーで現在フォーカスの有るセルを開く様にして キーボード丈でもゲームが出来る様に仕て観た キーの入力に関しては KeyDown イベントに対応すれば良い 此のイベントハンドラは次の様に成る e.keycode が DGV コントロールに対して入力されたキーのコードと成る Private Sub dgv_keydown(byval sender As Object, ByVal e As KeyEventArgs) _ Handles dgv.keydown ' [F2] キーで再スタート If e.keycode = Keys.F2 Then initgame( ) ' [ スペース ] キーで現在のセルを開く If e.keycode = Keys.Space Then trycell(dgv.currentcell) DGV コントロールの KeyDown イベントハンドラ 現在フォーカスの有るセルは DGV コントロールの CurrentCell プロパティに依って得られるので [ スペース ] キーが入力された場合には セルのクリック時と同様に 此れを trycell メソッドに渡す -26-

27 セルのオープン trycell メソッドでは 開こうとするセルの値が爆弾 (MINE) で有れば 即ゲームオーバーだが 未だ開かれて居ないセル (UNOPEN) で有れば opencell メソッドを呼び出して 其れを開く 此等の処理が終わった後 若し 既に開かれて居るセルの数 (numcellopened) が爆弾の無いセルの数 (sx * sy - nummine) と等しければ 爆弾撤去が完了で有る Sub trycell(byval cell As DataGridViewCell) ' ゲームが開始されていなければ何もしない If gamestarted = False Then Return If CInt(cell.Value) = MINE Then gameover(false) ' 爆弾だったらゲームオーバー ElseIf CInt(cell.Value) = UNOPEN Then opencell(cell) ' 実際にセルを開く showremain( ) ' 開いたセルと爆弾のないセルが同じ数なら撤去完了 If numcellopened = sx * sy - nummine Then gameover(true) trycell メソッド セルの実際のオープン クリックされたセルを実際に開いて数字 ( 又は 空文字 ) に書き換える処理は opencell メソッドで行って居る マインスイーパでは 単にクリックされたセルを開く丈でなく セルに爆弾が無かったら連鎖的に周りのセルも開かなければ成らない場合が有るので 此のメソッドは少し丈複雑で有る opencell メソッドでは先ず メソッドのパラメータで指定されたセルに隣接するセル ( 最高 8 つ ) を getneighbors メソッドに依り取得する 然して爆弾の有るセルの数を数え 其れをセルの値とし drawnumbercell メソッドに依り表示する Sub opencell(byval cell As DataGridViewCell) numcellopened += 1 Dim count As Integer = 0 ' 周りの爆弾の数を数える For Each c As DataGridViewCell In getneighbors(cell) If CInt(c.Value) = MINE Then count += 1 Next ' 周りの爆弾の数を表示 cell.value = count drawnumbercell(cell) ' 周りのセルに爆弾がない場合 周りのセルも開く -27-

28 If count = 0 Then For Each c As DataGridViewCell In getneighbors(cell) If CInt(c.Value) = UNOPEN Then opencell(c) ' 再帰呼出 Next opencell メソッド 隣接するセルに爆弾が有れば セルに数字を書いて処理は終わりだが 若し 隣接するセルの孰れにも爆弾が無かったら 其等のセルを開き 更に其のセルの周りにも爆弾が無かったら其等を開き と謂う処理を然う謂うセルが無く成る迄繰り返さなくては成らない 処理は難しいがサンプルコードの様にメソッドの再帰呼出を使えばコードは非常に単純に記述出来る 隣接する未だ開いて居ない各セルに対して 更に opencell メソッドを呼び出す丈で有る 以上 今回はゲームを作り乍 DGV コントロールの非連結モードに付いて解説して観た DGV コントロールは データ連結しなくても手軽に使える様に成って居るので 此れ迄以上に様々な用途で活用する事が出来るのではないかと思う -28-

ListViewコントロール

ListViewコントロール ListView コントロール ListView コントロールへ項目を追加 本稿では.NET Framework の標準コントロールで有る ListView コントロール (System.Windows.Forms 名前空間 ) を活用する為に ListView コントロールにデータを追加する方法を紹介する ListView コントロールは データ項目をアイコン表示や詳細表示等に依り一覧表示する為の物で

More information

ICONファイルフォーマット

ICONファイルフォーマット グラフィックス 画像フォーマットエンコーダパラメータ 様々なフォーマットで画像を保存 Bitmap クラスを用いる事でビットマップ JPEG GIF PNG 等様々なフォーマットの画像を読み込み操作する事が出来る 更に Bitmap クラスや Graphics コンテナを用いて描画処理等を施したイメージをファイルに保存する事も出来る 此の時 読み込めるフォーマット同様に保存するフォーマットを選択する事が出来る

More information

NotifyIconコントロール

NotifyIconコントロール NotifyIcon コントロール システムトレイ ( タスクトレイ ) にアイコンを表示する.NET Framework 2.0 以降の場合は 後述の 2 を観て欲しい Outlook や MSN Messenger 等の様に Windows アプリケーションではシステムトレイ ( タスクトレイ ステータス領域等とも呼ばれる ) にアイコンを表示して アプリケーションの状態を示したり アプリケーションのフォームを表示したりする為のショートカットとして利用する事が出来る.NET

More information

データベースプログラミング

データベースプログラミング データセットとデータテーブル データセット (DataSet) とは何かに付いて 簡単に説明する データセットとは 典型的な.NET の Windows データベースアプリケーションでは データセットを通じてアプリケーションからデータベースにアクセスする データセットとは 簡単に謂うと データベースから取得したレコードをメモリ上に持つ為の入れ物で有る 例えば データベースからレコードを取得し 其れをグリッドコントロールに表示する様な

More information

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るので 此れを利用して音声認識を行うサンプルを紹介する 下記の様な Windows フォームアプリケーションを作成する エディタを起動すると

More information

ファイル操作

ファイル操作 ファイル操作 TextFieldParser オブジェクト ストリームの読込と書込 Microsoft.VisualBasic.FileIO 名前空間の TextFieldParser オブジェクトは 構造化テキストファイルの解析に使用するメソッドとプロパティを備えたオブジェクトで有る テキストファイルを TextFieldParser で解析するのは テキストファイルを反復処理するのと同じで有り

More information

Userコントロール

Userコントロール User コントロール 初めてのユーザーコントロールの作成 作成したクラスは他のプログラムで再利用出来る為 同じコードを何度も繰り返し作成する必要が無い コントロールも 複数のプロジェクトで再利用出来るクラスで有る 同じユーザーインターフェイスを何度も繰り返してデザインすると謂う経験は 恐らく誰でも有る 例えば 姓と名を入力する為の TextBox コントロールを追加した後で 両方を組み合わせてフルネームを作成するコードを追加する等の作業で有る

More information

プロセス間通信

プロセス間通信 プロセス間通信 プロセス間通信 (SendMessage) プロセス間通信とは 同一コンピューター上で起動して居るアプリケーション間でデータを受け渡し度い事は時々有る Framework には リモート処理 と謂う方法でデータの受け渡しを行なう方法が有る 此処では 此の方法では無く 従来の方法の API を使用したプロセス間通信を紹介する 此の方法は 送信側は API の SendMessage で送り

More information

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 ( 此処では 10) を代入する丈でなく 2 の配列変数の宣言の様に ブレース { } の中にカンマ区切りで初期値のリストを記述し 配列の各要素に初期値を代入出来る様に成った

More information

VB.NET解説

VB.NET解説 Visual Basic.NET 印刷編 目次 印刷の概要... 2 印刷の流れ... 2 標準の Windows フォーム印刷ジョブの作成... 3 実行時に於ける Windows フォーム印刷オプションの変更... 3 Windows フォームに於ける接続されたプリンタの選択... 4 Windows フォームでのグラフィックスの印刷... 5 Windows フォームでのテキストの印刷...

More information

ハッシュテーブル

ハッシュテーブル ハッシュテーブル ハッシュテーブル ( 連想配列 ) を使う ハッシュテーブルとは キー (key) と値 (value) のペアを保持して居るコレクションで有る 通常の配列がインデックス番号に依り各値 ( 各要素 ) にアクセス出来るのに比べて ハッシュテーブルでは インデックス番号の代わりにキーを用いて 其の各値にアクセスする事が出来る キーと 其のキーから連想される ( 対応付けられて居る )

More information

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information

グラフィックス

グラフィックス グラフィックス PictureBox の Image プロパティに関する良く有る勘違い PictureBox に画像を表示する方法と仕て PictureBox の Image プロパティを使う方法と Graphics の DrawImage メソッドを使う方法が有るが 此の 2 つの方法を混同し 正しく理解して居ない事が多い様で有る 例えば 下記に列挙する様な状況が 此れに該当する 1.PictureBox

More information

ルーレットプログラム

ルーレットプログラム ルーレットプログラム VB 2005 4 プログラムの概要 カジノの代表的なゲーム ルーレット を作成する 先ず GO! ボタンをクリックすると ルーレット盤上をボールが回転し 一定時間経過すると ボールが止まり 出目を表示するプログラムを作成する 出目を 1~16 大小 偶数奇数の内から予想して 予め設定した持ち点の範囲内で賭け点を決め 賭け点と出目に依り 1 点賭けの場合は 16 倍 其他は 2

More information

正規表現応用

正規表現応用 正規表現 正規表現を使って文字列が或る形式と一致するか調べる 指定された正規表現のパターンと一致する対象が入力文字列内で見付かるか何うかを調べるには Regex クラスの IsMatch メソッドを使用する 此処では IsMatch メソッドを使った例を幾つか紹介する 猶 正規表現のパターンと一致する個所を探し 見付かれば 其の箇所を抽出する方法は 正規表現を使って文字列を検索し 抽出する で紹介して居る

More information

ファイル監視

ファイル監視 ファイル操作 ファイルやディレクトリの監視 FileSystemWatcher クラス.NET Framework のクラスライブラリには ファイルやディレクトリの作成 変更 削除を監視する為の FileSystemWatcher クラスが System.IO 名前空間に用意されて居る ( 但し Windows 98/Me では利用出来ない ) 此れを利用すると 特定のディレクトリにファイルが作成された

More information

プラグイン

プラグイン プラグイン プラグイン詳細 2 ~ プラグイン機能を持つテキストエディタの作成 ~ はじめに Adobe Photoshop や Becky! Internet Mail 等のアプリケーションでは プラグイン ( 又は アドイン エクステンション 等 ) と呼ばれるプログラムをインストールする事に依り 機能を拡張する事が出来る 此の記事では此の様なプラグイン機能を持ったアプリケーションの作り方を プラグイン対応のテキストエディタを作成する事に依り

More information

ファイル操作-バイナリファイル

ファイル操作-バイナリファイル ファイル操作 バイナリ ファイルを読み書きする バイナリファイル ( 即ちテキストファイル以外のファイル ) を読み書きするには FileStream クラス (System.IO 名前空間 ) を利用する FileStream クラスはファイル用のストリームをサポートするクラスで有り Stream クラス (System.IO 名前空間 ) の派生クラスの 1 つで有る 基本的には コンストラクタで指定したファイルのストリームに対して

More information

ブロック パニック

ブロック パニック ブロックパニック VB 2005 9 プログラムの概要 壁が迫り来る不思議な空間のオリジナルゲーム ブロックパニック を作成する スタートボタンをクリックし上下左右の矢印キーで白猿を移動させる スペースキーを押すと 向いて居る方向の壁が後退する 左右の壁が合わさると ゲームは終了する 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い 此処では ゲームプログラムを作成する事に依り

More information

ファイル操作-インターネットキャッシュ

ファイル操作-インターネットキャッシュ ファイル操作 インターネット一時ファイルの保存場所 インターネットキャッシュ インターネット一時ファイルの保存場所は Internet Explorer の場合 下記の手順で確認する事が出来る 1.[ ツール ] [ インターネットオプション ] でインターネットオプション画面のダイアログを表示させる 2.[ 全般 ] タブで [ インターネット一時ファイル ] グループの [ 設定 ] をクリックすると

More information

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略       - LogisticaTRUCKServer-Ⅱ(SQLServer 版 ) 距離計算サーハ API.NET DLL WindowsForm サンフ ルフ ロク ラム - 1 - LogisticaTRUCKServer-Ⅱ 距離計算サーハ.NET DLL WindowsForm VisualBasic での利用方法 LogisticaTRUCKServer-Ⅱ 距離計算.NET DLLのサンプルプログラムの参照サンフ

More information

C#の基本

C#の基本 C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない

More information

ウィンドウ操作 応用

ウィンドウ操作 応用 Win32API 関数 ウィンドウ操作 ウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得 メモ帳や電卓等のウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得する方法を 下記に示す Visual Basic Imports System.Runtime.InteropServices Public Class WindowFromWindowName

More information

DAOの利用

DAOの利用 DAO VB2005 で DAO を使用して Excel のデータを取得 Visual Basic 6.0 Dim DB As DAO.Database Dim RS As DAO.Recordset Dim xlfilename As String Dim xlsheetname As String xlfilename = Form1.StatusBar1.Panels(12) & Dir(Form1.StatusBar1.Panels(12)

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

構造体

構造体 構造体 Byte 配列 構造体とコピーする方法 構造体とバイト配列の変換を行うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; 下記の 3 種類の構造体にバイト配列の値を格納した場合に付いて検証する

More information

Prog2_15th

Prog2_15th 2019 年 7 月 25 日 ( 木 ) 実施メニューメニューバーとコンテクストメニュー Visual C# では, メニューはコントロールの一つとして扱われ, フォームアプリケーションの上部に配置されるメニューバーと, コントロール上でマウスを右クリックすると表示されるコンテクストメニューとに対応している これ等は選択するとメニューアイテムのリストが表示されるプルダウンメニューと呼ばれる形式に従う

More information

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ C# & VB 1 グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラフィックを行うためには Visual Studio の基本操作や C# または VB

More information

スライド 1

スライド 1 C# の基本 ~ ファイル読み込み ~ 今回学ぶ事 今回はファイル読み書きに必要 BinaryReader クラスについて記載する ファイル参照ダイアログである OpenFileDialog クラスについても理解を深める また Bitmap クラスを用いた Bitmap ファイルの読み込み方法についても学ぶ フォーム作り まず label picturebox を配置する ツールボックスより左クリックで選択する

More information

64bit環境で32bitコンポーネントの利用

64bit環境で32bitコンポーネントの利用 64bit 環境 64bit 環境で 32bit コンポーネントの利用 Windows 7 や 8 の出現で 愈々 64bit 環境も普及し始めて来た 64bit 環境に於いては 64bit 用に最適化された 64bit コンポーネントを使用するのが本筋で有ろうが 64bit 環境に於いても 32bit コンポーネントを使用し度い場合が有る 過去の遺物 ( レガシ ) と仕て切り捨てるのではなく 良い物は良い物と仕て有効利用すると謂う観点から

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

VB実用Ⅲ⑩ フリーデータベースⅡ

VB実用Ⅲ⑩ フリーデータベースⅡ MySQL の利用 MySQL の ODBC(MyODBC) テキストでは MySQL Connector/ODBC(mysql-connector-odbc-3.51.14-win32.msi) をインストールした場合に付いて解説して居るが 此処では MyODBC(MyODBC-3.51.10-x86-win-32bit.msi) をインストールし myodbc-3.51.06-conv_ujis.zip

More information

グラフィックス 目次

グラフィックス 目次 WPF チュートリアル Microsoft Expression Blend を使用してボタンを作成する 此のチュートリアルでは WPF のカスタマイズされたボタンを Microsoft Expression Blend を使用して作成する手順に付いて説明する Microsoft Expression Blend の具体的な動作は Extensible Application Markup Language(XAML)

More information

スレッド操作 タイマー

スレッド操作 タイマー スレッド操作 タイマー System.Windows.Forms.Timer Windows フォームの Timer は 一定の間隔でイベントを発生させるコンポーネントで有る 此のコンポーネントは Windows フォーム環境で使用する サーバー環境に適したタイマが必要な場合は 後述の System.Timers.Timer を使用する イベントの発生する間隔は ミリ秒単位で Interval プロパティで設定しする

More information

アプリケーション

アプリケーション アプリケーション開発 お絵かきソフト 目次 お絵かきソフトを作ってみよう... 3 絵を書く枠と場所表示を作る... 3 マウスの動きを見てみよう... 4 絵を書く準備をします... 5 絵を書くとはどういうことか... 5 では線画を描いてみよう... 6 マウスをドラッグしたときだけ線を引くように改造する... 8 お絵かきソフトを作ってみよう 今回は お絵かきソフトを作ってみましょう マウスを動かして線画を書いてみましょう

More information

データベースプログラミング

データベースプログラミング データベース Visual Studio 2010 に依る Windows データベースプログラミング 第 1 回 DB アプリのデータソースと成るデータベースの作成 1.SQL Server の DB ファイルをプロジェクトに追加 2. データソース構成ウィザードに依る DB ファイルの追加 3. テーブルの作成とレコードの追加 第 2 回データセットとデータテーブル 1. データセットとは? 2.

More information

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk ...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 1 /* Database(Access) とやりとりするその 2 DataGridView による編集 */ 2015.9.21~9.23 仕様 DataGridView 上でデータのさまざまな直接編集が行えるようにする

More information

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略       - LogisticaTRUCKServer-Ⅱ(SQLServer 版 ) 距離計算サーハ API.NET DLL WebForms ASP.NET サンフ ルフ ロク ラム - 1 - LogisticaTRUCKServer-Ⅱ 距離計算サーハ.NET DLL WebForm ASP.NET VisualBasic での利用方法 LogisticaTRUCKServer-Ⅱ 距離計算.NET

More information

Microsoft Word - VB.doc

Microsoft Word - VB.doc 第 1 章 初めてのプログラミング 本章では カウントアップというボタンを押すと表示されている値が1ずつ増加し カウントダウンというボタンを押すと表示されている値が1ずつ減少する簡単な機能のプログラムを作り これを通して Visual Basic.NET によるプログラム開発の概要を学んでいきます 1.1 起動とプロジェクトの新規作成 Visual Studio.NET の起動とプロジェクトの新規作成の方法を

More information

グラフィックス 目次

グラフィックス 目次 WPF チュートリアル WPF デザイナーに依るサイズ変更可能なアプリケーションの作成 Grid コンテナーコントロールと共に GridSplitter コントロールを使用する事に依り 実行時にユーザーに依ってサイズを変更出来るウィンドウレイアウトを作成出来る 例えば 領域に分割されて居る UI を持つアプリケーションで ユーザーが分割線をドラッグする事に依り より多くの内容を見る必要が有る領域を大きくする事が出来る

More information

Prog2_2nd

Prog2_2nd 2018 年 10 月 4 日 ( 木 ) 実施 C# プログラムの基礎 基本構造 1) クラス Visual C# のプログラムの基本単位をクラスと呼ぶ Windows フォームアプリケーションを作 成する際, プロジェクトを作成すると生成されるファイルのうち,Form1.cs を例にとれば, その クラス名は Form1 である クラスは class キーワードを用いて宣言する Form1.cs

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

Microsoft Excel操作

Microsoft Excel操作 Microsoft Excel 操作 Excel ファイルにアクセス リフレクションを利用したレイトバインディングで Excel ファイルを操作 Visual Basic なら CreatObject 関数を使用して 暗黙の遅延バインディングを利用する事に依り 簡単にに実現出来る Excel の操作も C# で実現するには 少し面倒臭い事に成る 事前バインディングでも実装する事も出来るが 事前バインディングだと

More information

ブロック崩し風テニス

ブロック崩し風テニス ぱっくんフィッシング VB 2005 13 プログラムの概要 パーティゲームとして良く知られた釣りゲームです マウスで釣り糸を操作して 開閉する魚の口に餌を垂らし 魚が餌を咥えると 釣り上げ 籠の中に入れます 直ぐに口を開けて 海に逃れる魚 中々餌を離さず 籠に入らない魚と 色々なバリエーションが楽しめます 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い

More information

C#の基本2 ~プログラムの制御構造~

C#の基本2 ~プログラムの制御構造~ C# の基本 2 ~ プログラムの制御構造 ~ 今回学ぶ事 プログラムの制御構造としての単岐選択処理 (If 文 ) 前判定繰り返し処理(for 文 ) について説明を行う また 整数型 (int 型 ) 等の組み込み型や配列型についても解説を行う 今回作るプログラム 入れた文字の平均 分散 標準偏差を表示するプログラム このプログラムでは calc ボタンを押すと計算を行う (value は整数に限る

More information

VB.NET解説

VB.NET解説 Visual Basic.NET データベース編 目次 ADO.NET の概要... 2 ADO.NET と ADO... 2 ADO.NET の仕組み... 4 ADO.NET の特徴... 7 データアクセスの基本... 8 Windows アプリケーションの開発手順... 8 データ接続の作成... 9 データアダプタとコネクションの作成...10 データセットの作成...14 データアクセスの利用...21

More information

テスト 1/7 ページ プレポスト Visual Studio による Windows アプリの開発 ( 基礎編 ) 受講日程受講番号氏名 1.NET Framework に関する記述で 誤っているものを選びなさい 1..NET Framework に含まれる CLR は プログラミング言語に依存し

テスト 1/7 ページ プレポスト Visual Studio による Windows アプリの開発 ( 基礎編 ) 受講日程受講番号氏名 1.NET Framework に関する記述で 誤っているものを選びなさい 1..NET Framework に含まれる CLR は プログラミング言語に依存し 1/7 ページ プレポスト Visual Studio による Windows アプリの開発 ( 基礎編 ) 受講日程受講番号氏名 1.NET Framework に関する記述で 誤っているものを選びなさい 1..NET Framework に含まれる CLR は プログラミング言語に依存しない中間言語を実行するための環境である 2..NET Framework に含まれる.NET Framework

More information

データベースⅠ

データベースⅠ データベース操作プログラム Ⅰ VB 2005 8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

データベース1

データベース1 データベース操作プログラム Ⅲ VB20 プログラムの概要 ACCESS 等のデータベースの操作に不慣れな者でも 簡単に使用する事が出来るようなデータベースアプリケーションを目指します 今回は データグリッドをクリックする事に依り 其のレコードのフィールドデータを個別にテキストボックスやコンボボックスに表示するを付加する 此の際 カテゴリ ID や著者 ID の様に人間に解り難いデータ形式では無く

More information

mySQLの利用

mySQLの利用 MySQL の利用 インストール インストール時に特に注意点は無い 本稿記述時のバージョンは 6.5.4 で有る (2017 年 11 月現在では 6.10.4 で https://dev.mysql.com/downloads/connector/net/6.10.html よりダウンロード出来る ) 参照設定 インストールが終了すれば Visual Studio で参照の設定を行う 参照の設定画面で

More information

VFD256 サンプルプログラム

VFD256 サンプルプログラム VFD256 サンプルプログラム 目次 1 制御プログラム... 1 2.Net 用コントロール Vfd256 の使い方... 11 2.1 表示文字列の設定... 11 2.2 VFD256 書込み前のクリア処理... 11 2.3 書き出しモード... 11 2.4 表示モード... 12 2.5 表示... 13 2.6 クリア... 13 2.7 接続方法 ボーレートの設定... 13 2.8

More information

VB実用⑦ エクセル操作Ⅰ

VB実用⑦ エクセル操作Ⅰ VB でエクセル操作 Ⅰ VB 2005 7 プログラムの概要 事務処理に於いて Microsoft 社のスプレッドシートソフトで有るエクセルは データベースソフトで有るアクセスと共に 業界標準 (De Facto Standard) で有ると謂う事が出来る 此処では 其のエクセルを Visual Basic から操作する方法を 重点的に学ぶ 今回は Visual Basic でエクセルを利用する基本と成るオブジェクト生成と

More information

Prog2_4th

Prog2_4th 2018 年 10 月 18 日 ( 木 ) 実施 イベントハンドライベントハンドラとは Windows フォーム上のコントロールに対して クリックされた とか 文字列を変更された とかいったイベントを行った際に, それを受け取って処理を行うメソッドをイベントハンドラと呼ぶ 本日の課題第 3 回の授業では, フォームデザイナーで該当するコントロールをダブルクリックして, コードエディタに表示されたイベントハンドラの処理を記述したが,

More information

印刷

印刷 印刷 Windows フォームに於ける印刷のサポート Windows フォームに於ける印刷では 主に ユーザーに依る印刷を可能にする為の PrintDocument コンポーネントと Windows オペレーティングシステムを常用して居るユーザーに見慣れたグラフィカルインターフェイスを提供する為の PrintPreviewDialog コントロール PrintDialog コンポーネント 及び PageSetupDialog

More information

GUIプログラムⅣ

GUIプログラムⅣ GUI プログラム Ⅳ 画像指定ウィンドウの生成 ファイル名 :awtimage.java import java.awt.*; import java.awt.event.*; public class awtimage extends Frame // コンポーネントクラスの宣言 Button btnbrowse; Label lblcaption7; TextField txtimage; //

More information

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する XAML Do-It-Yourself シリーズ 第 3 回ベントとトリガー -1- XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述することで ゕプリケーションのユーザーンターフェスを実現していました

More information

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加 SharpShooter Reports.Win 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されま す 目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発...

More information

モグラ叩きプログラム

モグラ叩きプログラム プログラミングの有用性 VB 2005 1 醒めよ!! 遣り度い事を遣るには 先ず 遣らなければ成らない事を遣る! 現に 其の事に気付いて 日々 其の 遣らなければ成らない事 に邁進して居る人間が 居る 寧ろ 其れを愉しんでさえ居る者も居る 然して 着実に 世の中が必要とする技 術を身に付けて行って居る者が居る 併し 何が 遣らなければ成らない事 なのか解らない場合は 現実に対応出来る技術力 を持ち

More information

エクセル詳細 アドイン

エクセル詳細 アドイン Microsoft Excel 詳細 アドイン Excel アドインの作成 Excel アドインを作成するには ブックを作成し コード ユーザー設定ツールバー 及び メニュー項目を追加して Excel アドインファイルとして保存する 1. 新しいブックを作成してコードを追加し ユーザー設定ツールバー 又は メニューバーを作成する 2.[ ファイル ] メニューの [ プロパティ ] をクリックする

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 1 02 グラフゖックで簡単な図形を描く図形描画プログラム 1 今回作成するゕプリケーションの概要 ボタンをクリックすると図形を描くプログラム 行われる動作 [1] ボタンをクリック [2] そのボタンに対する図形を描く これを使用者とコンピュータの関係で描くと [ 使用者 コンピュータ ] ボタンをクリック [ 使用者 コンピュータ ] 図形を描画して見せる 使用者がコンピュータにすること ボタンをクリック

More information

VB実用① データベースⅠ

VB実用① データベースⅠ VB でデータベース Ⅰ VB 2005 1 プログラムの概要 データベースプログラムを手軽に作成する方法と仕ては Access のフォーム機能を用いる事が 先ず考えられる ウィザードも充実して居り 操作を覚えれば簡単に作成する事が出来る 其れでは VB でデータベースプログラムを作るメリットは何かと謂えば先ず Access のフォーム機能に比べ コントロールが充実して居り より自由なデザインが可能と謂う事と

More information

占領双六ゲーム

占領双六ゲーム 占領双六ゲーム VB 2005 9 プログラムの概要 赤と青の 2 者が順番にサイコロを振り 出た目の数だけ駒を進めて行き 停止したマス目を自分の色に塗り潰して 自分の陣地に出来ると謂う 所有る陣取りゲームを作成する マス目は最初に其のマスに停止した方の陣地となり 既に孰れかの色に塗り潰されて居るマスに 後から別の駒が停止しても 陣地の占領者が変わる事は無い 総てのマス目が孰れかの色に塗り潰されゝばゲームは終了し

More information

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D GS1-128 の描画 DLL について (ver. 2.2) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスがインスタンス化されてからメソッドに成る ) # 関数 def test_func(): print('call test_func') #

More information

Microsoft Word -

Microsoft Word - Visual Basic 2005 Express Edition 起動とプロジェクトの新規作成方法 1.1 起動とプロジェクトの新規作成 Visual Basic の起動とプロジェクトの新規作成の方法を Visual Basic 2005 Express Edition で説明します なお バージョンやエディションが異なる場合は 操作方法が若干違います 本節の起動とプロジェクトの新規作成の部分については

More information

インベーダープログラム

インベーダープログラム インベーダーゲーム VB 2005 5 プログラムの概要 テレビゲームの流行の魁と成る懐かしのゲーム インベーダー を作成する 先ず FIGHT!! ボタンをクリックすると インベーダーが左右に移動し乍ら 降下して来るので 自機を左右のカーソルキーで移動させ スペースキーでミサイルを発射する インベーダーが 最終ライン迄 降下して 侵略される前に 総てのインベーダーを撃墜しなければ ゲームは終了する

More information

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 目次第 1 章プログラミングについて 1 ソフトウェアの働き 1 2 プログラミング言語 1 3 主なプログラミング言語の歴史 2 第 2 章 Visual Basic について 1 Visual Basic とは 3 2.NET Framework の環境 3 3 Visual Basic と.NET Framework の関係

More information

3D回転体プログラム

3D回転体プログラム 3D 回転体プログラム VB 2005 4 プログラムの概要 入力画面で マウスを用いて 側面より見た平面図を描きます マウスの左ボタンをクリックする事で連続線を描き 右ボタンをクリックすると新しい線を描く事が出来る 側面図が完成すると 回転の基本角度を設定して 確定ボタンをクリックすると 平面図を立体図に座標変換する 各軸の回転角度を設定して 表示ボタンをクリックすると 立体図が表示される 各軸の回転角度を変更して

More information

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に於いては 構造体を定義は下記の様に記述する ( 末尾のセミコロンを忘れない様に ) strust Point int x; int y; 上記の様に定義すれば

More information

プロシード

プロシード プロシード VB 2005 14 きょうつうへんすうせんげん 共通の変数を宣言する ひょうじ 1. ソリューションエクスプローラで コードの表示をクリックする つぎひょうじところしたかこ 2. 次のコードが表示されるので 1の所に 下の囲いのコードを入力する Imports System.IO Imports System.Drawing.Drawing2D Public Class proceed

More information

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23 SharpShooter Reports.Silverlight 基本的な使い方 Last modified on: August 16, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます 目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 1...

More information

万年暦プログラム

万年暦プログラム 万年暦プログラム C# 2005 7 プログラムの概要 年月をテキストボックスで指定した後 表示ボタンをクリックして 指定した年月のカレンダーを表示する 画面上部のグループボックスでは 現在の年月日と時間をリアルタイムで表示する 此の場合 時間丈でなく 日付が変われば 日付もリアルタイムで変化する 指定した年月のカレンダーを表示するには 日付と時間を扱う組込関数を使用し 亦 日付と時間をリアルタイム表示するには

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション レッスン (1) あるワークシート中のあるセルを指定する Worksheets(" ワークシート名 ").Range(" セル ").Value ( 例 ) Worksheets(" データ収集 ").Range("A2").Value あるワークシートのセルから 別のワークシートのセルへ転記する Worksheets(" シート A").Range(" セル ").Value = Worksheets("

More information

TestDesign for Web

TestDesign for Web 発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium

More information

MS Office オートメーション

MS Office オートメーション MS Office オートメーション Excel マクロのキックに依る印刷 Access では CSV や Excel 形式でのファイル保存が可能で有る 此れ利用して Excel のマクロを装備したシートに読み込んでマクロを実行し 印刷する方法を紹介する 一般的には, 単成るテキストファイルで有る CSV の方が Excel 形式ファイルより汎用性が有るが マクロで自動実行した時には が行頭に付いて居るセルを文字列型と仕て認識して仕舞うと謂う問題が発生する為

More information

ExcelVBA

ExcelVBA EXCEL VBA REGLECASSE YU SATO 目次 はじめに 開発タブの表示 拡張子 VBEの起動と初期設定 モジュールの挿入 削除 プロジェクト モジュール プロシージャ 変数の宣言 (Dim) If~Then For~Next 応用 :If~ThenとFor~Next ボタンの作成 最後に Subプロシージャ 基本説明 セルの指定 (Range) 変数とデータ型 (String,Long)

More information

データベース1

データベース1 データベース操作プログラム Ⅰ VB8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O) 21113 Visual Basic を利用したフリーソフト開発 要旨 各自でフリーソフトを作成 インターネット上に公開することを目的とし Visual Basic2008 2010 を使い簡単なアプリの作成に成功した 1. 目的情報化が進んだ現代において 社会に出ていくためにはパソコンの一つや二つ 軽く扱えなければならない さらに 資源の乏しい日本においては今後 情報技術の発展することが望ましいと考える

More information

回文作成支援プログラム

回文作成支援プログラム 回文作成支援プログラム C# 2005 2 プログラムの概要 原文を 1 字入力する度に 其の回文が順次表示される 即ち AB と入力すると ABA と表示され ABC と入力すると ABCBA と表示される 亦 消去ボタンをクリックすると 原文 及び 回文を消去する事も出来る 終了ボタンをクリックすると プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 ( データ型変数名 ;)

More information

データグリッドビュー

データグリッドビュー データグリッドビュー DataGridView コントロールを操作する 101 の方法 初めに Windows Forms プログラミングで普段良く使われるコントロールの一つに DataGridView が有る DataGridView は Windows Forms 2.0 で新たに登場したコントロールで Windows Forms 1.0 の DataGrid コントロールの後継と成る物で有る

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション VBA (Visual BASIC for Applications) で Body Mass Index 判定プログラムを作る ユーザーフォームを用いたプログラムの作成 Graphic User Interface ( GUI ) の利用法 構造化プログラムの作成 複雑なプログラムを 関数に分割して作る方法 VBA(Visual BASIC for Applications) のテキストは たくさんあります

More information

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする 2015.9.19~9,20 仕様 Excel の場合は 処理メニュー選択用の新しいフォームを開き この実行ファイルと同じフォルダにある test.xlsb

More information

MVP for VB が語る C# 入門

MVP for VB が語る C# 入門 MVP for VB が語る C# 入門 2008.08.09 初音玲 自己紹介 Z80 アセンブラ 6809 アセンブラ F-BASIC N88-BASIC FORTRAN 77 COBOL LISP Turbo Pascal Prolog KABA C 言語 M シリーズ アセンブラ PL/I VB3.0~ PL/SQL T-SQL VB2005/2008 index Microsoft Visual

More information

構造体

構造体 構造体 構造体を取り扱うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; C# ユーザー定義型 (Type) と構造体 (Structure) 6.0 のユーザー定義型 (Type) を.NET

More information

ドッグファイト

ドッグファイト ドッグファイト きょうつうへんすうこうぞうたいせんげん 共通の変数や構造体を宣言する ひょうじ 1. ソリューションエクスプローラで コードの表示をクリックする 2. 次のコードが表示されるので 1の所に 下の囲いのコードを入力する Public Class DogFighter 1 ここに入力する! End Class Private Structure BeamPosition Dim XL As

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 1 01 Visual C# 2010 を使ってみよう BMI 計算プログラム 1 Visual Studio 2010 の起動 1 2 画面左下 タスクバーの左端にある スタートボタン をクリック 表示されたメニューにある すべてのプログラム をクリック 2 1 3 4 メニューから Microsoft Visual Studio 2010 のフォルダを探して これをクリック フォルダが展開されて

More information

占領双六ゲーム

占領双六ゲーム 占領双六ゲーム C# 2005 9 プログラムの概要 赤と青の 2 者が順番にサイコロを振り 出た目の数だけ駒を進めて行き 停止したマス目を自分の色に塗り潰して 自分の陣地に出来ると謂う 所有る陣取りゲームを作成する マス目は最初に其のマスに停止した方の陣地となり 既に孰れかの色に塗り潰されて居るマスに 後から別の駒が停止しても 陣地の占領者が変わる事は無い 総てのマス目が孰れかの色に塗り潰されゝばゲームは終了し

More information

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト C++ では其のキャストを 3 種類に分類して居る 静的な普通の型変換 (static_cast) 先ずは 1 つ目は 静的な普通の型変換で有る

More information

正規表現概要

正規表現概要 正規表現 正規表現の概要 此処では.NET Framework の正規表現に付いて 主に正規表現パターンに付いて 基本を極く簡単に説明する 猶.NET Framework の正規表現は Perl5 の正規表現に対応する様にデザインされて居るので Perl の正規表現を理解して居れば問題は無い ( 勿論 理解して居なくても問題は無い ) 正規表現で出来る事 正規表現は 文字列を検索する為に使用する 正規表現を使うと

More information

FileExplorer for ASP.NET Web Forms

FileExplorer for ASP.NET Web Forms FileExplorer for ASP.NET Web Forms 2018.04.12 更新 グレープシティ株式会社 目次 製品の概要 2 ComponentOne for ASP.NET Web Formsのヘルプ 2 ビジュアル要素 3 クイックスタート : フォルダパスの追加 4-5 エクスプローラーの機能 6 複数ファイルの選択 6-7 フォルダの作成と管理 7 ファイル操作の無効化 7

More information

データベースⅠ

データベースⅠ データベース操作プログラム Ⅰ VB 2005 8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

草競馬プログラム

草競馬プログラム 草競馬プログラム C# 2005 5 プログラムの概要 6 頭の馬の内 一着でゴールする馬を予想してテキストボックスに 1 から 6 の数値を入力してスタートボタンをクリックする 馬は 乱数を利用して 右から左に 1 枡宛移動する 一定の時間間隔で乱数を発生させて該当する馬を 1 枡左に移動させるにはタイマーオブジェクトを使用する 1 頭の馬がゴールに達すると 予想が的中したか何うか判定を行い あたり

More information

印刷

印刷 CrystalReport 印刷 概要 レポート作成ツールの利点 データの取得は難しく無い 例えば コードを記述してレコードセットをループし 目的の Windows アプリケーションや Web のアプリケーションに出力出来る.NET Framework 環境では 更に其のデータを Repeater DataList 又は DataGrid 等のコントロールにバインドする事も可能で有る 併し 此のデータを一定のレポート形式で表示するには

More information

Java - Visual Editor

Java - Visual Editor Visual Editor で Swing アプリケーションを作成 Swing プログラミングに慣れて居ても ソースコード上丈で思い通りの GUI を作成するのは 可成り骨の折れる作業で有る Visual Editor を使用すれば 試行錯誤し乍ら 非常に簡単に GUI アプリケーションを作成する事が出来る 此処では JFrame を拡張して 簡単なアプリケーションを作成して観る事にする Java

More information

MISAO with WPF

MISAO with WPF System.AddIn を利用した アプリケーション拡張 - アドインの開発 - JZ5( 松江祐輔 )@ わんくま http://katamari.jp http://katamari.wankuma.com 2008/9/13 What s System.AddIn System.AddIn 名前空間 Visual Studio Orcus から利用可能 アプリケーションに拡張機能を提 供 なんかいろいろ特長が?

More information

WebBrowserコントロール

WebBrowserコントロール WebBrowser コントロール Windows アプリケーションで Web ページを表示.NET Framework 2.0 では HTML 等の Web ページを Windows フォーム上に表示する為の WebBrowser コントロール (System.Windows.Forms 名前空間 ) が新たに追加されて居り 非常に手軽に Web ページの表示が出来る様に成って居る (.NET Framework

More information

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

ASP.NET 2.0 Provider Model 概要

ASP.NET 2.0 Provider Model 概要 ASP.NET 2.0 Provider Model 概要 Agenda ASP.NET 2.0 Provider Model とは カスタムプロバイダの実装 まとめ ASP.NET 2.0 Provider Model とは ASP.NET 2.0 のインフラストラクチャ データストアへのアクセスをアプリケーションロジックから分離 データストアの変更に柔軟に対応 Strategy パターン デザインパターンによる意識の共通化

More information

Microsoft Word _VBAProg1.docx

Microsoft Word _VBAProg1.docx 1. VBA とマクロ 1.1 VBA とは VBA(Visual Basic for Applications) は 1997 年に Microsoft 社がマクロを作成するために開発された言語である Windows 対応のアプリケーションを開発するためのプログラミング言語 Visual Basic をもとにしているため 次のような特徴がある 1 VBA は Excel Word, Access,

More information