(Delphi) Jak wykonać akcję w memo po wciśnięciu entera , oraz jak wstawić nową linię używając entera i shifta?: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
(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…”) |
m (Zastępowanie tekstu - "<source lang="delphi">" na "<pre>") |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 9: | Linia 9: | ||
Mianowicie wciskając shift + enter, dostajemy nową linię, natomiast sam enter wysyła wiadomość. | Mianowicie wciskając shift + enter, dostajemy nową linię, natomiast sam enter wysyła wiadomość. | ||
< | <pre> | ||
procedure TForm1.input_rozmowyKeyDown(Sender: TObject; var Key: Word; | procedure TForm1.input_rozmowyKeyDown(Sender: TObject; var Key: Word; | ||
Shift: TShiftState); | Shift: TShiftState); | ||
Linia 21: | Linia 21: | ||
if Key = 13 then button2.click; | if Key = 13 then button2.click; | ||
end; | end; | ||
</ | </pre> | ||
*input_rozmowy - nazwa memo | *input_rozmowy - nazwa memo |
Aktualna wersja na dzień 14:28, 18 lut 2018
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ść.
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;
- 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