投稿日 | : 2007/01/16(Tue) 20:21 |
投稿者 | : 7-2/1 |
Eメール | : |
URL | : |
タイトル | : MSFlexGridにチェックボックスを表示するで |
MSFlexGridの一番左側にチェックボックスを表示しようとしています。
表示する方法は、このサイトの過去ログを検索し、作ってみました。
MSFlexGridにチェックボックスを表示することはできたのですが、
MSFlexGridの最後に、どうしても、チェックボックスが1個余分に
表示されてしまうのです。
ただ、MSFlexGridに表示するデータはありません。チェックボックス
のみが表示されてしまうのです。
どうしてなのでしょうか。解決策などを教えて欲しいのですが。
以下に、MSFlexGridにチェックボックスを表示するソースを記載します。
------------------------------------------------------------------
Option Explicit
Dim CheckBox_cnt As Long
Private Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
Private Sub Form_Load()
Call Grid_init
Call Grid_set
End Sub
Private Sub Grid_init()
MSFlexGrid1.CellAlignment = 1
MSFlexGrid1.HighLight = flexHighlightNever
MSFlexGrid1.Clear
MSFlexGrid1.Cols = 5
MSFlexGrid1.Rows = 2
MSFlexGrid1.TextMatrix(0, 0) = "X"
MSFlexGrid1.ColWidth(0) = 200
MSFlexGrid1.TextMatrix(0, 1) = "番号"
MSFlexGrid1.ColWidth(1) = 900
MSFlexGrid1.TextMatrix(0, 2) = "名前"
MSFlexGrid1.ColWidth(2) = 2000
MSFlexGrid1.TextMatrix(0, 3) = "住所"
MSFlexGrid1.ColWidth(3) = 4000
MSFlexGrid1.TextMatrix(0, 4) = "電話番号"
MSFlexGrid1.ColWidth(4) = 2000
End Sub
Private Sub Grid_set()
Dim lng_I As Long
Dim lng_J As Long
Dim I As Long
'** エラートラップ開始
On Error Resume Next
'Call CheckBox_Clear
CheckBox_cnt = 0
lng_I = 0
lng_J = 0
MSFlexGrid1.ColAlignment(1) = 0
For I = 0 To 10
lng_I = lng_I + 1
MSFlexGrid1.Rows = lng_I + 1
MSFlexGrid1.TextMatrix(lng_I, lng_J) = "0"
Call MoveCheck
MSFlexGrid1.TextMatrix(lng_I, lng_J + 1) = "000001"
MSFlexGrid1.TextMatrix(lng_I, lng_J + 2) = "山田 太郎"
MSFlexGrid1.TextMatrix(lng_I, lng_J + 3) = "東京都千代田区大手町"
MSFlexGrid1.TextMatrix(lng_I, lng_J + 4) = "03-0000-0000"
CheckBox_cnt = lng_I
Next
End Sub
Private Sub MoveCheck()
Const CHECK_COL = 0
Dim sngTwipsPerPixelX As Single
Dim sngTwipsPerPixelY As Single
Dim I As Long, j As Long
sngTwipsPerPixelX = Screen.TwipsPerPixelX
sngTwipsPerPixelY = Screen.TwipsPerPixelY
j = 1
With MSFlexGrid1
If .ColIsVisible(CHECK_COL) Then
I = .Rows - 1
j = .Rows - 1
If j > Check1.UBound Then
Load Check1(j)
Call SetParent(Check1(j).hWnd, MSFlexGrid1.hWnd)
End If
Check1(j).Move .ColPos(CHECK_COL) + sngTwipsPerPixelX, _
.RowPos(I) + sngTwipsPerPixelY, _
.ColWidth(CHECK_COL) - sngTwipsPerPixelX * 3, _
.RowHeight(I) - sngTwipsPerPixelY * 3
Check1(j).Caption = ""
If .TextMatrix(I, CHECK_COL) = "1" Then
Check1(j).Value = 1
Else
Check1(j).Value = 0
End If
Check1(j).Tag = I
Check1(j).Visible = True
End If
.Refresh
End With
End Sub
Private Sub CheckBox_Clear()
Dim I As Long
If CheckBox_cnt >= 1 Then
For I = 1 To CheckBox_cnt
Check1(I).Value = False
Check1(I).Visible = False
Check1(I).Enabled = True
Next
End If
End Sub
------------------------------------------------------------------