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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 13:51   #1
AIst
Пользователь
 
Аватар для AIst
 
Регистрация: 30.06.2008
Сообщений: 58
По умолчанию Событие Memo1KeyPress

Нужно чтобы при нажатии Ctrl+Enter данные из мемо1 записывались в мемо2.
Я написал так :
Код:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
var i: integer;
begin
if key = #0213 then
begin
for i := 0 to memo1.Lines.Count - 1 do
memo2.lines.add('->' + memo1.Lines[i]);
memo1.Lines.Clear;
end;
происходит просто перенос на следующую строчку. как сделать правильно чтобы при нажатии Ctrl+Enter данные из мемо1 записывались в мемо2?

Цитата:
Информацию о скан кодах нашел в интернете:

"Скан-код" - это целое 16битное шестнадцетиричное значение
Младший байт (2 правых знака): собственно скан-код клавиши
Старший байт описывает состояние шифт-клавишей и трактуется
побитно следующим образом:
7 6 5 4 3 2 1 0 Все биты = 0: "чистое" нажатие, т.е.
0 0 0 0 0 0 0 0 Shift/Ctrl/Alt/Win/Capslock не нажаты
| | | ^---- Комбинация Shift+CapsLock = 1
| | ^------ Нажат Ctrl
| ^-------- Нажат Alt
^---------- Нажат Win

...

Примеры скан-кодов для различных состояний триггеров при
нажатии клавиши "A":
Сканкод Описание
0041 Код простого нажатия клавиши "A"
0141 Код нажатия Shift+A
0241 Код нажатия Ctrl+A
0441 Код нажатия Alt+A
0841 Код нажатия Win+A
0341 Код нажатия Ctrl+Shift+A
0741 Код нажатия Ctrl+Alt+Shift+A

Скан код Enter = 13

значит Ctrl+Enter = #0213
AIst вне форума Ответить с цитированием
Старый 19.05.2009, 14:23   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Используйте событие OnKeyDown
Код:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Key = 13) then .....
_Dmitry вне форума Ответить с цитированием
Старый 19.05.2009, 14:42   #3
AIst
Пользователь
 
Аватар для AIst
 
Регистрация: 30.06.2008
Сообщений: 58
По умолчанию

во.. срост. спасиб. терь работает. но в мемо1 происходит переход на след строку(как при нажатии на enter).
можно сделать так чтобы не было этого перехода?
AIst вне форума Ответить с цитированием
Старый 19.05.2009, 15:06   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот так попробуйте:
Код:
 if (ssCtrl in Shift) and (Key = 13) then
 begin
  Memo2.Lines := Memo1.Lines;
  Memo1.WordWrap := false;
  Memo1.Lines.Clear;
  Memo1.WordWrap := true; //Если вам нужен перенос слов
 end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 19.05.2009, 15:09   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Немного поправлю и все вроде бы работает ...
Код:
Memo1.WordWrap := false;
Правда только в данном случае ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 19.05.2009, 15:13   #6
AIst
Пользователь
 
Аватар для AIst
 
Регистрация: 30.06.2008
Сообщений: 58
По умолчанию

теперь все. спасибо всем =)
AIst вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие в JavaScript Ruska882009 Помощь студентам 1 25.03.2009 12:44
Событие vitamin.rulez Помощь студентам 7 10.02.2009 11:46
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие maha Общие вопросы Delphi 6 18.06.2008 18:53
событие BeforePost azat БД в Delphi 2 17.12.2007 15:34