Страница: 1 |
Как ограничить ввод пользователя в поля DBGrid? Текстовое поле в базе, к примеру, имеет длину 12, а в DBgrid можно ввести больше. При переходе к следующей записи - ошибка. Как не дать пользователю ввести больше, чем надо?
Не помню точно (VB под рукой нет) , нужно отлавливать событие что-то вроде AfterUpdate или BeforeUpdate... Поэскпериментируй... Спасибо за ответ. Работая в Delphy и применяя DBGrid, у меня пользовательский ввод автоматически ограничивался длиной поля базы (Delphy+Paradox). Я подумал, что во всем множестве свойств VB DBGrid я не заметил какого-либо свойства. А через отслеживание событий можно сделать многое. Это, конечно, лень-матушка писать коды. Когда-то, где-то, что-то подобное писал. На тебе кусок из моей про-ги, половина того что там есть тебе не нужна (рудименты моей про-ги), но принцип поймёшь... 'Это в General Declarations Private Sub DBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As Integer, Cancel As Integer) Страница: 1 |
Вопрос: Ограничить ввод в DBGrid
Добавлено: 06.06.03 14:30
Автор вопроса:
dimazzz
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа: .COM
ICQ: 212158853
Вопросов: 4
Ответов: 79
Профиль | | #1
Добавлено: 06.06.03 15:58
Номер ответа: 2
Автор ответа: dimazzz
Вопросов: 11
Ответов: 3
Профиль | | #2
Добавлено: 06.06.03 17:01
Номер ответа: 3
Автор ответа: Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #3
Добавлено: 07.06.03 09:29
Dim strDBGridCell As String 'значение ячейки (для транзакции)
Private Sub DBGrid1_AfterColEdit(ByVal ColIndex As Integer)
If DBGrid1.Columns(ColIndex) = strDBGridCell Then Exit Sub
'если что, - востанавливаем значение
If MsgBox("Сохранить изменения?", vbQuestion + vbYesNo) = vbNo Then
DBGrid1.Columns(ColIndex) = strDBGridCell
Else 'если Да
Select Case ColIndex
Case 0
If Len(DBGrid1.Columns(ColIndex)) >= 8 Then
MsgBox "В этом поле длинна записи не должна превышать 8 символов.", vbCritical, "Ошибка"
DBGrid1.Columns(ColIndex) = strDBGridCell
Exit Sub
End If
Case 1
If Len(DBGrid1.Columns(ColIndex)) >= 45 Then
MsgBox "В этом поле длинна записи не должна превышать 45 символов.", vbCritical, "Ошибка"
DBGrid1.Columns(ColIndex) = strDBGridCell
Exit Sub
End If
Case 2
If Len(DBGrid1.Columns(ColIndex)) >= 25 Then
MsgBox "В этом поле длинна записи не должна превышать 25 символов.", vbCritical, "Ошибка"
DBGrid1.Columns(ColIndex) = strDBGridCell
Exit Sub
End If
End Select
strDBGridCell = DBGrid1.Columns(ColIndex) 'переменная = новому значению
DBGrid1.Columns(ColIndex) = strDBGridCell 'присваеваем новое значение
End If
End Sub
'запоминаем содержимое
strDBGridCell = DBGrid1.Columns(ColIndex)
End Sub