10
Ноябрь
2009
Checkbox и Combobox в MSFlexGrid
Checkbox и Combobox в MSFlexGrid.
На форме ComboBox — индекс = 0, CheckBox — индекс = 0 и MSFlexGrid
Изменение ширины колонок отключил (не могу отловить событие изменения ширины).
Option Explicit
Dim x As Integer
Dim NumVisRow As Integer
Dim PredRowPos As Integer
Dim HeightRows As Integer
Private Sub Command1_Click()
MSFlexGrid1.AddItem ""
x = Combo1.Count
Load Check1(x)
Check1(x).Left = MSFlexGrid1.Left + 100
Check1(x).Top = MSFlexGrid1.Top + (MSFlexGrid1.RowHeight(0) * x) + 100
Check1(x).ZOrder
Load Combo1(x)
Combo1(x).Left = MSFlexGrid1.Left + MSFlexGrid1.ColWidth(0) + MSFlexGrid1.ColWidth(1) + MSFlexGrid1.ColWidth(2) + 50
Combo1(x).Top = MSFlexGrid1.Top + (MSFlexGrid1.RowHeight(0) * x) + 50
Combo1(x).Width = MSFlexGrid1.ColWidth(3)
Combo1(x).ZOrder
Combo1(x).AddItem "Пар" & x
If Check1(x).Top < MSFlexGrid1.Top + MSFlexGrid1.Height Then
Check1(x).Visible = True
End If
If Combo1(x).Top < MSFlexGrid1.Top + MSFlexGrid1.Height Then
Combo1(x).Visible = True
End If
End Sub
Private Sub Form_Load()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
MSFlexGrid1.Cols = 5
MSFlexGrid1.Rows = 1
Combo1(0).Visible = False
Check1(0).Visible = False
Check1(0).Caption = ""
Check1(0).Width = 200
Check1(0).Height = 200
'Check1(0).Appearance = 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
NumVisRow = 5 ' высота в строках
HeightRows = 330
MSFlexGrid1.RowHeightMin = HeightRows
MSFlexGrid1.Height = HeightRows * NumVisRow + 50
MSFlexGrid1.ColWidth(0) = 330
MSFlexGrid1.ColWidth(3) = 2000
End Sub
Private Sub MSFlexGrid1_Scroll()
For x = 1 To MSFlexGrid1.Rows - 1
Combo1(x).Visible = False
Check1(x).Visible = False
Combo1(x).Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(x) + 50
Check1(x).Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(x) + 100
If Combo1(x).Top < MSFlexGrid1.Top + HeightRows Or Combo1(x).Top > MSFlexGrid1.Top + MSFlexGrid1.Height - 50 Then
Combo1(x).Visible = False
Else
Combo1(x).Visible = True
End If
If Check1(x).Top < MSFlexGrid1.Top + HeightRows Or Check1(x).Top > MSFlexGrid1.Top + MSFlexGrid1.Height Then
Check1(x).Visible = False
Else
Check1(x).Visible = True
End If
Next x
End Sub
Private Sub Combo1_Change(Index As Integer)
MSFlexGrid1.Col = 3
MSFlexGrid1.Row = Index
MSFlexGrid1.Text = Combo1(Index).Text
End Sub
Private Sub Combo1_Click(Index As Integer)
MSFlexGrid1.Col = 3
MSFlexGrid1.Row = Index
MSFlexGrid1.Text = Combo1(Index).Text
End Sub
Private Sub Check1_Click(Index As Integer)
MSFlexGrid1.Col = 0
MSFlexGrid1.Row = Index
MSFlexGrid1.ForeColorFixed = MSFlexGrid1.BackColorFixed
If Check1(Index).Value = True Then
MSFlexGrid1.Text = 1
Else
MSFlexGrid1.Text = 0
End If
End Sub