Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
tigerxml
0 / 0 / 0
Регистрация: 14.09.2007
Сообщений: 1
#1

Неполучается отредактировать данные в MSFlexGrid - VB

17.09.2007, 17:50. Просмотров 1552. Ответов 1
Метки нет (Все метки)

Подскажите, почему не програмно (runtime например при клике мышкой на ячейку) не получается отредактировать данные в таблице.

Если это невозможно то посоветуйте что можно использовать(желательно не коммерческое) для создния списка свойств(название - значение, как в дельфи или VB при редактировании свойств контрола)?
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2007, 17:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Неполучается отредактировать данные в MSFlexGrid (VB):

Изменить данные в ячейке MSFlexGrid с координатами (5,5)
Ребята как мне изменить данные в ячейке MSFlexGrid с координатами (5,5)

Сохранить данные после удаления строки в MSFlexGrid
После добавлении\редактирования строк с последующим сохранением данных все...

Позволить пользователю самому вводить данные в MsFlexGrid
Как использовать MsFlexGrid ??? как позвателю позволить самому вводить данные...

Как загрузить в MSFlexGrid данные из буфера обмена?
Как загрузить в MSFlexGrid данные из буфера обмена? данные табличного типа,...

Как из MSFlexGrid перенести данные в Exel 2007 ?
ну думаю из названия все понятно. На форме есть таблица MSFlexGrid в которой...

Как данные, возвращаемые запросом, вставить в MSFlexGrid?
Подскажите кто знает, как данные возвращаемые запросом вставить в MSFlexGrid?

1
AlexeyTyurin
0 / 0 / 0
Регистрация: 28.08.2007
Сообщений: 171
18.09.2007, 09:20 #2
Редактирование данных в сетке
MSFlexGrid не имеет встроенных возможностей для редактирования значений в ячейках, но это возможно реализовать при помощи специальной процедуры Преимущество этого метода состоит в том, что Вы можете приспособить обработку данного события так как Вы хотите. Принцип метода состоит в том, что редактирование происходит не в ячейке элемента MSFlexGrid, а в стандартном элементе управления TextBox, который позиционируется точно над этой ячейкой.
В данном примере, мы хотим показать юзеру два метода решения задачи редактирования значений в ячейке, первый, по двойному клику по ячейке, второй, просто печатая значение в ячейку. Следующие две прогаммы осуществляют это.:

Private Sub MSFlexGrid1_DblClick()
GridEdit Asc(' ')
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
GridEdit KeyAscii
End Sub

В каждом случае мы вызываем подпрограмму редактирования ячеек сетки и передаем в ей значения нажатых клавиш. В случае двойного нажатия, мы передаем знак пробел как флаг. Подпрограмма GridEdit инициализирует окно редактирования и перемещает его в необходимую позицию:

Sub GridEdit(KeyAscii As Integer)
'использовать текущий шрифт
Text1.FontName = MSFlexGrid1.FontName
Text1.FontSize = MSFlexGrid1.FontSize
Select Case KeyAscii
Case 0 To Asc(' ')
Text1 = MSFlexGrid1
Text1.SelStart = 1000
Case Else
Text1 = Chr(KeyAscii)
Text1.SelStart = 1
End Select

'позиционирование окна редактирования
Text1.Left = MSFlexGrid1.CellLeft + MSFlexGrid1.Left
Text1.Top = MSFlexGrid1.CellTop + MSFlexGrid1.Top
Text1.Width = MSFlexGrid1.CellWidth
Text1.Height = MSFlexGrid1.CellHeight
Text1.Visible = True
Text1.SetFocus
End Sub
В целях демонстрации, инструкция Case в процедуре GridEdit иллюстрирует два различных случая при переходе в режим редактирования. Практически Вы используете только один из них, или другой созданный Вами. Если режим редактирования вызван двойным щелчком, или нажатием клавиши CTRL, мы копируем содержимое ячейки в поле вывода и помещаем курсор в конец строки. Если режим редактирования вызван, нажатием любой другой клавиши, мы игнорируем первоначальное содержание ячейки и вставляем нажатую клавишу(код или символ) в окно редактирования. Позиционирование может быть сделано методом Move. Здесь мы использовали четыре строки так, чтобы это читалось более легко. Обратите внимание, что MSFLEXGRID дает нам всю координатную информацию в удобной форме..
Затем, мы нуждаемся в паре подпрограмм, которые обрабатывают служебные действия, когда пользователь перемещается в другую ячейку или перемещает фокус назад в сетку из другого контрола. Обработка события LeaveCell - также необходима, в данной процедуре Вы могли бы поместить любой код проверки правильности данных или другой
.
Private Sub MSFlexGrid1_LeaveCell()
If Text1.Visible Then
MSFlexGrid1 = Text1
Text1.Visible = False
End If
End Sub

Private Sub MSFlexGrid1_GotFocus()
If Text1.Visible Then
MSFlexGrid1 = Text1
Text1.Visible = False
End If
End Sub

Затем мы размещаем некоторый навигационный код в процедуру обработки события KeyDown окна редактирования для того, чтобы, пользователь мог остановить режим редактирования, нажимая ESC, и двигаться в любую другую строку, нажимая клавиши курсора:

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEscape
Text1.Visible = False
MSFlexGrid1.SetFocus
Case vbKeyReturn
MSFlexGrid1.SetFocus
Case vbKeyDown
M
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2007, 09:20
Привет! Вот еще темы с решениями:

Возможно ли в MSFlexGrid перетаскивать мышой данные из одной ячейки в другую ?
Привет ! Подскажите, пожалуйста, люди, возможно ли в MSFlexGrid перетаскивать...

Как построить график в Excel программно, если данные получены из MSFlexGrid VB6
Всем привет! Я сделал програмку в VB6 для расчёта трансцендентного уравнения....

Сортировка в MSFlexGrid
В Access я создал базу с несколькими полями. Первое поле - ключ. Сортировка...

Сортировка в MSFlexGrid
Сортировка MSFlexGrid.Sort по колонке, в которой содержатся данные типа Date...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru