Главная страница
    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.037 c
3-1163412265
Kolan
2006-11-13 13:04
2007.02.04
Что делать с знаком при подстановке запроса?


2-1169040951
InfraRed
2007-01-17 16:35
2007.02.04
Функция RegConnectRegistry


15-1168654961
Tirael
2007-01-13 05:22
2007.02.04
цена прграммы


15-1168891620
DemonP
2007-01-15 23:07
2007.02.04
Инсталляция BDE


1-1165834294
Aleksandr.
2006-12-11 13:51
2007.02.04
Как заставить Excel выровнять высоту ячеек по тексту в них?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский