| 
| 
 | Вопрос # 3 934/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты! Подскажите мне пожалуйста. У меня имеется форма. На форме компонент Memo. Теперь как можно сделать так чтобы при нажатий клавиши (например клавишу  @) вставилось слово "{", а не знак "@". А если нажимать удерживая Shift тогда вставилось "|". Возможно ли такое реализовать как-нибудь. Если есть статий на эту тему дайте ссылку пожалуйста. Заранее большое всем спасибо!!! 
|  |   Вопрос задал: Ермаханов Айбек (статус: Посетитель)Вопрос отправлен: 26 марта 2010, 10:10
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 13; последнее сообщение — 30 марта 2010, 18:54; участников в обсуждении: 5. 
|   | AlexMPEI (статус: 1-ый класс), 26 марта 2010, 10:33 [#1]:нужен тебе перехват сообщений от клавиатуры. function LowLevelKeyboardProc(nCode: Integer;
 WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
 
 type
 PKbdDllHookStrukt = ^TKbdDllHookStrukt;
 _KBDLLHOOKSTRUCT = record
 vkCode: DWORD;
 scanCode: DWORD;
 flags: DWORD;
 time: DWORD;
 dwExtraInfo: PDWORD;
 end;
 TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;
 
 begin
 
 if ((PKbdDllHookStrukt(LParam)^.vkCode = "скан код символа @") and (WParam=WM_KEYDOWN)) then
 begin
 Memo1.Lines.Add("что хочешь добавить");
 end;
 end;
 |  
|   | AlexMPEI (статус: 1-ый класс), 26 марта 2010, 10:36 [#2]:и вот это надо тоже добавить: hHook: THandle;
 const
 WH_KEYBOARD_LL = 13;
 
 //регистрация клавиатурного хука
 hHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
 if hHook = 0 then
 RaiseLastOSError;
 
 а в завершении программы надо снять хук:
 //снятие клавиатурного хука
 if not UnhookWindowsHookEx(hHook) then
 RaiseLastOSError;
 |  
|   | min@y™ (статус: Доктор наук), 26 марта 2010, 11:02 [#3]:Да, можно. Я уже и примерчик написал. Но хотелось бы узнать, для чего всё это надо?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 26 марта 2010, 11:03 [#4]: Цитата (AlexMPEI): нужен тебе перехват сообщений от клавиатуры. Да нафига? Достаточно событий TMemo.OnKeyDown и TMemo.OnKeyPress.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ермаханов Айбек (статус: Посетитель), 26 марта 2010, 11:52 [#5]:to min@y: Дело в том что, друг попросил сделать веб страничку. Но в некоторых броузерах казахские шрифты не правильно отображается. И в интернете я нашель коды казахских букв, например:- это маленкая буква ә-ә
 это большая буква  Ә-Ә и т.д.
 И я вместо букв записываю эти коды. Теперь мне хотелос бы сделать программу которая, сразу вставляеть эти коды в место букв.
 |  
|   | AlexMPEI (статус: 1-ый класс), 26 марта 2010, 11:52 [#6]:min@y™: Согласен. |  
|   | min@y™ (статус: Доктор наук), 26 марта 2010, 12:11 [#7]: Цитата (Ермаханов Айбек): И я вместо букв записываю эти коды. Теперь мне хотелос бы сделать программу которая, сразу вставляеть эти коды в место букв.  А не проще при сохранении их заменять сразу во всём тексте? А при наборе они будут выглядеть не как коды, а по-человечески.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ермаханов Айбек (статус: Посетитель), 26 марта 2010, 12:16 [#8]:Просто мне хотелось сделать свою маленкую программу(HTML-редактор). |  
|   | min@y™ (статус: Доктор наук), 26 марта 2010, 12:44 [#9]: Цитата (Ермаханов Айбек): Просто мне хотелось сделать свою маленкую программу(HTML-редактор).  Я всё понимаю. Но ответь на мой наводящий вопрос, пожалуйста. Пример автозамены вимволов я тебе написал, но думаю лучше будет сделать замену символов именно при сохранении файла.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ермаханов Айбек (статус: Посетитель), 26 марта 2010, 16:20 [#10]:to Min@y: И так можно,но просто я подумал что легче сразу заменит? А если сделать замену при сохранений тогда нужно же сначала найти казахские буквы, а потом заменять.Я еще не оченьв делфи и  мне кажется это очень трудновато. |  
|   | Вадим К (статус: Академик), 26 марта 2010, 16:25 [#11]:замену надо делать только тогда, когда делается "экспорт". Хотя можно просто правильно указать кодировку в заголовке страницы, например юникод и проблем не должно быть. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 26 марта 2010, 20:36 [#12]:Ну таки что? Чо делать будем? Отсылать пример или где? Мне его переписывать придётся, оригинал остался на работе, а я его забыл скопировать... Имхо, фигня это всё. Замена нужна только при сохранении.
 Поддержит меня ктонить или где?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Amidamaru (статус: 4-ый класс), 30 марта 2010, 18:54 [#13]:Нигде, но я поддержу  А вообще я думаю проще сделать простой конвертер буквы<->коды и потом уже вставлять в html. Если буквы сразу превращать в коды, то если опечатаешься - придется всё с начала переписывать, т.к. не найдешь нужного места в этих кодах.
 Или как предлагал Вадим - использовать юникод.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |