Impedir Ctrl C
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?
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
Curtidas 0
Respostas
Paullsoftware
07/04/2006
tenta mudar
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
paraif (Shift = [ssCtrl]) and (Key = Ord(´C´)) then
GOSTEI 0
Edilcimar
07/04/2006
Paulo, continuou sem funcionar
GOSTEI 0
Paullsoftware
07/04/2006
então tente assim:
dessa forma sempre que alguém precionar essa combinação dentro do seu texto, vai limpar a area de transferencia :wink:
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:
GOSTEI 0
Edilcimar
07/04/2006
Apesar de haver esquecido de escrever, o Clear eu também tentei e não funcionou!
GOSTEI 0
Paullsoftware
07/04/2006
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:
seleione o texto do Edit e tente copiar pra ver... aqui tá funcionando 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 :?
GOSTEI 0
Edilcimar
07/04/2006
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
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
GOSTEI 0
Paullsoftware
07/04/2006
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...
GOSTEI 0
Edilcimar
07/04/2006
eu uso D7, e fiz o teste com o Notepad, conforme informei, e continua copiando do form para o Notepad
GOSTEI 0
Marco Salles
07/04/2006
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
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;
GOSTEI 0
Edilcimar
07/04/2006
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;
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;
GOSTEI 0
Marco Salles
07/04/2006
amigo edicilmar , mas o codigo abaixo funciona
[b:7ba6184178]voce esta colocando KeyPreviewn do form para true[/b:7ba6184178] ????
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] ????
GOSTEI 0
Edilcimar
07/04/2006
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
GOSTEI 0
Edilcimar
07/04/2006
também não funcionou no onkeypress
GOSTEI 0
Marco Salles
07/04/2006
as ´coisas´ acontecem depos do evento onkeydown
GOSTEI 0
Edilcimar
07/04/2006
Valeu Marcos, troquei o efeito para o onKeyUp e funcionou!
GOSTEI 0
Marco Salles
07/04/2006
sobre aquela opção do praticular , testei aqui e funcionou
pode ate armazenar o texo , antes numa string e retornao o valor no surgimento do form (OnActive)
procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject); begin Clipboard.AsText:=´´; end;
pode ate armazenar o texo , antes numa string e retornao o valor no surgimento do form (OnActive)
GOSTEI 0
Edilcimar
07/04/2006
Ok, mas se pegar
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
ClipBoard.Clear;
no onKeyUp, também funciona
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
ClipBoard.Clear;
no onKeyUp, também funciona
GOSTEI 0
Paullsoftware
07/04/2006
Ok, mas se pegar
If (ssCtrl in Shift) and (Chr(Key) in [´C´, ´c´]) then
ClipBoard.Clear;
no onKeyUp, também funciona
:shock: :shock: :shock: desculpa, mais o que foi que eu te falei aqui:
[quote:539cea7a45]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:
Código:
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
[/quote:539cea7a45] :lol: :lol: :lol:valeu marcos pela correção!
[quote:539cea7a45=´Marcos Salles´]
a uses correta e esta Clipbrd
penso que ao inves de evitar que copiem , posso pensar em permitem que colem o vazio
[/quote:539cea7a45] :roll:GOSTEI 0
Edilcimar
07/04/2006
Desculpe paul, mas é que eu não prestei atenção que vc tinha trocado de KEYDOWN para KEYUP
GOSTEI 0
Paullsoftware
07/04/2006
Desculpe paul, mas é que eu não prestei atenção que vc tinha trocado de KEYDOWN para KEYUP
não esquenta! :wink:
GOSTEI 0