Новичок
Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013
Репутация: нет Всего: нет
|
Давно не брал я в руки шашек!!! День, ночь, утро, вечер добрые, много уважаемые форумчане! Не знаю даже как подступится к своему делу. Но давайте попробуем. Столкнулся я лет семь, восемь тому назад с порталом пациента. Программа записи к врачу. В ней при заполнении личных данных, переход курсора ввода с заполненного поля edit на другое, незаполненное поле edit происходил автоматически. Многие годы я не обращал внимание на эту примочку, но признайтесь, удобная штука. Решил в этом году эту примочку применить. Пошарил в Инете. А ничего нет. Ну, думаю, долгими зимними вечерами... Вечера пошли на убыль, а дело так никуда не пошло. Может кто подскажет, а то я и сообщения обрабатывал и контролировал заполнение полей и googl'ил, но ни что не получается. В чем суть вопроса: окно, простое, его дочки класса edit четыре штуки. Что я хотел? Пусть в поля вводится дата, формат ДД MM ГГ. Первое поле число 01, второе поле месяц 01, третье поле год 19. Так вот как только я введу в первое поле, цифру ноль, а за ней единицу, курсор ввода должен автоматически перепрыгнуть на поле два и так далее. Поможем кто можем? Заранее благодарен, Moky. Еще есть код, я пишу на FASMe, который я пытался запустить. В два поля цифры вводятся в третье нет. Код |
format PE GUI 4.0 entry start
include 'win32a.inc'
section '.data' data readable writeable
class db 'FASMWIN32',0 title db 'ОКНО',0 classb db 'BUTTON',0 classe db 'EDIT',0 classs db 'STATIC',0 textb1 db 'Копировать',0 textb2 db 'Очистить',0 textg db 'Рамка',0 texts db 'Текст',0 textc db 'Очистить все',0 errtxt db 'Ошибка',0 hwnd dd ? hwnde dd ? hwnds dd ? hwndc dd ? text rb 100 hEdit1 dd ? hEdit2 dd ? hEdit3 dd ? flag dd ? var2 dd ? var1 dd ? buff1 rb 16 buff2 rb 16 formats db '%02d',0 result db 256 dup (?)
wc WNDCLASS 0,WindowProc,0,0,0,0,0,COLOR_BTNFACE+1,0,class
msg MSG
section '.code' code readable executable
start:
invoke GetModuleHandle,0 mov [wc.hInstance],eax invoke LoadIcon,0,IDI_APPLICATION mov [wc.hIcon],eax invoke LoadCursor,0,IDC_ARROW mov [wc.hCursor],eax invoke RegisterClass,wc cmp eax,0 je error
invoke CreateWindowEx,0,class,title,WS_VISIBLE+ WS_SYSMENU,\ 128,128,256,192,0,0,[wc.hInstance],0 cmp eax,0 je error mov [hwnd],eax msg_loop: invoke GetMessage,msg,0,0,0 cmp eax,0 je end_loop invoke IsDialogMessage,[hwnd],msg cmp eax,0 jne msg_loop invoke TranslateMessage,msg invoke DispatchMessage,msg jmp msg_loop
error: invoke MessageBox,0,errtxt,0,MB_ICONERROR+MB_OK
end_loop: invoke ExitProcess,[msg.wParam]
proc WindowProc hwnd,wmsg,wparam,lparam push ebx esi edi cmp [wmsg],WM_CREATE je .wmcreate cmp [wmsg],WM_COMMAND je .wmcommand cmp [wmsg],WM_DESTROY je .wmdestroy .defwndproc: invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam] jmp .finish
.wmcreate:
invoke CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL,\ 10,25,230,20,[hwnd],1003,[wc.hInstance],NULL mov [hEdit1], eax invoke SetFocus, [hEdit1] invoke SendMessage,[hEdit1],EM_SETLIMITTEXT,2,0
invoke CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL,\ 10,50,230,20,[hwnd],1004,[wc.hInstance],NULL mov [hEdit2], eax invoke SendMessage,[hEdit2],EM_SETLIMITTEXT,2,0
invoke CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP,\ 10,75,230,20,[hwnd],1005,[wc.hInstance],NULL mov [hEdit3],eax invoke SendMessage,[hEdit3],EM_SETLIMITTEXT,2,0 jmp .finish
.wmcommand: xor eax, eax invoke GetDlgItemText, [hwnd], 1003, buff1, 16 mov [var1], eax cmp eax, 2 jne .finish invoke SetFocus, [hEdit2]
jmp .finish xor eax, eax invoke GetDlgItemText, [hwnd], 1004, buff2, 16 mov [var2], eax cmp eax, 2 jne .finish invoke SetFocus, [hEdit3]
jmp .finish .wmdestroy:
invoke PostQuitMessage,0 mov eax,0 .finish: pop edi esi ebx ret endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL'
include 'api\kernel32.inc' include 'api\user32.inc'
|
|