Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять - DeсimalSeparator???


Страницы:   1 2

SKing ©   (2002-03-26 13:42:00) 

Мастера помогите - пожалуйста...
Как заставить кнопку "." на доп. клавиатуре выдавать DeсimalSeparator во всех формах приложения при любой языковой раскладке?
Только не надо советовать для каждого контрола в отдельности.


Юрий Зотов   (2002-03-27 15:46:00) [21]

> Alx2
> Fay

Читаем вопрос. Там сказано: "... во всех формах приложения...".

Предположим, в проекте 100 форм. Вы предлагаете править все 100 вручную?


Fay   (2002-03-27 12:37:00) [22]

2Alx2
Угу


Alx2   (2002-03-27 12:30:00) [23]

>Fay © (27.03.02 12:16)
Просто если key = DecimalSeparator, то ее не надо переприсваивать снова значению DecimalSeparator.
А запятую туда вставил, потому что с клавиши "." может прийти либо "." либо ","


Fay   (2002-03-27 12:16:00) [24]

2Alx2
А "," зачем ?


Юрий Зотов   (2002-03-27 12:10:00) [25]

Можно. Но я придерживаюсь принципа "надо давать не рыбу, а удочку", поэтому расскажу как я сам это делаю.

Открываем хелп на странице TApplication, щелкаем по линку Events, читаем. В боковом окне щелкаем по линку OnMessage, снова читаем. Потом в основном окне щелкаем по линку Example, смотрим пример. Копируем его к себе в программу и подправляем код под свои нужды. Для этого в том же хелпе смотрим объявление типа TMsg, а в SDK - сообщения WM_KEYDOWN, WM_KEYUP, WM_CHAR и страницу Virtual-Key Codes.

Написанный нами обработчик, конечно, сразу правильно работать не будет и это вполне нормально. Ставим в нем BreakPoint, запускаем программу, нажимаем нужные клавиши, смотрим значения переменных, выясняем, что у нас не так и исправляем. В частности, выясняем, как нужно изменить в сообщении WParam и биты 16-23 в LParam, чтобы "подменить" клавишу.

Вот так я это делаю и (честное слово!) еще ни разу не было, чтобы решение не было найдено. Чего и Вам желаю.


Alx2   (2002-03-27 11:57:00) [26]

if Key in [",",".", DecimalSeparator- зачем?!] then Key := DecimalSeparator


Fay   (2002-03-27 11:55:00) [27]

2Alx2

if Key in [",",".", DecimalSeparator] then Key := DecimalSeparator


Alx2   (2002-03-27 11:30:00) [28]

Пардон, вот так:
if Key in [",","."] Then Key := DecimalSeparator;


Alx2   (2002-03-27 11:29:00) [29]

делаем) Form1.KeyPreview = true
И добавляем метод
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key in [",","."] Then Key := ".";
end;


Reindeer Moss Eater   (2002-03-27 11:10:00) [30]

>SKing
А если все сто форм приложения сделать наследниками одной и обработку делать в ней?


SKing   (2002-03-27 11:05:00) [31]

Вадиму-> Это для одной формы, а если форм в прилож. 100 ?
Юрию Зотову-> Если не трудно, можно поподробней...


Johnmen   (2002-03-26 14:08:00) [32]

Можно хирургически - заменить "," на "." в kbdru.kbd в нужном месте - тогда будет всегда "."

Можно прописать в приложении обработчик <Del> и делать, что надо...


Юрий Зотов   (2002-03-26 14:03:00) [33]

Например, написать обработчик Application.OnMessage, а там проверять, что нажато и подменять код клавиши, если нужно.


Вадим   (2002-03-26 13:59:00) [34]

А если для каждого контрола использовать одну процедуру


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо