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 21-12-2004
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
acceder a todos pero modificar algunos...

Hola a todos, estoy teniendo problemas para modificar ciertas propiedades en algunos com ponentes.... Me explico con el objetivo:

En un formulario con varios controles (Memos, edits y botones) deseo que al pulsar el boton 'Cancelar' se limpien los Tedits; Son varios con nombres expecificos.. edNombre; edEtc... (seria mas sido mas facil si no hubiera puesto nombre)
Estoy tratando con esta rutina:

Código:
label1.caption:='';
label2.caption:='';
memoDatos1.Lines.Clear;
memoDatos2.Lines.Clear;

for i:= 0 to form2.ComponentCount-1 do
   c:= (form2.Components[i].Name) as string;
         if Form2.Components[i] is tEdit then
              begin
              (FindComponent((form2.Components[1].Name)) as tedit).Text;
              c.Text:='';
         end;
end;
Pero compila. Me a presentado varios errores: en principio con conversiones pero lo ultimo es que ¿¡que no tengo definido FindComponent!?.. No entiendo muy bien lo que pasa quiza estoy aplicando mal el procedimiento o la lógica, ... Quiza me puedan dar un empujon.....

Un millon
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #2  
Antiguo 21-12-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola, no entiendo algunas asignaciones, como esa que haces de:

c:= (form2.Components[i].Name) as string;

¿"c" es una vraible tipo string o tipo TComponent o tipo TEdit ...? Como luego haces c.Text := '';

Tampoco entiendo que luego busques de nuevo, usando FindComponent, un componente al que ya estás accediendo mediante el array Components.

Para no extenderme más prueba a ver si es esto lo que andas buscando:

Código Delphi [-]
for i:= 0 to form2.ComponentCount-1 do
  if Form2.Components[i] is TEdit then
   TEdit(Form2.Components[i]).Text := '';

Saludos
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 21-12-2004
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Lightbulb

Hola Alfredo

Yo hago algo así, parecido, pero en TTabSheet.
Te pongo un ejemplo:

Código Delphi [-]
procedure Limpiar;
var
  I:Integer;
  Control:TControl;
begin
  for I := 0 to From1.ControlCount-1 do  //Uso ControlCount no ComponentCount
    begin
      Control:= PaginaActual.Controls[i];
      if Control is TEdit then TEdit(Control).Text := '';
    end;
end;

Simplemente nos recorremos el Form (en este caso) y cuando encontramos un TEdit (o lo que sea), lo "limpiamos"... ¡Ah! si necesitas saber el nombre: TControl(Control).Name

Espero que te sirva...

Salu2
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
  #4  
Antiguo 21-12-2004
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
WUW...

Por algo asi comence pero se me fue poniendo escamoso.....
y me fui enredando cada vez mas en el proceso... je je

Una vez mas Gracias Andres .... funciona a la perfección con todos los controles del form, incluso con los que estan en paneles diferentes....
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #5  
Antiguo 21-12-2004
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Gracias Ohcan, esta fino, te lo agradezco tambien.... solo que cuando hice las primeras pruebas use Controls en vez de components y me modificaba el text pero no de todos los paneles¿?

Muy agradecido de verdad....
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #6  
Antiguo 21-12-2004
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Lightbulb

Bueno... no sabía que tenías paneles... pero eso es sencillo...

puedes usar recursividad....

Código Delphi [-]
procedure Limpiar(Padre:TObject);
begin
  (...)
  if Control is TPanel then Limpiar(Control);
  (...)
end;

o algo por el estilo (que estoy escribiendo de memoria...
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
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 09:16:06.


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