Помогите кто нибудь!
Нужна таблица которую можно свободно редактировать с определенным кол-вом столбцов и одной строкой(ну это несложно), но при добавлении текста в одну ячейку последней строки должна добавляться пустая строка(в этом вся проблема). В качестве таблицы использую "HierarchicalFlexGrid".
Вот код если надо:
Private Sub Fg2_DblClick()
MSHFlexGridEdit Fg2, txtEdit, KeyAscii
End Sub
Private Sub Fg2_GotFocus()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
Private Sub Fg2_KeyPress(KeyAscii As Integer)
MSHFlexGridEdit Fg2, txtEdit, 32
End Sub
Private Sub Fg2_LeaveCell()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub
Private Sub Form_Load()
Dim i As Integer
Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
Fg2.ColAlignment(0) = 1
For i = Fg2.FixedRows To Fg2.Rows - 1
Fg2.TextArray(Fgi(i, 0)) = i
Next
For i = Fg2.FixedCols To Fg2.Cols
Fg2.TextArray(Fgi(0, i)) = i
Next
txtEdit = ""
End Sub
Private Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End Sub
Private Sub txtEdit_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End Sub
Private Sub VScroll1_Change()
Text1.Top = VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
Text1.Top = VScroll1.Value
End Sub
Function Fgi(r As Integer, c As Integer) As Integer
Fgi = c + Fg2.Cols * r
End Function
Sub MSHFlexGridEdit(MSHFlexGrid As Control, Edt As Control, KeyAscii As Integer)
Select Case KeyAscii
Case 0 To 32
Edt = MSHFlexGrid
Edt.SelStart = 1000
Case Else
Edt = Chr(KeyAscii)
Edt.SelStart = 1
End Select
Edt.Move MSHFlexGrid.Left + MSHFlexGrid.CellLeft, MSHFlexGrid.Top + MSHFlexGrid.CellTop, MSHFlexGrid.CellWidth - 8, MSHFlexGrid.CellHeight - 8
Edt.Visible = True
Edt.SetFocus
End Sub
Sub EditKeyCode(MSHFlexGrid As Control, Edt As Control, KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 27
Edt.Visible = False
MSHFlexGrid.SetFocus
Case 13
MSHFlexGrid.SetFocus
Case 38
MSHFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row > MSHFlexGrid.FixedRows Then
MSHFlexGrid.Row = MSHFlexGrid.Row - 1
End If
Case 40
MSHFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row < MSHFlexGrid.FixedRows Then
MSHFlexGrid.Row = MSHFlexGrid.Row + 1
End If
End Select
End Sub
Пробовал так:
Private Sub Fg2_SelChange()
Fg2.Rows = Fg2.Rows + 1
End Sub
Ячейки добавляються. Даже слишком:) (при выделении пустой ячейки добовляеться строка). Нужно проверять содержимое строки, а если из ячейки удалили содержимое, то строку нужно удалить.