Как отключить копирование / вставку в TEdit - PullRequest
2 голосов
/ 08 мая 2009

Я бы хотел запретить копирование, вырезание и вставку в мои TEdit. Как я могу это сделать?

Я пытался установить событие Key=NULL on KeyDown, когда CTRL + V был нажат на элементе управления, но это не сработало.

Ответы [ 5 ]

5 голосов
/ 08 мая 2009

Вам нужно будет запретить отправку сообщений WM_CUT, WM_COPY и WM_PASTE на ваш TEdit. Этот ответ описывает, как это сделать, используя только Windows API. Для VCL может быть достаточно выделить подкласс TEdit и изменить его свойство DefWndProc или переопределить его метод WndProc.

3 голосов
/ 11 августа 2014

Назначьте это TEdit.OnKeyPress:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key=#22) or (Key=#3) then Key:=#0;   // 22 = [Ctrl+V] / 3 = [Ctrl+C]
end;
2 голосов
/ 29 января 2013

Я знаю, что это старый вопрос, но я добавлю то, что нашел. Оригинальный плакат почти имел решение. Это прекрасно работает, если вы игнорируете вырезание / копирование / вставку в событии нажатия клавиши вместо события нажатия клавиши. т.е. (сборщик c ++)

void __fastcall Form::OnKeyPress(TObject *Sender, System::WideChar &Key)
{
   if( Key==0x03/*ctrl-c*/ || Key==0x16/*ctrl-v*/ || Key==0x018/*ctrl-x*/ )
      Key = 0;  //ignore key press
}
0 голосов
/ 18 января 2017
Uses Clipbrd;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Clipboard.AsText := '';
end;
0 голосов
/ 08 мая 2009

Вы можете использовать некоторые глобальные программы, которые захватывают ярлыки и блокируют C-V C-C C-X, когда окно TEdit активно

...