Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 934

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты! Подскажите мне пожалуйста. У меня имеется форма. На форме компонент Memo. Теперь как можно сделать так чтобы при нажатий клавиши (например клавишу @) вставилось слово "&#0123", а не знак "@". А если нажимать удерживая Shift тогда вставилось "&#0124". Возможно ли такое реализовать как-нибудь. Если есть статий на эту тему дайте ссылку пожалуйста. Заранее большое всем спасибо!!!

Ермаханов Айбек Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ермаханов Айбек (статус: Посетитель)
Вопрос отправлен: 26 марта 2010, 10:10
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 13; последнее сообщение — 30 марта 2010, 18:54; участников в обсуждении: 5.
AlexMPEI

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

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™

min@y™ (статус: Доктор наук), 26 марта 2010, 11:02 [#3]:

Да, можно. Я уже и примерчик написал.
Но хотелось бы узнать, для чего всё это надо?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 26 марта 2010, 11:03 [#4]:

Цитата (AlexMPEI):

нужен тебе перехват сообщений от клавиатуры.

Да нафига? Достаточно событий TMemo.OnKeyDown и TMemo.OnKeyPress.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ермаханов Айбек

Ермаханов Айбек (статус: Посетитель), 26 марта 2010, 11:52 [#5]:

to min@y: Дело в том что, друг попросил сделать веб страничку. Но в некоторых броузерах казахские шрифты не правильно отображается. И в интернете я нашель коды казахских букв, например:-
это маленкая буква &#1241-ә
это большая буква &#1240-Ә и т.д.
И я вместо букв записываю эти коды. Теперь мне хотелос бы сделать программу которая, сразу вставляеть эти коды в место букв.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 26 марта 2010, 11:52 [#6]:

min@y™: Согласен.
min@y™

min@y™ (статус: Доктор наук), 26 марта 2010, 12:11 [#7]:

Цитата (Ермаханов Айбек):

И я вместо букв записываю эти коды. Теперь мне хотелос бы сделать программу которая, сразу вставляеть эти коды в место букв.

А не проще при сохранении их заменять сразу во всём тексте? А при наборе они будут выглядеть не как коды, а по-человечески.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ермаханов Айбек

Ермаханов Айбек (статус: Посетитель), 26 марта 2010, 12:16 [#8]:

Просто мне хотелось сделать свою маленкую программу(HTML-редактор).
min@y™

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™

min@y™ (статус: Доктор наук), 26 марта 2010, 20:36 [#12]:

Ну таки что? Чо делать будем? Отсылать пример или где? Мне его переписывать придётся, оригинал остался на работе, а я его забыл скопировать...
Имхо, фигня это всё. Замена нужна только при сохранении.
Поддержит меня ктонить или где?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Amidamaru

Amidamaru (статус: 4-ый класс), 30 марта 2010, 18:54 [#13]:

Нигде, но я поддержу :)
А вообще я думаю проще сделать простой конвертер буквы<->коды и потом уже вставлять в html. Если буквы сразу превращать в коды, то если опечатаешься - придется всё с начала переписывать, т.к. не найдешь нужного места в этих кодах.
Или как предлагал Вадим - использовать юникод.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.02 сек.