Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Ctrl + Enter и Memo   Найти похожие ветки 

 
azl ©   (2007-01-17 18:41) [0]

Здравствуйте, глубокоуважаемые мастера!

Подскажите, пожалуйста, следующее. Пытаюсь сделать, чтобы при нажатии клавиш Ctrl + Enter, когда курсор находится в Memo, выполнялась процедура Button1Click (подобно ICQ).

Пишу вот так:

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (ssCtrl in Shift) and (Key = VK_Return) then
    Button1.OnClick(Self);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(Memo1.Text);
end;


Все хорошо, только смущает то, что курсор смещается вниз, как если бы просто была нажата клавиша Enter. А мне нужно, чтобы курсор оставался на месте.

Пример:
___________________________
Этот текст надо отправить<|>

___________________________

После нажатия Ctrl + Enter
___________________________
Этот текст надо отправить
<|>
___________________________

Почему так происходит? Как это исправить?


 
Плохиш ©   (2007-01-17 18:45) [1]

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = VK_Return) then
begin
   Button1.OnClick(Self);
   Key := 0;
end;
end;


 
azl ©   (2007-01-17 19:04) [2]

Плохиш, тот же эффект. (((


 
Calibr ©   (2007-01-17 20:25) [3]


> azl ©   (17.01.07 18:41)
>


procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Key = VK_Return) then
  begin
    Button1.OnClick(Self);
    Memo1.SetFocus;
    keybd_event(8, 0, 0, 0);
    keybd_event(8, 0, KEYEVENTF_KEYUP, 0);
  end;
end;


 
azl ©   (2007-01-17 23:06) [4]

Calibr, к сожалению опять не все слава богу. Вот что получается после нажатия Ctrl + Enter.
__________
Test

__________
Мало того, что курсор переходит на следующую строку, так еще и квадратик добавляется.


 
TRUNK ©   (2007-01-17 23:20) [5]

Привожу код, который я использовал в одной из своих программ:

в дизайнере: MainForm.KeyPreview := true;

в коде:


var
 FCtrl: Boolean;

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = 17) then
 FCtrl := true;
if (Key = 13)and FCtrl  then
 Button1.OnClick(Self);
end;

procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = 17) then
 FCtrl := false;
end;

procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if FCtrl and((Key = #10)or(Key = #13)) then
 Key := #0;
end;


 
Johnmen   (2007-01-17 23:38) [6]

Достаточно
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = VK_Return) then Button1.Click;
end;

и
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 if Key=#10 then Key:=#0;
end;


 
azl ©   (2007-01-18 00:07) [7]

УрррААААААА!!! Заработало. Всем спасибо.
Johnmen, варивант [6] мне понравился.
А почему так происходит?
Зачем еще событие он KeyPress обрабатывать надо? Просто интересно знать, на будущее.


 
Германн ©   (2007-01-18 00:11) [8]


> Зачем еще событие он KeyPress обрабатывать надо? Просто
> интересно знать, на будущее.

Если событие есть, должен же кто-то его обрабатывать :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.123 c
1-1165581674
Rule
2006-12-08 15:41
2007.02.04
проблеммы контекстного меню в неглавном меню, при небольшой его


1-1165956161
AndreyRu
2006-12-12 23:42
2007.02.04
Сглаживание глифов


15-1168682519
Footballer
2007-01-13 13:01
2007.02.04
Вопрос не по делфи


15-1168854054
kaZaNoVa
2007-01-15 12:40
2007.02.04
Попинайте скрипт))


15-1168552934
vlad-mal
2007-01-12 01:02
2007.02.04
Купил журнал "Вокруг Света"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский