|
Вопрос # 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. Если буквы сразу превращать в коды, то если опечатаешься - придется всё с начала переписывать, т.к. не найдешь нужного места в этих кодах.
Или как предлагал Вадим - использовать юникод.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|