GARANTIR DESCONTO

Fórum Impedir Ctrl C #318567

07/04/2006

0

Eu já tentei o seguinte para impedir que algo seja copiado do form
No OnKeyDown do form coloquei
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
1) Key := 0
2) KeyBoard.AsText := ´´
3) SetKeyBoard(NovoKeyBoard) dando valor ao novokeyboard
e nenhum deles funcionou, alguém sabe como impedir que o usuário copie algo do form?


Edilcimar

Edilcimar

Responder

Posts

07/04/2006

Paullsoftware

tenta mudar
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
para
if (Shift = [ssCtrl]) and (Key = Ord(´C´)) then 



Responder

Gostei + 0

07/04/2006

Edilcimar

Paulo, continuou sem funcionar


Responder

Gostei + 0

07/04/2006

Paullsoftware

então tente assim:

Uses ClipBord


procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = Ord(´C´)) then
 begin
 Clipboard.Clear;
 end;
end;


dessa forma sempre que alguém precionar essa combinação dentro do seu texto, vai limpar a area de transferencia :wink:


Responder

Gostei + 0

07/04/2006

Edilcimar

Apesar de haver esquecido de escrever, o Clear eu também tentei e não funcionou!


Responder

Gostei + 0

07/04/2006

Paullsoftware

isso é estranho aqui funcionu normal...

vamos fazer um teste, inicie uma nova aplicação coloque nela um Edit, mude a propriedade do KeyPreview do form para TRUE e coloque esse codigo:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; 
  Shift: TShiftState); 
begin 
if (Shift = [ssCtrl]) and (Key = Ord(´C´)) Or (Shift = [ssCtrl]) and (Key = Ord(´V´)) then 
 begin 
// ClipBoard.AsText := ´´;
 Clipboard.Clear; 
 end; 
end;


seleione o texto do Edit e tente copiar pra ver... aqui tá funcionando normal :?


Responder

Gostei + 0

07/04/2006

Edilcimar

Eu já tinha feito isto e não funciona, se eu colocar
f (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
showmessagew(´funciona´)
a mensagem aparece, porém em nenhum dos casos eu consigo evitar que o texto seja copiado para o clipboard ou apagar/trocar o conteúdo do mesmo, teste usando o Notepad e vai ver que consegue copiar o texto para o mesmo


Responder

Gostei + 0

07/04/2006

Paullsoftware

Eu já tinha feito isto e não funciona, se eu colocar f (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then showmessagew(´funciona´) a mensagem aparece, porém em nenhum dos casos eu consigo evitar que o texto seja copiado para o clipboard ou apagar/trocar o conteúdo do mesmo, teste usando o Notepad e vai ver que consegue copiar o texto para o mesmo


vc fez o teste que pedi pra fazer copiando e colando meu código em uma nova aplicação??
aqui uso Delphi 7 e funciona perfeitamente...


Responder

Gostei + 0

07/04/2006

Edilcimar

eu uso D7, e fiz o teste com o Notepad, conforme informei, e continua copiando do form para o Notepad


Responder

Gostei + 0

07/04/2006

Marco Salles

a uses correta e esta [b:1dc97c4058]Clipbrd[/b:1dc97c4058]

penso que ao inves de evitar que copiem , posso pensar em permitem que colem o vazio

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Clipboard.AsText:=´´;
end;



Responder

Gostei + 0

07/04/2006

Edilcimar

Oi Marcos, grato, mas tudo que é combinação possível do que está abaixo eu já tentei e não funciona, para mim tanto faz não permitir que copiem quanto deixar copiar em branco ou um texto diferente
procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var
Copia : TClipBoard;
begin
Copia := ClipBoard;
Copia.AsText := ´´;
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
// If (Shift = [ssCtrl]) and (Chr(Key) in [´C´, ´c´]) then
Begin
// showmessage(´funciona´); // esta é a única linha que funciona, nenhuma das outras surtem efeito
// key := 0;
// SetClipBoard(Copia);
// ClipBoard.AsText := ´´;
//ClipBoard.Clear;
End;
end;


Responder

Gostei + 0

07/04/2006

Marco Salles

amigo edicilmar , mas o codigo abaixo funciona

a uses correta e esta[b:7ba6184178] Clipbrd [/b:7ba6184178] penso que ao inves de evitar que copiem , posso pensar em permitem que colem o vazio Código: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin Clipboard.AsText:=´´; end;



[b:7ba6184178]voce esta colocando KeyPreviewn do form para true[/b:7ba6184178] ????


Responder

Gostei + 0

07/04/2006

Edilcimar

Sim o keypreview está true, inclusive se não estivesse o showmessage não funcionaria! A única diferença é que estou fazendo no onkeydown e vc fez no onkeypress, vou tentar no mesmo


Responder

Gostei + 0

07/04/2006

Edilcimar

também não funcionou no onkeypress


Responder

Gostei + 0

07/04/2006

Marco Salles

as ´coisas´ acontecem depos do evento onkeydown


Responder

Gostei + 0

07/04/2006

Edilcimar

Valeu Marcos, troquei o efeito para o onKeyUp e funcionou!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar