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 13-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Unhappy TComponets no tiene propiedad enabled

Hola a todos:

Como bien dice el título he llegado al momento de poder acceder a esta propiedad, algunos diran porque no lo haré con TControl que es descendiente de TCompoenent y es para los objetos visuales, claro está, el problema es el siguiente, TControl no toma los componentes que están dentro de objetos contenedores como lo es GroupBox.

Código Delphi [-]
Form.Controls[i].Enabled := False;
//Form.Components[i].Enabled := False; esto no funciona

Necesito poder acceder de alguna forma ya que Controlls[i] no puede acceder a los componentes que están dentro de un objeto contenedor...
Espero que se entienda esto..

Nos vamos, y muchas gracias
__________________
No todo es como parece ser...
Responder Con Cita
  #2  
Antiguo 13-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
He tenido que leer esto varias veces y aún así no estoy seguro de haber entendido.

Si quieres acceder a los controles dentro de un contenedor entonces debes usar Contenedor.Controls:

Código Delphi [-]
for I := 0 to GroupBox1.ControlCount - 1 do
begin
  GroupBox1.Controls[i].Enabled := false;
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 13-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por roman
Si quieres acceder a los controles dentro de un contenedor entonces debes usar Contenedor.Controls
Roman, se me acaba de ocurrir una idea con lo que tu dices, tendré que comprobar si ese control es un contenedor de ser así accedo a las propiedades de los controles que están dentro del contenedor (groupbox).

Veré como anda esto, gracias..

Saludos..
__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 13-01-2006
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
Siempre puedes usar la recursividad:
Código Delphi [-]
procedure MirarDentro(Contenedor:TComponent);
var
  I:Integer;
begin
  for I := 0 to Contenedor.ControlCount-1 do
    begin
      if Contenedor.Controls[i] is TGroupBox then //o TPanel o ...
        MirarDentro(Contenedor.Controls[i]);
      //[...] Aquí lo que sea...
    end;  
end;
Lo he escrito "a capón"... pero espero que te sirva de ayuda... (y perdón si hay algún error).

Saludos
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
  #5  
Antiguo 14-01-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Solo una pequeña variante a lo propuesto por Ohcan:
Código Delphi [-]
procedure MirarDentro(Contenedor:TComponent);
var
  I:Integer;
begin
  for I := 0 to Contenedor.ControlCount-1 do
    begin
        MirarDentro(Contenedor.Controls[i]);
      //[...] Aquí lo que sea...
    end;  
end;

Si un contenedor no tiene componentes dentros, se hace su llamada, pero saldrá inmediatamente

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 14-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Si un contenedor no tiene componentes dentros, se hace su llamada, pero saldrá inmediatamente
Es que el punto no es tanto si tiene componentes dentro o no, sino si puede o no tener componentes dentro, esto es, si realmente es un contenedor. Por eso el condicional que pone Ohcan no es gratuito aunque a ambos se les ha pasado el hecho de que ni TComponent ni TControl son contenedores.

La rutina podría quedar así:

Código Delphi [-]
procedure MirarDentro(Contenedor: TWinControl);
var
  I: Integer;

begin
  for I := 0 to Contenedor.ControlCount - 1 do
  begin
    if Contenedor.Controls[i] is TWinControl then
      MirarDentro(TWinControl(Contenedor.Controls[i]))
    
    // código aquí
  end;
end;

Así, el condicional abarca TGroupBox, TPanel, etc. que es, me parece, lo que Ohcan quería indicar con el comentario:

Código Delphi [-]
//o TPanel o ...

// Saludos

Última edición por roman fecha: 14-01-2006 a las 19:40:25.
Responder Con Cita
  #7  
Antiguo 16-01-2006
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
Hola roman

Sin embargo me asalta una duda (ahora mismo no tengo el Delphi a mano y no puedo resolverla):
TEdit también desciende de TWinControl, ¿no? ¿No causaría esto problemas?

Saludos.
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
  #8  
Antiguo 16-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por Ohcan
TEdit también desciende de TWinControl, ¿no? ¿No causaría esto problemas?
Según la ayuda de delphi, TWinControl es la clase para todas los controles derivados de windows (widgets clásicos), de ser así, TEdit no debería causar ningún problema.

Hasta Luego -
__________________
No todo es como parece ser...
Responder Con Cita
  #9  
Antiguo 16-01-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Cita:
Empezado por Ohcan
Hola roman

Sin embargo me asalta una duda (ahora mismo no tengo el Delphi a mano y no puedo resolverla):
TEdit también desciende de TWinControl, ¿no? ¿No causaría esto problemas?

Saludos.
No, no causaría problemas, por que al ser descendiente de TWinControl, tiene las propiedades Controls y ControlCount.

Así que se entraría al procedimiento recursivamente, pero saldría de inmediato, ya que Controls estaría vacío para el.




Saludos...
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
Propiedad tipo Objeto (TForm) buildero_d C++ Builder 1 15-09-2005 09:31:16
¿Existe alguna propiedad que haga visible QRDBText y QRLabel en tiempo de ejcucion?? nuri Varios 3 05-08-2005 19:00:54
Mi recopilacion de exageraciones DarkByte Humor 5 29-06-2004 10:32:47
Utilizar propiedad dentro de un objeto senpiterno Varios 4 21-04-2004 18:53:32


La franja horaria es GMT +2. Ahora son las 05:17:44.


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