Андрей260276 писал(а):Подскажите, что не так...
Andrey Fedorov писал(а):Не так - это то что ты пытаешься следовать стилю DOS.
alibek писал(а):Andrey Fedorov писал(а):Не так - это то что ты пытаешься следовать стилю DOS.
Не надо клеветы
Это не стиль DOS, это стиль FoxPro и Clipper.
Nicky писал(а):Нажатия лови на форме (KeyPreview = True), иначе придется в каждом контроле обрабатывать
Konst_One писал(а):гиблое это дело: делать переход между контролами по ENTER, поверь
будет куча у тебя проблем, имхо
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
SendKeys "{TAB}", True
End If
End Sub
S397 писал(а):Не верите, возьмите двух операторов и секундомер и замерьте, что быстрее вводить инфу только используя алфавитно-цифровую клавиатуру и Enter или TAB, а потом спросите у них еще как удобней.
alibek писал(а):Посади рядом с ними третьего оператора, который будет вводить информацию не вручную, а штрих-сканером или обычным сканером, и спроси у него, как удобней.
Nicky писал(а):К примеру, сидит оператор целый день набивает цифры (суммы, номера договоров и т.д.). И вполне логично, что делает он это на цифровой клавиатуре и переходит по Enter'у там же
Какой смысл большую кучу однообразных данных вручную, когда это можно автоматизировать?
Konst_One писал(а):я пишу банковский софт: нет там никакого перехода по ENTER, только по TAB
alibek писал(а):Вот потому матричные принтеры практически нигде, кроме банков, и не используются (я знаю, почему там матричные принтеры используются)
Надо не программы адаптировать к старым методам, надо методы и людей адаптировать к новым технологиям.
Private Sub txtField_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
If txtField(Index).Text = "" Then
KeyCode = 0
SendKeys "{TAB}"
Else
If txtField(Index).SelStart = 0 And txtField(Index).SelLength = Len(txtField(Index).Text) Then
KeyCode = 0
SendKeys "{TAB}"
ElseIf txtField(Index).SelStart = Len(txtField(Index).Text) Then
KeyCode = 0
SendKeys "{TAB}"
Else
txtField(Index).SelStart = 0
txtField(Index).SelLength = Len(txtField(Index).Text)
End If
End If
....
Andrey Fedorov писал(а):В Windows по Enter-у должен осуществляться ввод/сохранение всех полей на форме, а для перехода между полями есть клавиша Tab.
blinow писал(а):Это повидимому Вы и придумали при оплате в Сбербанке писать на бумажонке длиннущие коды вида платежа и старушка матерясь пытается оплатить рублевую госпошлину выписывая 20, 30 цифр какой-то абракадабры и тут-же появились ушлые рябята предлагающие за 10р заполнить бумажонку или же сам банк с невинной рожей предлагает тоже самое. Наверно было проще написать "Госпошлина" и все, а оператор там, сам или программно ставит какие хошь коды.
Про отлавливание на форме, конечно проще, но если форма тяжеленная и завалена разнотипными контролами, гридами и прочей дрянью
Сейчас этот форум просматривают: AhrefsBot и гости: 52