Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   TEdit, evitar copiar y pegar (https://www.clubdelphi.com/foros/showthread.php?t=55096)

casacham 08-04-2008 05:34:45

TEdit, evitar copiar y pegar
 
:)Hola señores del foro
Bueno, este hilo lo inicio despues de haber estado buscando en el foro, en sus cinco paginas de 76 resultados algo relacionado a TEdit; y como no encontre mi respuesta inicio el hilo.
Necesito saber si existe alguna manera de evitar que el usuario utilice las funciones de windows de copia/cortar y pegar en un TEdit. Es decir, necesito que el usuario escriba dentro del TEdit, pero si este quiere hacer el camino mas corto que es copiar y pegar (dentro del TEdit), pues el programa no se lo permita. No es presisamente una clave, pues modificando la propiedad PasswordChar ya windows no permite hacer copiado o pegado. Simplemente deseo que el usuario este inhabilitado para pegar cualquier texto copiado en memoria dentro del TEdit. Desde ya agradezco sus respuestas y sugerencias.;)

Delphius 08-04-2008 05:46:19

Hola Casacham,
Tanto tiempo!

¿Seguro que buscaste bien?
Yo he encontrado varios hilos que tratan el tema...Por empezar prueba con lo dicho en estos:
http://www.clubdelphi.com/foros/show...iar+pegar+Edit
http://www.clubdelphi.com/foros/show...iar+pegar+Edit

Saludos,

casacham 09-04-2008 22:44:35

Gracias Delphius
 
Tanto tiempo amigo salteño


Te agradezco tu respuesta, en este momento las esto leyendo, voy a realizar las prueba cuando llegue a casa debido a que ahora estoy en el laburo

casacham 11-04-2008 06:34:03

Gracias de nuevo
 
Hola Delphius, se ve que he estado buscando mal, porque mi etiqueta de busqueda era erronea. Asi que te doy las gracias nuevamente por la mano que me has dado con este problemita. Te cuento que de todas las soluciones ofrecidas opte por la que maneja los mensajes de windows ya que seoane tiene razon en su explicación. Mi codigo quedo de la siguiente forma:
Hago que para cada objeto TEdit comparta el procedimiento haciendo que lo tome en los eventos OnEnter y devuelva el original en el OnExit quedando como se indica aqui abajo

Código Delphi [-]
 
    procedure ApelNomEnter(Sender: TObject);
    procedure ApelNomExit(Sender: TObject);
  private
    { Private declarations }
     //....
     //...
    AntWindowProc: TWndMethod;
  public
    { Public declarations }
  end;
 
 

procedure TF_LoginNewReg.MiWindowProc(var Message: TMessage);
Label NoCopia;
begin
  case Message.Msg of
    WM_COPY:
      begin
        Goto NoCopia;
      end;
    WM_PASTE:
      begin
        Goto NoCopia;
      end;
    else // Si no es ninguno de los anterios llamamos al antiguo WndProc
      AntWindowProc(Message);
  end;
  exit;
 NoCopia:
    ShowMessage('No se puede realizar la operación solicitada');
    Casillero.Clear;
end;
 
procedure TF_LoginNewReg.ApelNomEnter(Sender: TObject);
begin
 Casillero:=TEdit(Sender);
 AntWindowProc:= TEdit(Sender).WindowProc;
 TEdit(Sender).WindowProc:=MiWindowProc;
end;
procedure TF_LoginNewReg.ApelNomExit(Sender: TObject);
begin
  TEdit(Sender).WindowProc:=AntWindowProc;
end;

Lepe 11-04-2008 09:47:03

Madre del amor hermoso, usando labels y Gotos.... creo que me da algo...

Código Delphi [-]
procedure TF_LoginNewReg.MiWindowProc(var Message: TMessage);
begin
  case Message.Msg of
    WM_COPY, WM_PASTE:
      begin
    ShowMessage('No se puede realizar la operación solicitada');
    Casillero.Clear;

      end
    else // Si no es ninguno de los anterios llamamos al antiguo WndProc
      AntWindowProc(Message);
  end;
end;

jejeje, creo que mejor así. Saludos

casacham 12-04-2008 05:58:31

Pos se agradece LEPE
 
Como dice el titulo, se agradece la simplificacion

De hecho, los goto(s) y Label(s) los implemente debido a que es un viejo recuerdo de aquel primer lenguaje con que me inicie en este mundo de programar, GWBasic, si aunque no lo creas Lepe, y es algo de retorica utilizarlo. De hecho lograba cosas importantes, hasta me estaba introduciendo en el mundo de las base de datos, algo que me resultaba muy complejo en el año 1992 cuando estaba mas avanzado ya en QBasic. Luego me intereso Visual Basic. Pero cuando un amigo con el que vivia en mis años de universidad me enseño Delphi 4.0, pues, si te das cuenta, es lo que mejor he aprendido y el lenguaje que mejor se adapta a muchas necesidades, no quiero pecar de ignorante y llamarlo el mejor Lenguaje. En estos momentos tengo una version "demo" de Delphi 2007, y la verdad que Visual Basic ya ni me interesa, lo lamento por VB.

Lepe 12-04-2008 10:38:26

Sólo por el mero hecho de usar Goto y label es obvio que llevas bastante tiempo en esto de la programación.

Yo los usé muy poco, hasta que leí un comentario sobre unos conceptos extraños llamados "programación estructurada" donde decía que era mala práctica el uso del Goto y label, porque se perdía el "orden de la programación", se enrevesaba todo y no se sabía cómo funcionaba el motorcillo creado.

Ya digo, sólo puedo hablar por lo dicho en libros.

Ahora si tengo que hacer algo similar....
Código Delphi [-]
procedure Uno;

var 
     i:integer;

  procedure procLoca_a_Uno;
  begin
  end;

begin // Uno

end;

Según veo en muchos códigos actuales, es una práctica vigente. No se puede decir lo mismo de los Goto, que se desaconseja el uso.

Curioso lo de VB, yo comparé VB5 vs D3 y Delphi ganó por goleada, aún siendo 2 versiones atrás.

Saludos


La franja horaria es GMT +2. Ahora son las 08:02:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi