Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2008
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Unhappy Exception eInvalidCast con FindComponent

Saludos foreros de ClubDelphi, disculpen la molestia nuevamente, estoy intentando agarrar un fichero txt donde vengan algunos nombres los componentes, para guardar configuraciones,un ejemplo de ello sería así

SpinEdit1.Name='SpinEdit1';
Checkbox1.Name='Checkbox1';
en el fichero txt esta asì
==============
SpinEdit1=50
Checkbox1=-1
===============
bueno lo cargo en el Form, pero este no es un proyecto normal,porque simàs no recuerdo me funcionó en Formulario normal, mi proyecto esta dentro de una DLL,bueno
Gracias a Dec me dijo como en este link
--------------------------------------------------------------------
lo qué pasa al tener este código:
Código Delphi [-]
var chBox :TcheckBox;
//-----------------
 try
    chBox := (Self.FindComponent(valorX) as TCheckBox);
 except
    on EInvalidCast do showmessage('Exception!!');
 end;
pues al encontrar el SpinEdit1 me arroja EInvalidCast, no me respeta el exception, ya sè porque es un TSpinEdit y no un TCheckbox, cómo pudiera hacerle para pudiera localizar todos los diferentes componentes sin que me tire excepciones?
----------------------------------------------------------------
intente usando una especie de TComponent, pero puess no funcionó.
Alguna sugerencia? osea intento buscar componentes dentro del mismo Formulario.
Nosé si quedo claro el planteamieno XD.
Gracias de antemano cualquier sugerencia será bienvenida
Responder Con Cita
  #2  
Antiguo 09-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola. Si te esta dando ese error es porque ValorX tiene que ser diferente de 'CheckBox1'...me parece que valorx lo vas cambiando. Entonces lo que deberias hacer es, simplemente, obviar la excepcion, por ejemplo

Código Delphi [-]
var
   checkbox : TCheckBox;
   spinedit  : TSpinEdit;
   editbox : TEdit;
  ...
begin
   checkbox := nil;
   spinedit := nil;
   editbox := nil;
   ...

   for i := 0 to numero_componentes_cargados do
   begin
        valorx := Nombres_componentes[i];

        if checkbox := nil then
        try 
            checkbox := (FindComponent(Valorx) as TCheckBox);
        except 
        end;

        if spinedit = nil then
        try
            spinedit := (FindComponent(Valorx) as TSpinEdit);
        except
        end;
        
        if edit = nil then
        ...
   end;
   ...
   if edit = nil then ShowMessage('No se encontro el componente edit');
   if checkbox = nil then ShowMessage('No se encontro el checkbox');
   if spinedit = nil then ShowMessag('No se encontro el spinedit');
  ....
  // etc...
end;

son importantes los = nil ya que sino es posible que se perdieran si anteriormente se hubiesen cargado. Saludos.

Última edición por coso fecha: 09-07-2008 a las 18:26:55.
Responder Con Cita
  #3  
Antiguo 09-07-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Podrias usar un if asi:

Código Delphi [-]
if Self.FindComponent(valorX) is TCheckBox then
  chBox := (Self.FindComponent(valorX) as TCheckBox);
Responder Con Cita
  #4  
Antiguo 10-07-2008
Avatar de mrnovice
mrnovice mrnovice is offline
Miembro
 
Registrado: oct 2006
Posts: 163
Poder: 18
mrnovice Va por buen camino
Saludos

Gracias, voy a intentarlo, luego les comento los resultados.
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
Uso de la función FindComponent jessie Varios 7 27-02-2013 19:58:50
Uso de FindComponent vlanka24 Varios 4 05-12-2007 13:40:18
Algo similar a "FindComponent" en visual basic 6 Hugorr .NET 1 03-08-2007 14:44:35
Ayuda con findcomponent! b3nshi Varios 5 02-08-2007 21:11:22
Consula sobre Findcomponent Carmelo Cash OOP 7 26-09-2006 23:48:49


La franja horaria es GMT +2. Ahora son las 21:25:07.


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