Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.02.2016, 22:30
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию Перехватить и отменить Enter в Мемо

Пишу типа чата. Хочу чтоб сообщения из мемо посылались на Enter
А переход на другую сроку Shift + Enter как вконтакте
Написал так
Код:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssShift in Shift) AND (Key=VK_RETURN) then exit;

  if (Key=VK_RETURN) then
  begin
    Key:=0;
    Button3.Click;
    //Memo1.Clear;
    exit;
  end;
end;
Но не могу победить переход на другую строку в мемо.
Кабы очистить мемо после нажатия Enter. Может подскажете что-нибудь?
Ответить с цитированием
  #2  
Старый 12.02.2016, 05:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Отлавливать нажатие на уровне формы. Выстави у формы KeyPreview = true и в обработчике формы очисти Key.
Ответить с цитированием
  #3  
Старый 13.02.2016, 14:05
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Одна фигня. сообщение показывает а в мемо переходит на другую строчку.

Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key=VK_F5) then showmessage('');// Button8.Click;
  if (Key=VK_RETURN) then
  begin
    showmessage('');
    Key:=0;
    //Button3.Click;

  end;
  if (ssShift in Shift) AND (Key=VK_RETURN) then exit;
end;
Ответить с цитированием
  #4  
Старый 13.02.2016, 19:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Все нормально работает:
Код:
Form1.KeyPreview := True;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13
    Then
      Begin
        Label1.Caption := 'ENTER PRESSED!!!';
        Key := #0;
      End
    Else
      Label1.Caption := 'Not ENTER';
end;
Ответить с цитированием
  #5  
Старый 13.02.2016, 21:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Кстати мемо не очень для этого подходит, т.к. не поддерживает форматирование - используйте RichEdit, только почитайте сначала про формат rtf, тогда сможете и смайлики туда внедрить без проблем.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 14.02.2016, 08:38
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Да спасибо. Заменил. Еще странно не могу скроллинг сделать колесиком мыши для Scrollbar.
Memo, а теперь RichEdit жадно забирает фокус. На FormShow я делаю RichEdit.SetFocus - Колесико работает. A как я помещаю на Memo/RichEdit - всё, конец вечеринки.

Imikle, не понятно а Shift + Enter как же сделать теперь?

Последний раз редактировалось aqula, 14.02.2016 в 08:52.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter