Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2015
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
Error con Sender

Perdón la ignorancia pero para ustedes esto debe ser facil de solucionar.
Cuando estoy en el form1 tengo un procedure "limpiar" para borrar todos los edits.
Obviamente la linea que escribí es:

Código Delphi [-]
Procedure Limpiar;
Begin
if (Sender is TEdit) then
    TEdit(Sender).Text:='';
end;

El Problema es que sale un error en compilación con la leyenda undeclared identifier:'Sender'.
Cuando se hace referencia a otra unidad (ej. unit2) es suficiente con poner delante Form2..... etc pero como hace referencia a la misma unidad no se como solucionarlo.
Que hago?
Responder Con Cita
  #2  
Antiguo 27-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tienes que hacer un bucle para recorrer todos los componentes que hay en el Form.
Si es un Label entonces lo limpias.
Busca por FindComponent
Responder Con Cita
  #3  
Antiguo 27-02-2015
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Buenos dias,

El sender es un objeto que pasas como parametro, por ejemplo asi:
Código Delphi [-]
procedure Tacceso.FormCreate(Sender: TObject);
Mas bien, como dice casimiro, tal vez con un bucle como este pudiera resultar:
Código Delphi [-]
for i:=0 to acceso.ControlCount-1 do
    begin
      if acceso.Controls[i] is tedit then tedit(acceso.Controls[i]).Text:='';
    end;

No probe ese codigo pero es para que te des una idea masomenos...

Cuando haces referencia al mismo form en el que estas trabajando no hace falta anteponer nada aunque puedes poner el nombre del form o usar la instruccion "Self" para hacer referencia al mismo formulario en el que estas trabajando.

Saludos!
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------

Última edición por Kiranov fecha: 27-02-2015 a las 15:04:16.
Responder Con Cita
  #4  
Antiguo 27-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola sac.

Es tál cuál como te han comentado los compañeros. Pero vale aclarar que si usas un procedimiento aislado, deberás enviarle el Parent (form) de los Edits como argumento:
Código Delphi [-]
procedure Limpiar(aForm: TForm);
var
  i: Integer;
begin
  for i:= 0 to aForm.ControlCount-1 do
    if aForm.Controls[i].ClassType = TEdit then
      TEdit(aForm.Controls[i]).Clear;
end;

// Llamada (requiere parámetro)
procedure TForm1.btnLimpiarClick(Sender: TObject);
begin
  Limpiar(Self);
end;
En cambio si lo declaras como método del form no es necesario:
Código Delphi [-]
type
  TForm1 = class(TForm)
  ...
  private
    procedure Limpiar;
  end;
...

procedure TForm1.Limpiar;
var
  i: Integer;
begin
  for i:= 0 to ControlCount-1 do
    if Controls[i].ClassType = TEdit then
      TEdit(Controls[i]).Clear;
end;

// Llamada (el parámetro es innecesario)
procedure TForm1.btnLimpiarClick(Sender: TObject);
begin
  Limpiar;
end;


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 28-02-2015
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
Gracias

Gracias a todos. me dieron una pequeña-gran lección.
Ecfisa como siempre una gran ayuda.
Ahora si, todo perfecto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sender en un componente creado madmai Varios 5 15-06-2008 02:39:59
Sender as... modulay OOP 4 06-02-2006 17:22:53
Sender que no envia.... Phacko Varios 5 30-03-2005 17:52:58
Sobre la variable Sender yusnerqui OOP 5 25-10-2004 16:12:24
NombreProcedure(Sender/owner/etc ...)?? Giniromero OOP 7 10-10-2003 18:45:35


La franja horaria es GMT +2. Ahora son las 18:24:11.


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