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 26-11-2009
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Question Localizar un componente y darle el foco

Hola a Todos:

Me encuentro escibiendo un procedimiento mediante el cual pueda darle el foco a un control ej boton, edit; el código que utilizo es el siguiente

Código Delphi [-]
procedure EstablecerFoco(Formulario : TForm; Control : TWinControl);
begin
   Try
     Formulario.FindComponent('Control') as TWinControl;
     Formulario.Control.SetFocus;
   Except
     MessageDlg('No se lozalizo el control ' + Control.Name, mtInformation,[mbOk], 0);
   End;
end;

al intentar correr queda en la cuarta linea y me envia los siguientes mensajes

[Error] UProcedimientos.pas(425): Statement expected, but expression of type 'TWinControl' found
[Error] UProcedimientos.pas(426): Undeclared identifier: 'Control'
[Error] UProcedimientos.pas(426): Not enough actual parameters

Y la verdad no tengo ni idea que debio hacer, agradezco su colaboración


gertorresm
Responder Con Cita
  #2  
Antiguo 27-11-2009
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola, prueba de esta forma.

Código Delphi [-]
procedure EstablecerFoco(Formulario : TForm; Control : TWinControl);
begin
   Try
     TWinControl(Formulario.FindComponent(Control.Name)).SetFocus;
   Except
     MessageDlg('No se lozalizo el control ' + Control.Name, mtInformation,[mbOk], 0);
   End;
end;

Un Saludo.
Responder Con Cita
  #3  
Antiguo 27-11-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
uso del tag

si configuras en las propiedad del button o edit el tag deberias condicionar con un if el button a tag 1 quedaria condicionado de esta manera si button tiene el tag a 1 hacer de lo contrario que pase el foco al edit sin usar funciones.

Código Delphi [-]
begin 
button1.setfocus;
end
else
begin
edit1.setfocus;
end;


Saludos
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
  #4  
Antiguo 27-11-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
tienes un error de concepto. Si le estas pasando el objeto que quieres darle el foco, ¿para que lo vuelves a buscar con findcomponent?

Código Delphi [-]
procedure EstablecerFoco(Formulario : TForm; Control : TWinControl);
begin
   Try
     Formulario.FindComponent('Control') as TWinControl;
     Formulario.Control.SetFocus;
   Except
     MessageDlg('No se lozalizo el control ' + Control.Name, mtInformation,[mbOk], 0);
   End;
end;

aparte que tendrias que usar el control.Name. Ten en cuenta que una cosa es el nombre del objeto, y otra el de la variable con el que tu estas trabajando:

Código Delphi [-]
var 
   o1 : TControl;
   o2 : TControl;
   r : TControl;
   edit1 : TEdit;
begin
   o1 := TControl.Create(self);
   o2 := TControl.Create(self);
   ...
   o1.Name := 'control';
   o2.Name := 'o1';

   r := FindComponent(o2.Name) as Tcontrol; // r sera o2
   r := FindComponent(o1.Name) as Tcontrol; // r sera o1
   r := FindComponent('o1') as Tcontrol // r sera o2
   r := FindComponent('control') as TControl // r sera o1
end;

para lo que quieres hacer, con la funcion que tienes, tansolo debes hacer

Código Delphi [-]
procedure EstablecerFoco(Control : TWinControl);
begin
   if assigned(Control) then Control.SetFocus;
end;

y si quieres encontrar algun objeto por su nombre entonces

Código Delphi [-]
procedure EstablecerFoco(Formulario : TForm; s : string);
begin 
   try
       (Formulario.FindComponent(s) as TWinControl).SetFocus;
   except
    ...
   end;
end;

espero se te haya aclarado algo mas. Un saludo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con foco en componente propio diegofhernando OOP 2 04-09-2007 17:58:34
Problemas con foco de componente/s cybergerman OOP 4 18-01-2006 18:04:39
Saber el componente que tiene el foco en un formulario Javi2 Varios 3 20-10-2005 16:19:32
Evitar q componente adkiera foco diegofhernando OOP 7 12-06-2005 20:53:31
quitar el foco a un componente unko! Internet 4 20-03-2005 16:58:16


La franja horaria es GMT +2. Ahora son las 03:58:33.


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