Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 19:17   #1
rem37
 
Регистрация: 14.04.2009
Сообщений: 8
По умолчанию как стереть символ перед курсором?

Простая програмка для теста

Код:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key='a' then
   begin
     keybd_event(VK_BACK, 0, 0, 0);
     keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0);
   end;
end;
Я ожидал, что при нажатии "a", будет стирать символ перед курсором, но стирает только саму букву "a". Видимо keybd_event срабатывает только после выхода из Memo1KeyPress. Как сделать так, чтобы стирался символ перед курсором и появлялься символ "a"?
rem37 вне форума Ответить с цитированием
Старый 29.04.2009, 19:23   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поставь в обработчик OnKeyDown
а OnKeyPress вообще-то и возникает после того как напечатается буква(точнее не совсем, в нем можно изменить символ что вылезет)

или еще вариант это переводить курсор на символ назад потом стирать, потом обратно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.04.2009, 23:07   #3
rem37
 
Регистрация: 14.04.2009
Сообщений: 8
По умолчанию

OnKeyDown не очень подходит. Дело в том, что мне надо менять символы...
rem37 вне форума Ответить с цитированием
Старый 29.04.2009, 23:17   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
Procedure TForm1.Memo1KeyUp(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Begin
If Key=65 Then
Begin
keybd_event(VK_LEFT, 0, 0, 0);
keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_BACK, 0, 0, 0);
keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_RIGHT, 0, 0, 0);
keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
End;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 30.04.2009, 00:54   #5
rem37
 
Регистрация: 14.04.2009
Сообщений: 8
По умолчанию

Спасибо. Работает и с OnKeyPress.
rem37 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильней сгрупировать(sum) строки перед записью в БД? Mugger БД в Delphi 10 14.02.2009 06:45
хочу стереть линию с канвы.КАК? harmager Общие вопросы Delphi 1 24.11.2008 10:28
Программа сама управляет курсором. Как её сделать? Alinghor Свободное общение 3 04.07.2008 16:06
Как поставить заставку перед запуском главной формы программы? NiganInterCOM Общие вопросы Delphi 2 22.02.2008 16:11
Как сделать регистрацию и авторизацию пользователей перед входом в программу, БД. zorro БД в Delphi 18 28.08.2007 11:04