Таблицы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Таблицы

Сообщение burik » 04.12.2005 (Вс) 21:00

Помогите кто нибудь!
Нужна таблица которую можно свободно редактировать с определенным кол-вом столбцов и одной строкой(ну это несложно), но при добавлении текста в одну ячейку последней строки должна добавляться пустая строка(в этом вся проблема). В качестве таблицы использую "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

Ячейки добавляються. Даже слишком:) (при выделении пустой ячейки добовляеться строка). Нужно проверять содержимое строки, а если из ячейки удалили содержимое, то строку нужно удалить.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.12.2005 (Вс) 22:21

Нужно проверять содержимое строки, а если из ячейки удалили содержимое, то строку нужно удалить.

Ну вот и ответ на вопрос... :wink:
А я все практикую лечение травами...

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 05.12.2005 (Пн) 15:25

Видимо меня неправильно поняли.
Что нужно проверять содержимое ячейки я знаю,а как это
сделать-нет! :?
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 05.12.2005 (Пн) 15:48

Извините за мое невежество в VB, просто я новичек.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 111

    TopList