Domanda

Vorrei impedire copia, taglia e incolla nel mio TEdit . Come posso farlo?

Ho provato a impostare Key = NULL sull'evento KeyDown quando CTRL + V è stato premuto sul controllo, ma non ha funzionato .

È stato utile?

Soluzione

Dovrai impedire che i messaggi WM_CUT , WM_COPY e WM_PASTE vengano inviati al tuo TEdit. Questa risposta descrive come farlo usando solo l'API di Windows. Per il VCL, potrebbe essere sufficiente sottoclassare TEdit e cambiare la sua proprietà DefWndProc o sovrascrivere il suo metodo WndProc .

Altri suggerimenti

Assegnalo a 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;

So che questa è una vecchia domanda, ma aggiungerò quello che ho trovato. Il poster originale aveva quasi la soluzione. Funziona bene se si ignora taglia / copia / incolla nell'evento tasto premuto invece dell'evento tasto giù. vale a dire (c ++ builder)

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
}

Puoi usare alcuni programmi globali che catturano i collegamenti e bloccano C-V C-C C-X quando la finestra TEdit è attiva

Uses Clipbrd;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Clipboard.AsText := '';
end;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top