tshiftstate



Delphi tshiftstate

Автор Оранжевая рубашка задал вопрос в разделе Другие языки и технологии

delphi: как реализовать выполнение Ctrl+A в моем поле Memo? и получил лучший ответ

Ответ от AVP[гуру]
В обработчике OnKeyDown можно написать
if (ssCtrl in Shift)and(key=ord('A')) then memo1.SelectAll;
если нужно, чтобы ctrl+A работало и при других нажатых кнопках, типа shift, alt...
Если нужно, чтобы срабатывало четко на ctrl+A, то
if (Shift=[ssCtrl])and(key=ord('A')) then memo1.SelectAll;

Ответ от Mister Shadow[гуру]
Лучше сделать контекстное меню.

Ответ от Ааз (Azomorph)[гуру]
обработчик OnKeyPress пиши 🙂

Ответ от CHIZZ[гуру]
// Выделить строку при клике на нее
procedure TForm1.Memo1Click(Sender: TObject);
var
Line: Integer;
begin
with (Sender as TMemo) do
begin
Line := Perform(EM_LINEFROMCHAR, SelStart, 0);
SelStart := Perform(EM_LINEINDEX, Line, 0);
SelLength := Length(Lines[Line]);
end;
end;
//Выделить весь текст при нажатии CTRL+A
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = Ord('A')) and (ssCtrl in Shift) then
begin
TMemo(Sender).SelectAll;
Key := 0;
end;
end;
// еще советы по Memo и RichEdit

Ответ от Gennady[гуру]
Доброго времени суток.Если на то пошло, то надо писать обработчик procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);Параметр Shift имеет такой типtype TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);Следовательно, проверяете его на равенство ssCtrl, а Key на код символа 'A'. Если да, вызываете метод TMemo.SelectAll;Удачи!

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: delphi: как реализовать выполнение Ctrl+A в моем поле Memo?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*