-
when use UNICODE_CTRLS, editbox 's option eoNumber, osReadOnly work very strange!!! eoNumber can still input abc, osReadOnly can still input abc
-
Try using PAS_ONLY
-
using PAS_ONLY is same :(
-
Confirmed. I will check it out.
-
thanks a lot
-
Where Master - Vladimir Kladov?
-
May be dead...? Тьфу... Тьфу... Тьфу...
-
Проблема в том, что для NewEditbox при включенном UNICODE_CTRLS подключается процедура WndProcUnicodeChars. Цель ее - правильно вводить символы unicode, о контроле самого ввода в тот момент никто и не думал. Самый простой способ (на данный момент и вообще - см. ниже) поставить свой обработчик OnKeyChar и глушить все нежелательные символы, заменяя из на #0 (или все глушить).
Судя по тому, что проблема всплыла только сейчас, никого она сильно и не колыхала, то есть - если соблюдать чистый идеологический принцип "никакого лишнего кода", - такое решение будет в разы лучше, чем поправить процедуру WndProcUnicodeChars (хотя бы даже правка была и из двух строк). Кроме того, до win7 в любом случае eoNumber например - это очень грязное решение, т.к. можно было вставить не цифры через буфер обмена или программно, и все равно правильнее было контролировать ввод через OnKeyChar.
Для случая readonly еще корректнее никогда не использовать этот стиль и не вводить юзера в заблуждение. Эдит, в который нельзя вводить, должен выглядеть как задизэйбленный, и соответственно, быть not Enabled. Любые оговорки, типа "плохо видно" в задизейбленном режиме - не принимаются, надо настраивать темы так, чтобы было видно.
-
Sorry. En English. Problem is in procedure WndProcUnicodeChars which is attached to Editbox in UNICODE_CTRLS mode. It is providing correct input of unicode characters (fixing MS) but it is not filtering the input for case when it is restricted by ES_NUMER or ES_READONLY styles, so all characters are accepted. This was may be a bug but anyway it is better to avoid using esNumber and esReadOnly styles but to add an event OnKeyChar and filter undesired characters there (changing it to #0).
If edit control has ES_NUMBERS style it is therefore allows (in XP and earlier) to input any chars via clipboard.
If edit control has ES_READONLY style it is looking as enabled but it is does not enable enter chars and this is bad behavior for users. Just disable it and this is much better.
-
I checked WndProcUnicodeChars, you are right, i change code in OnKeyChar
|