(Delphi) Jak wykonać akcję w memo po wciśnięciu entera , oraz jak wstawić nową linię używając entera i shifta?

Z Podręcznik Administratora by OPZ SGU
Wersja z dnia 01:54, 31 gru 2009 autorstwa 192.168.0.1 (dyskusja) (Utworzył nową stronę „Często zdarza się (np w komunikatorach) że po wciśnięciu entera automatycznie wysyłamy wiadomość. Operacja ta jest bardzo prosta i przyjemna zwłaszcza w delp…”)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Często zdarza się (np w komunikatorach) że po wciśnięciu entera automatycznie wysyłamy wiadomość.


Operacja ta jest bardzo prosta i przyjemna zwłaszcza w delphi, ale co w sytuacji kiedy użytkownik chce wstawić nową linię ?


A tutaj, potrzebujemy skorzystać z podstępu i zdefiniować ogólnie przyjęty (również i w Pidginie) wyjątek z shiftem.

Mianowicie wciskając shift + enter, dostajemy nową linię, natomiast sam enter wysyła wiadomość.

<source lang="delphi"> procedure TForm1.input_rozmowyKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin if (Shift =[ssShift]) AND ( Key = 13) then begin input_rozmowy.text:=input_rozmowy.text+sLineBreak; input_rozmowy.selstart:=(input_rozmowy.GetTextLen); end else if Key = 13 then button2.click; end; </source>

  • input_rozmowy - nazwa memo
  • button2.click - nasza procedura która ma być wykonana gdy użytkownik wciśnie enter
  • input_rozmowy.text:=input_rozmowy.text+sLineBreak; - dodaje na końcu enter
  • input_rozmowy.selstart:=(input_rozmowy.GetTextLen); - przewija na koniec memo