玄関へお回り下さい。
AxMSHFlexGridコントロールの基本的な操作色々(その1)(21個)      (SNo.068)

1.行及び列の総数を設定します
2.固定型の行及び列の総数を設定します
3.すべての列の幅・指定の列の幅をtwip 単位で設定する
4.すべての行の高さ・指定の行の高さをtwip 単位で設定する
5.任意のセルのテキストを設定します
6.任意のセルのテキストを取得します
7.セル内でのデータの水平配置および垂直配置を設定する
8.カレントセルにフォーカスを示す四角形を描く
9.選択されたセルを強調表示する
10. アクティブセルの行及び列番号及びテキストを取得
11. 指定セルのバックカラー及びフォアカラーを設定
12. アクティブセルの上側に行を挿入
13. アクティブセルの行を削除
使用コントロール Button1 〜 Button13  AxMSHFlexGrid1
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
ツールボックスを右クリックして、アイテムの追加と削除より、COMコンポーネント内のMicrosoft Hierarchical FlexGrid Control 6.0(SP4)(OLEDB) にチェックを入れて下さい。(VB6.0 が別途必要です) 
1.行及び列の総数を設定します(2)
   (MSHFlexGrid1.Rows=10 MSHFlexGrid1.Cols=10 )
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'行及び列の総数を設定します
    '行の総数を設定します
    AxMSHFlexGrid1.Rows = 10
    '列の総数を設定します
    AxMSHFlexGrid1.set_Cols(10)  '
ここでエラーが発生したら Framework のサービスパックを確認
 
' AxMSHFlexGrid1.set_Cols(0,10) 'これならどちらでも動作しますが...。
End Sub

この際サービスパックを SP1 にしておいて下さい。 
Framework 1.1 サービスパックなしでエラー確認

2.固定型の行及び列の総数を設定します(2)
   (MSHFlexGrid1.FixedRows=2 MSHFlexGrid1.FixedCols=2
)
 
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'固定型の行及び列の総数を設定します
    '固定型の列の総数を設定します
    AxMSHFlexGrid1.FixedCols = 2
    '固定型の行の総数を設定します
    AxMSHFlexGrid1.FixedRows = 2
End Sub
 
3.すべての列の幅・指定の列の幅をtwip 単位で設定する(2)
   (MSHFlexGrid1.ColWidth(0) =500 MSHFlexGrid1.ColWidth(-1) = 1500)

 
Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'すべての列の幅・指定の列の幅をtwip 単位で設定する
    'すべての列の幅をtwip 単位で設定します
    AxMSHFlexGrid1.set_ColWidth(-1, 500)
    '指定の列の幅をtwip 単位で設定します
    AxMSHFlexGrid1.set_ColWidth(1, 2000)
End Sub


 ここでエラーが発生したら Framework のサービスパックを確認の事
 この際サービスパックを SP1 にしておいて下さい。 Framework 1.1 サービスパックなしでエラー確認

  一応、下記ならどちらでも動作しますが、お薦めできません。
   AxMSHFlexGrid1.set_ColWidth(-1, 0, 500)
   AxMSHFlexGrid1.set_ColWidth(1, 0, 2000)
4.すべての行の高さ・指定の行の高さをtwip 単位で設定する(2)
   (MSHFlexGrid1.RowHeightMin = 350 MSHFlexGrid1.RowHeight(1) = 350 )

 
Private Sub Button4_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button4.Click
'すべての行の高さ・指定の行の高さをtwip 単位で設定する
    'すべての行の高さをtwip 単位で設定します
    AxMSHFlexGrid1.set_RowHeight(-1, 350)
    '指定の行の高さをtwip 単位で設定します
    AxMSHFlexGrid1.set_RowHeight(1, 500)
End Sub
 
5.任意のセルのテキストを設定します(1)
   (MSHFlexGrid1.TextMatrix(1, 1) = "書込" )

 
Private Sub Button5_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button5.Click
'任意のセルのテキストを設定します
    AxMSHFlexGrid1.set_TextMatrix(1, 1, "書込")
End Sub
 
6.任意のセルのテキストを取得します(1)
   (MsgBox MSHFlexGrid1.TextMatrix(1, 1) )

 
Private Sub Button6_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button6.Click
'任意のセルのテキストを取得します
    MsgBox(AxMSHFlexGrid1.get_TextMatrix(1, 1))
End Sub
 
7.セル内でのデータの水平配置および垂直配置を設定する(2)
  (MSHFlexGrid1..CellAlignment = flexAlignRightCenter)

Private Sub Button7_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button7.Click
'セル内でのデータの水平配置および垂直配置を設定する
  
'セルの内容は右揃え、中央揃えで配置します。
    AxMSHFlexGrid1.set_ColAlignment(1, _
                MSHierarchicalFlexGridLib.AlignmentSettings.flexAlignRightCenter)
    '固定行の場合(セルの内容は右揃え、中央揃えで配置します)
    AxMSHFlexGrid1.set_ColAlignmentFixed(1, _
                MSHierarchicalFlexGridLib.AlignmentSettings.flexAlignRightCenter)
End Sub
 
8.カレントセルにフォーカスを示す四角形を描く(1)
   (MSHFlexGrid1.FocusRect = flexFocusNone )

 
Private Sub Button8_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button8.Click
'カレント セルにフォーカスを示す四角形を描く
    AxMSHFlexGrid1.FocusRect = MSHierarchicalFlexGridLib.FocusRectSettings.flexFocusNone
End Sub
 
9.選択されたセルを強調表示する(1)
   (MSHFlexGrid1.HighLight = flexHighlightAlways )

 
Private Sub Button9_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button9.Click
'選択されたセルを強調表示する
   
AxMSHFlexGrid1.HighLight = MSHierarchicalFlexGridLib.HighLightSettings.flexHighlightAlways
End Sub
 
10. アクティブセルの行及び列番号及びテキストを取得(3)
 
Private Sub Button10_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button10.Click
'アクティブセルの行及び列番号及びテキストを取得
    Dim colPos, rowPos As Integer
    'アクティブ セル(列)の座標を設定・取得します
    colPos = AxMSHFlexGrid1.Col
    'アクティブ セル(行)の座標を設定・取得します。
    rowPos = AxMSHFlexGrid1.Row
    'アクティブ セルのテキストを取得
   
MsgBox(AxMSHFlexGrid1.get_TextMatrix(rowPos, colPos) & "  " & rowPos & "  " & colPos)
End Sub
 
11. 指定セルのバックカラー及びフォアカラーを設定(2)
 
Private Sub Button11_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button11.Click
'指定セルのバックカラー及びフォアカラーを設定
    AxMSHFlexGrid1.Col = 2
    AxMSHFlexGrid1.Row = 3
    AxMSHFlexGrid1.Text = "色の設定"
    ''指定のセルのフォアカラーを設定
    AxMSHFlexGrid1.CellForeColor = Color.Wheat
    ''指定のセルのバックカラーを設定
    AxMSHFlexGrid1.CellBackColor = Color.Red
End Sub
 
12. アクティブセルの上側に行を挿入(1)
 
Private Sub Button12_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button12.Click
'アクティブ セルの上側に行を挿入
    AxMSHFlexGrid1.AddItem("", AxMSHFlexGrid1.Row)
End Sub
 
13. アクティブセルの行を削除(1)
 
Private Sub Button13_Click(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles Button13.Click
'アクティブ セルの行を削除
    AxMSHFlexGrid1.RemoveItem(AxMSHFlexGrid1.Row)
End Sub
 
VB6.0 を持っている人なら、.NET でVB6.0のMSHFlexGrid が使用できるので使わない手はないと思い試してみました。
若干プロパティ等が変わっていたり、ヘルプ等の記述やWEB上でのサンプル等も見かけないので試した結果を記載しておきます。
(  )内の表記は、VB6.0での(同等のプロパティ等の)使用例です。





2004/06/23
2006/02/19


VBレスキュー(花ちゃん)
VB.NET2003  VB2005