Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2005
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Evitar Pegado

Buenas amigos del foro, es la primera vez que escribo. Tengo varios años buecando en el Foro y hasta la fecha todo lo he encontrado, excepto lo siguiente: Necesito bloquear en un edit el Pegado por medio de las teclas: Shift-Ins, Ctrl-V o pegar del Menú contextual. Les agradezco cualquier ayuda.
Responder Con Cita
  #2  
Antiguo 02-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola nemesio.

Antes que nada te doy la bienvenida al club, si aún no lo has hecho te recomiendo leer la guía de estilo

Respecto a tu pregunta, te muestro un ejemplo en donde se captura el mensaje WM_PASTE de un TEdit y después se cancela.

Se crea un componente TMyEdit con esta característica, podrías crear el componente por separado y registrarlo para que aparezca en la paleta de componentes de Delphi, por ahora te dejo este código para que lo revises.

Código Delphi [-]
type

  {Nuevo edit que no admite pegado}
  TMyEdit = class(TEdit)
  private
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    Edit2:TMyEdit;//Instancia de TMyEdit
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit2:=TMyEdit.Create(Self);//Componente creado en tiempo de ejecución
  Edit2.Parent:=Self;
  Edit2.Left:=10;//Ubicación en el formulario
  Edit2.Top:=10;
end;

procedure TMyEdit.WMPaste(var Message: TMessage);
begin
  Exit; // Cancelar pegado
end;

Saludos.

Última edición por Héctor Randolph fecha: 02-12-2005 a las 05:50:31.
Responder Con Cita
  #3  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Héctor, has hecho que escribiera esta cosa:

Código Delphi [-]
{*******************************************************}
{                                                       }
{  TEdit(Ex) - TEdit en que no puede "pegarse" texto    }
{                                                       }
{  Copyright  (c)  2005  David Esperalta Calderón       }
{                                                       }
{                                                       }
{  Uso: Sitúa esta unidad en la cláusula uses del       }
{       formulario en que hagas  uso de "TEdit's"       }
{       en los que no quieras que pueda "pegarse"       }
{       texto desde el portapapeles de Windows.         }
{                                                       }
{       Has de tener en cuenta de hacerlo antes de      }
{       la unidad "StdCtrls.pas", que  es en donde      }
{       se implementa el componente "TEdit".            }
{                                                       }
{                                                       }
{  Gracias Héctor Randolph por la idea. ;-)             }
{                                                       }
{                                                       }
{  GNU-GPL license - You can use this software under    }
{  the terms of the General Public License (gnu.org)    }
{                                                       }
{*******************************************************}

unit UEditEx;

interface

uses
  StdCtrls, Messages;

type
  TEdit = class(StdCtrls.TEdit)
  private
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
    procedure WMRButtonDown(var Message: TMessage); message WM_RBUTTONDOWN;
  end;

implementation

{ TEdit(Ex) }

procedure TEdit.WMPaste(var Message: TMessage);
begin
end;

procedure TEdit.WMRButtonDown(var Message: TMessage);
begin
end;

end.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

O esto otro, vamos:

Código Delphi [-]
{ *********************************************************************** }
{                                                                         }
{ DecComp - Unos sencillos componentes                                    }
{                                                                         }
{ Créditos:                                                               }
{                                                                         }
{ ¡Gracias a Héctor Randolph (1) por la idea!                             }
{                                                                         }
{ (1) www.clubdelphi.com                                                  }
{                                                                         }
{ Copyright (c) 2005 dec - davidesperalta@gmail.com                       }
{ bajo la licencia GNU GPL >> ver en "licencia.txt"                       }
{                                                                         }
{ *********************************************************************** }

unit UNoPastEdit;

interface

uses
  Classes,StdCtrls,Messages;

type
  TNoPastEdit = class(TEdit)
  private
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
    procedure WMRButtonDown(var Message: TMessage); message WM_RBUTTONDOWN;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('DecComp', [TNoPastEdit]);
end;

{ TNoPastEdit }

procedure TNoPastEdit.WMPaste(var Message: TMessage);
begin
end;

procedure TNoPastEdit.WMRButtonDown(var Message: TMessage);
begin
end;

end.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 02-12-2005 a las 06:55:43. Razón: Corrección del código fuente.
Responder Con Cita
  #5  
Antiguo 02-12-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Si tienes la JVCL , su componente JvEdit tiene la propiedad ClipboardCommands q te permite activar o desactivar todas estas ocpiones..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 02-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Cita:
Empezado por dec
Gracias Héctor Randolph por la idea.
Hola David

No hay nada que agradecer, tú sabes, para eso estamos aquí.


Tengo una sugerencia para tu componente, a ver que te parece.

Código Delphi [-]
type
  TPortapapeles=(cbAllowCut,cbAllowPaste,cbAllowCopy);
  TClipboardOptions=set of TPortapapeles;

  TNoPastEdit = class(TEdit)
  private
    FClipboardOptions: TClipBoardOptions;
  published
    property ClipboardOptions: TClipBoardOptions read  FClipBoardOptions
                                                 write FClipBoardOptions;
  private
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
  end;

implementation

{ TNoPasteEdit }

procedure TNoPastEdit.WMPaste(var Message: TMessage);
begin
  if not (cbAllowPaste in FClipboardOptions) then Exit;
  inherited;
end;

Se puede hacer lo mismo con las opciones copiar y cortar.

Un saludo.
Responder Con Cita
  #7  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Estupeno Héctor, acabo de actualizar el componente, el cual incluí en DecComp. ¡Muchas gracias!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Héctor
Se puede hacer lo mismo con las opciones copiar y cortar.
Hum... por hoy lo voy a dejar así, puesto que no he dormido, llevo unas horas liado con cierto tema para WordPress y... en fin, qué te voy a contar,... pero, ya veremos, que dijo un ciego. ¿Pero a qué te refieres, exactamente? ¿Habría que aprovechar otros mensajes o qué? Mira que estoy espesito, como suele decirse...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 02-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Cita:
Empezado por dec
Hum... por hoy lo voy a dejar así, puesto que no he dormido
Amigo, estamos en iguales condiciones, de este lado del planeta son aproximadamente las 03:15 am y llevo dos noches de desvelos.

Cita:
Empezado por dec
¿Pero a qué te refieres, exactamente? ¿Habría que aprovechar otros mensajes o qué?
Solamente me refería a que se puede evitar copiar capturando el mensaje WM_COPY y evitar cortar con el mensaje WM_CUT; de la misma manera que se capturó el mensaje WM_PASTE.

Pero, esa es otra historia.

Un saludo.
Responder Con Cita
  #10  
Antiguo 03-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Héctor
Amigo, estamos en iguales condiciones, de este lado del planeta son aproximadamente las 03:15 am y llevo dos noches de desvelos.
Tienes razón Héctor. Acaso he creído que el único que llevada casi dos días sin dormir y decide irse por primera vez en su vida a por setas era yo... ¡con el mundo que hay! Qué egoísta. Otra vez me disculpo de veras.


Cita:
Empezado por Héctor
Pero, esa es otra historia.
Eso pienso yo a bote pronto: partía de una idea sencilla que tú mismo me proporcionaste. De hecho al componente le llamé "NoPastEdit" y no quería ir más allá que lo que en un principio se propuso. Sin embargo tu idea de añadir una propiedad que permita que el componente se comporte de otro modo, en un momento dado, me pareció estupenad y ahí está ya incorporada. Lo demás lo dejaremos para otro momento, o, en fin, cuando alguno lo considere.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:45:41.


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
Copyright 1996-2007 Club Delphi