Вылетает VB при KeyPress на гриде от ComponentOne

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Вылетает VB при KeyPress на гриде от ComponentOne

Сообщение shady » 17.11.2006 (Пт) 8:32

Подскажите пожалуйста, есть 2 абсолютно одинаковых кода, различие лишь в событиях.
Первый - DblClick, второй - KeyPress

Код: Выделить всё
Private Sub dgSelContract_DblClick()
    Select Case globIDS
        Case 1
            frmCreateNew.dcContract(0).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(0).BoundText = rstFindCustCont("ID").Value
            frmCreateNew.dcContract(1).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(1).BoundText = rstFindCustCont("ID").Value
        Case 2
            frmCreateNew.dcContract(1).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(1).BoundText = rstFindCustCont("ID").Value
    End Select
    rstFindCustCont.Close
Set rstFindCustCont = Nothing
Unload Me
End Sub


Код: Выделить всё
Private Sub dgSelContract_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    Select Case globIDS
        Case 1
            frmCreateNew.dcContract(0).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(0).BoundText = rstFindCustCont("ID").Value
            frmCreateNew.dcContract(1).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(1).BoundText = rstFindCustCont("ID").Value
        Case 2
            frmCreateNew.dcContract(1).Text = rstFindCustCont("IDContr").Value
            frmCreateNew.dcContract(1).BoundText = rstFindCustCont("ID").Value
    End Select
        rstFindCustCont.Close
    Set rstFindCustCont = Nothing
       
        Unload Me
    End If
End Sub


Вопрос. При даблклике отрабатывает нормально, а при кейпресс (по нажатию Enter) просто вылетает. Почему такое промсходит? м.б. баг компонента, который я использую, или я что-то не правильно сделал?

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.11.2006 (Пт) 9:48

Поставь обработку ошибок! Пусть VB сам подскажет.

On error goto Err
..............
err:
MsgBox err.Description

Или в опциях проекта - Stop on all errors.
IMHO:
Обработка ошибок - дело муторное, порой занимает чуть ли не половину времени создания проекта, но.. овчинка выделки стоит! Можешь не проверять, просто поверь :) !
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 17.11.2006 (Пт) 10:08

SergT писал(а):Поставь, сперва, обработку ошибок! Пусть VB сам подскажет

Ошибки не происходит....
Если поставить брейк на
Код: Выделить всё
Set rstFindCustCont = Nothing
и по F8 пройти до конца, то VB вылетает, без ошибок и сообщений. Я в принципе понимаю где моя ошибка. Но незнаю, пока, как по другому сделать.
Моя ошибка в том что
Код: Выделить всё
Unload Me
End If

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.11.2006 (Пт) 10:38

Да нет, так, в принципе, можно. Правда не везде.
Попробуй форму не выгружать, а скрывать (.Hide). А уже после скрытия выгружать.
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.11.2006 (Пт) 10:46

Попробуй еще сменить событие _KeyPress на _KeyUp или _KeyDown
Только код клавиши там иначе ... Enter - vbKeyReturn
Видимо форма не успела отработать событие нажатия, а ее пытаются выгрузить?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 17.11.2006 (Пт) 11:20

Спасибо, сделал, правда немного иначе.
Видимо гриду не нравилось, что я в его событии делаю Unload формы.


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

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

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

    TopList  
cron