Показать сообщение отдельно
  #4  
Старый 17.08.2011, 00:41
KristoferRuotsi KristoferRuotsi вне форума
Прохожий
 
Регистрация: 14.05.2011
Сообщения: 36
Репутация: 10
По умолчанию

пробовал, спасибо

в общем варианте получилось так:

Код:
function UpCaseRus(ch:Char):Char;
asm
  CMP   AL,'a'
  JB    @@exit
  CMP   AL,'z'
  JA    @@Rus
  SUB   AL,'a' - 'A'
  RET
@@Rus:
  CMP   AL,'я'
  JA    @@Exit
  CMP   AL,'а'
  JB    @@yo
  SUB   AL,'я' - 'Я'
  RET
@@yo:
  CMP   AL,'?'
  JNE   @@exit
  MOV   AL,'?'
@@exit:
end;

procedure TForm5.sEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key in ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','!','@','#','$','%','^','&','*','(',')','_','-','+','<','>','/','\','|','.',',',' ']) then
  begin
   Key:=#0;
   Application.MessageBox(PChar(' Поменяйте раскладку клавиатуры    '),':|',MB_OK);
  end;
 with Sender as TEdit do
  begin
   if (Text = '') or (Text[SelStart] = ' ') or (SelLength = Length(Text)) then
    begin
     if Key in ['й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю'] then
      begin
       Key:=UpCaseRus(Key);
      end;
    end;
  end;
end;
Ответить с цитированием