SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(MultiRow)

伝票形式画面作成の切り札!
MultiRow for Windows Formsを使ってみよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (41.7 KB)

DataSetの内容を表示する

テンプレートを指定する

 IDとパスワードを入力するテキストボックスとデータ取得用のボタンを配置して、MultiRowのスマートタグから作成したテンプレートを指定し、チェック項目を図13のように設定すれば完成です。

図13 テンプレートの選択
図13 テンプレートの選択

コードを記述する

 ボタンのクリックイベントに、リスト1のようなコードを記述します。

リスト1 CZ0911FollowerType1_Form.vb
Private Sub Get_Button_Click(ByVal sender As System.Object, _
                             ByVal e As System.EventArgs) Handles Get_Button.Click
    Dim userID As String = Me.UserID_TextBox.Text.Trim
    Dim pass As String = Me.Password_TextBox.Text.Trim

    Me.Cursor = Cursors.WaitCursor
    Me.Message_ToolStripStatusLabel.Text = "取得中"
    Me.Refresh()
    Try
        Using _proc As New Twitter
            Me.CZ0911_GcMultiRow.DataSource = _proc.GetFollowers(userID, pass)
            Me.CZ0911_GcMultiRow.DataMember = "Follower"
        End Using
        Me.Message_ToolStripStatusLabel.Text = ""
    Catch ex As Exception
        Me.Message_ToolStripStatusLabel.Text = ex.Message
    Finally
        Me.DateTime_ToolStripStatusLabel.Text = Now.ToString("MM/dd hh:mm:ss")
        Me.Cursor = Cursors.Default
    End Try
 End Sub
 

 リスト1では、ステータスバーにメッセージを表示したりする部分も含んでいますが、必須なのは次の部分だけです。

Me.CZ0911_GcMultiRow.DataSource = _proc.GetFollowers(userID, pass)
Me.CZ0911_GcMultiRow.DataMember = "Follower"
 

 テンプレートの定義があれば、これだけの記述でDataSetの内容を一覧表示できます。

実行する

 Twitterの登録IDとパスワードを入力して[取得]ボタンをクリックすれば、図14のように左端にアイコンが表示されます。右側には上下2段でフォロワーの情報が表示されます。

図14 サンプル「CZ0911FollowerType1」の実行結果
図14 サンプル「CZ0911FollowerType1」の実行結果

MultiRowの内容を取得する

 MultiRowに表示されている内容を変更した場合、変更値を取得するには2つの方法があります。

  1. DataFieldプロパティが指定されており、DataSetが割り当てられているセルの場合、画面の変更はDataSetの内容に反映されるので、DataSetの値から変更値を取得
  2. DataSetが割り当てられていない非バインドのセルの場合、プログラムコードでセルから変更値を取得

非バインドセルからの情報取得

 サンプル「CZ0911FollowerType2」のテンプレートでは、図15にあるように1段目の最右端に[処理]としてオプションボタンを設定しています。また、DataFieldにも設定を行っていないため「(なし)」となっています。

図15 テンプレートの選択
図15 テンプレートの選択

 [処理]オプションボタンでは、次の選択が可能です(実際にTwitter宛てに更新する処理はサンプルに含まれていません)。

  • None:特に何も処理しません
  • Follow:該当者をフォロー(発言を購読)します
  • Block:該当者に自分の発言を見せなくします

 各行の[処理]オプションボタンの値を取得するためには、「インデックス」を指定します。セルにどのようなインデックスが割り当てられているかは、テンプレートデザイナで[テンプレート]‐[セルの情報]‐[インデックス]メニューをクリックして全体表示すると分かりやすいでしょう。

図16 インデックスの表示
図16 インデックスの表示

 [処理]オプションボタンのインデックスは「6」になので、値を取得するコードはリスト2のようになります。

リスト2 CZ0911FollowerType2_Form.vb
Private Sub Proc_Button_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Proc_Button.Click
    Me.Cursor = Cursors.WaitCursor
    Me.Message_ToolStripStatusLabel.Text = "更新中"
    Me.Refresh()
    Try
        For Each row As GrapeCity.Win.MultiRow.Row In Me.CZ0911_GcMultiRow.Rows
            Select Case row.Item(6).Value
                Case "0"    'None
                Case "1"    'Follow
                Case "2"    'Block
                Case Else   '選択なし
            End Select
        Next
    Catch ex As Exception
        Me.Message_ToolStripStatusLabel.Text = ex.Message
    Finally
        Me.DateTime_ToolStripStatusLabel.Text = Now.ToString("MM/dd hh:mm:ss")
        Me.Cursor = Cursors.Default
    End Try
 End Sub
 

 リスト2では、「For Each row As GrapeCity.Win.MultiRow.Row In Me.CZ0911_GcMultiRow.Rows」を使っていますが、リスト3のように行位置を指定して取得することも可能です。

リスト3 行位置を使って取得するコード
For rowIndex As Integer = 0 To Me.CZ0911_GcMultiRow.RowCount - 1
    Select Case Me.CZ0911_GcMultiRow.GetValue(rowIndex, 6).Value
        Case "0"    'None
        Case "1"    'Follow
        Case "2"    'Block
        Case Else   '選択なし
    End Select
Next
 
図17 サンプルCZ0911Followertype2の実行結果
図17 サンプルCZ0911Followertype2の実行結果

次回予告

 次回は、MultiRowとInputMan、ActiveReportsを組み合わせ、画面と帳票で同じ形式を実現する方法を取り上げてみたいと思います。

製品情報

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(MultiRow)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4625 2010/09/13 16:58

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング