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