Как вернуть символ на русском языке Chr(KeyCode)...?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Nataliak
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 10.03.2004 (Ср) 0:10

Как вернуть символ на русском языке Chr(KeyCode)...?

Сообщение Nataliak » 31.03.2004 (Ср) 14:16

Задача проста - быстрый поиск. Пользователь смотрит форму и начинает набирать русскую фамилию с клавиатуры. По первому нажатию буквы должно появитсья окно, эта нажатая буква должна подставиться в поле и еще курсор должен перейти в конец строки.

Вот мой кусочек кода
...
ElseIf ((KeyCode >= 65 And KeyCode <= 90) Or KeyCode = 186 Or KeyCode = 188 Or KeyCode = 190 _
Or KeyCode = 219 Or KeyCode = 221 Or KeyCode = 222) And Shift = 0 Then
Search_FAM.FAM.Text = Chr(KeyCode)
Search_FAM.Show 1
...

появляется диалоговое окно, но даже при русской включеной ракладке клавиатуры все равно подставляется английский символ.
:cry: И научите ставить курсор в конец поля :oops:

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

Сообщение alibek » 31.03.2004 (Ср) 14:40

Используй не KeyDown, а KeyAscii, тогда будешь получать сразу нужный символ.

Search_FAM.FAM.SelStart = Len(Search_FAM.FAM.Text)
Search_FAM.FAM.SelLength = 0
Search_FAM.FAM.SetText = Chr$(KeyAscii)


Только сдается мне, что решение выбрано неудачное. Нельзя ли код в студию?
Lasciate ogni speranza, voi ch'entrate.

Nataliak
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 10.03.2004 (Ср) 0:10

Сообщение Nataliak » 31.03.2004 (Ср) 15:24

вот, что получилось в итоге
пользователь работает только с клавиатурой (мышь не признает категорически), поэтому на все кнопки кроме "буквенных" повешены действия и их нужно аккуратно обходить в этом коде

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii <= 48 Or KeyAscii >= 57 Then
If KeyAscii <> 45 And KeyAscii <> 61 And KeyAscii <> 8 And KeyAscii <> 92 And KeyAscii <> 27 And KeyAscii <> 32 And KeyAscii <> 13 Then
Library.rezim = ""
Library.search_rezim = "visit"
Search_FAM.FAM.SelStart = Len(Search_FAM.FAM.Text)
Search_FAM.FAM.SelLength = 0
Search_FAM.FAM.SelText = Chr$(KeyAscii)
Search_FAM.Show 1
End If
End If
End Sub
Последний раз редактировалось Nataliak 31.03.2004 (Ср) 15:30, всего редактировалось 1 раз.

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

Сообщение alibek » 31.03.2004 (Ср) 15:30

Так поставь у формы KeyPreview=True и "горячие клавиши" обрабатывай так:
Код: Выделить всё
Private Sub Form_KeyDown(...)
If (Shift=0 And KeyCode = ...) Then
  KeyCode = 0
  'DoSomething1
ElseIf (Shift=1 And KeyCode = ...) Then
  KeyCode = 0
  'DoSomething2
ElseIf (Shift=3 And KeyCode = ...) Then
  KeyCode = 0
  'DoSomething3
...
End If
End Sub

А все остальные кнопки обрабатывай в KeyPress.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList