Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 28-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola. Antes de nada, comentarte que utilices TAG's cuando escribas código Delphi.

En cuanto a lo que comentas, el único inconveniente que le veo es que utilizas el evento para programar la rutina ValidarDatos; Si luego alguien cuando el EditAna está en el formulario programa algo en el Evento OnKeyPress perderás la ejecución de tu procedimiento.

No se si me explico; OnKeyPress no es más que un puntero a un procedimento; Tú has hecho "apuntar" (valga la redundancia) ese puntero al procedimiento ValidarDatos, pero si en diseño ese evento se programa, el puntero pasa a "apuntar" al procedimiento EditAna1KeyPress (por ejemplo) y el acceso al tuyo se pierde; Puedes hacer la prueba.

Hay dos alternativas:
(1) Utilizar alguno de los mensajes de Windows que hay en los "ascendientes" de este control; Algunos de estos definidos en TWinControl debería servir:
Código Delphi [-]
    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
    procedure WMSysKeyDown(var Message: TWMKeyDown); message WM_SYSKEYDOWN;
    procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;
    procedure WMSysKeyUp(var Message: TWMKeyUp); message WM_SYSKEYUP;

(2) Una más sencilla es usar algun procedimiento de alguno de los ascendientes que se pueda sobreescribir; en este caso en TWinControl existe:
Código Delphi [-]
  procedure KeyPress(var Key: Char); dynamic;

Si utilizas la segunda quedaría así:

Código Delphi [-]
unit UnitAna;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, IdGlobal;

type
  TEditAna = class(TEdit)
  private
    { Private declarations }
    procedure ValidaDatos(Sender: TObject; var key: char);
  protected
    { Protected declarations }
    procedure KeyPress(var Key: Char); override;
  public
  published
    { Published declarations }
  end;

procedure Register;

implementation

uses
  Dialogs;

procedure TEditAna.ValidaDatos(Sender: TObject; var key: char);
begin
  if not (((key >= 'a') and (key <= 'z')) or
    ((key >= 'A') and (key <= 'Z')) or
    IsNumeric(key) or
    (key = '-') or
    (key = '_')) then begin
    exit;
  end;
end;

procedure Register;
begin
  RegisterComponents('Standard', [TEditAna]);
end;


procedure TEditAna.KeyPress(var Key: Char);
begin
  inherited;

  ValidaDatos(Self, Key);
end;

end.

En este caso, como el evento OnKeyPress no se utiliza, puedes programarlo en el formulario sin ningun problema.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
evento keypress ronson Varios 40 04-01-2011 04:18:23
Llamar a evento Keypress edgusano .NET 1 30-11-2005 22:02:29
relacionar un procedimiento con un evento de un objeto aranel OOP 3 20-10-2005 21:50:36
evento on keypress y componente dinamico Rabata OOP 4 26-07-2005 21:54:38
Evento nuevo en objeto LucianoRey OOP 13 04-09-2004 01:45:22


La franja horaria es GMT +2. Ahora son las 11:51:37.


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