Проблема с VB6 SendKeys

Я пытаюсь создать кнопку для ввода значения «0» в текстовое поле.

Private Sub cmd0_Click()
    PvCurPaidAmt.SetFocus
    PvCurPaidAmt.SelStart = Len(PvCurPaidAmt) + 1
    PvCurPaidAmt.SelText = "0"
End Sub

Теперь проблема в том, что мне нужно изменить текстовое поле на текстовое поле pvcurenccy, предоставленное сторонним API, которое не поддерживает функции SelStart и SelText, поэтому я не могу использовать приведенный выше код.

Я пытаюсь использовать SendKeys:

Private Sub cmd0_Click()
   PvCurPaidAmt.SetFocus
   SendKeys "0"
End Sub

Теперь проблема в том, что он не продолжается со следующим курсором. Я пытаюсь сделать то, что делает экранная клавиатура. Пожалуйста помоги. Спасибо.


person kelvinfix    schedule 21.06.2011    source источник
comment
Что вы подразумеваете под: он не продолжается со следующего курсора? Вы имеете в виду, что 0 не печатается? или это набрано, но вы посланы не в фокусе? Пожалуйста, добавьте больше деталей   -  person Ahmad    schedule 21.06.2011


Ответы (1)


Если я вас правильно понял, при установке фокуса на элемент управления PvCurPaidAmt вы не можете быть уверены, что курсор будет в конце строки (или что вся строка не выбрана или не выделена с самого начала).

Если элемент управления PvCurPaidAmt имеет свойство .Text, вы можете сделать следующее:

PvCurPaidAmt.Text = PvCurPaidAmt.Text & "0"

Если нет, сначала SendKeys отправит курсор в конец:

SendKeys "{END}", True  ' it will force the app to wait till the keys are processed

потом

SendKeys "0"
person AngryHacker    schedule 21.06.2011