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 18-05-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
Sencilla pregunta sobre owners

bueno companeros la cosa esta muy sencilla y empezamos con el siguiente codigo:

Código Delphi [-]

checkbox1.Parent:=groupbox1;
image2.Parent:=groupbox1;
label1.Parent:=groupbox1;
groupbox1.Parent:=scrollbox1;
scrollbox1.Components

showmessage( inttostr( scrollbox1.Controls[0].ComponentCount ) ) ;
'

y pues resulta que la linea del mensaje me muestra 0. que no deveria decirme que tiene 3 componentes el groupbox1? por que el padre de los tres es groupbox1 y que obviamiente el scrollbox es padre de este ultimo? . Digo que esto es un problema por que en un futuro quiero anadir mas componente y hacer algo como esto el bloque de codigo numero 2


bueno este es un código de lo que quiero llegar a hacer para que me puedan ayudar solo es la idea alguna mejora sera bien aceptada.
principal problema es que con esto quiero decir scrollbox1.controls[i].components[j2] dentro del scrollbox1 en sus controles alguno debe de ser tgroupbox y dentro sus componentes que estoy recorriendo uno debe de ser tlabel o tcheckbox.




Código Delphi [-]

for i=0 to scrollbox1.ControlCount-1 do
begin

  if  Scrollbox1.Controls[i]   is TGroupbox then
  begin
     for j=0 to 3 //le pongo 3 por que se que siempre hay 3 elementos en el group box pero si no?? como lo sabria por eso el problema del //showmeesage
         if  ( tcheckbox(scrollbox1.controls[i].component) = cbcheck )  then //aqui intento decirle que reccorra los componentes y si
///encuentra uno que sea checkbox y este seleccionado entonces hacemos
         begin
                
               for j2=0 to 3 do
               begin
                 if   scrollbox1.controls[i].components[j2]  is Tlabel then nombreimagen:=(tlabel(GroupBox1.Controls[j2]).Caption);
               end;

         end;
  end;



end;
gracias de nuevo. Mucho exito su amigo darkblue
__________________
Todo es Relativo
Responder Con Cita
  #2  
Antiguo 18-05-2012
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 DarkBlue
Código Delphi [-]
showmessage( inttostr( scrollbox1.Controls[0].ComponentCount ) ) ;
Debería ser ControlCount, no ComponentCount:

Código Delphi [-]
showmessage( inttostr( scrollbox1.Controls[0].ControlCount ) ) ;

Agrego: No confundas la lista Controls con la lista Components. Controls consiste de los objetos contenidos (visualmente), es decir, aquellos cuyo Parent es el componente. Components consiste de los objetos cuyo dueño es el componente.

// Saludos
Responder Con Cita
  #3  
Antiguo 19-05-2012
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Mucho ojo...
Cita:
Empezado por roman Ver Mensaje
No confundas la lista Controls con la lista Components. Controls consiste de los objetos contenidos (visualmente), es decir, aquellos cuyo Parent es el componente. Components consiste de los objetos cuyo dueño es el componente.
Como dice el Chavo del Ocho....eso eso eso...
Responder Con Cita
  #4  
Antiguo 19-05-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
oh bueno muchas gracias me ha quedado muy claro, owner es el components y parent es el controls
__________________
Todo es Relativo
Responder Con Cita
  #5  
Antiguo 19-05-2012
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 DarkBlue.

Si, más o menos es así la relación.

Dicho de otro modo, la propiedad vectorial Components contiene a los componentes que tienen en común ese mismo propietario (Owner) y la propiedad vectorial Controls contiene a los controles que tienen en común ese mismo padre (Parent).

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-05-2012 a las 22:56:02.
Responder Con Cita
  #6  
Antiguo 21-05-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
ja no existe showmessage( inttostr( scrollbox1.Controls[0].ControlCount ) ) ; supongo que me las arreglare de otra manera gracias por su ayuda ya me queda mas claro =)
__________________
Todo es Relativo
Responder Con Cita
  #7  
Antiguo 21-05-2012
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 DarkBlue Ver Mensaje
ja no existe showmessage( inttostr( scrollbox1.Controls[0].ControlCount ) ) ; supongo que me las arreglare de otra manera gracias por su ayuda ya me queda mas claro =)
Ponlo así:

Código Delphi [-]
(scrollbox1.Controls[0] as TWinControl).ControlCount

// Saludos
Responder Con Cita
  #8  
Antiguo 21-05-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
agradeceria si pudieras ayudarme con mi código mi estimado roman creo que sera sencillo para alguien de tus conocimientos


oh ya veo :s pero ahora me quedo mas perplejo con eso de twincontrol existe un alguna documentacion para leer ?



Código Delphi [-]
for i:=0 to scrollbox1.ControlCount-1 do
begin

  if  (Scrollbox1.Controls[i]  is  TGroupbox) then
  begin

       for x:=0 to  (Tgroupbox(scrollbox1.Controls[i]).ControlCount-1) do
        begin

                 if   (Tgroupbox(scrollbox1.Controls[i]).Controls[x] is Tcheckbox )
                 and ( tcheckbox(tgroupbox(scrollbox1.Controls[i]).Controls[x]).Checked=true   )  then
                 begin

                        for w:=0 to  (Tgroupbox(scrollbox1.Controls[i]).ControlCount-1) do // lo recorro de nuevo por que deseguro se      me paso el label que busco para saber el nombre de la imagen
                        begin
                              if   (Tgroupbox(scrollbox1.Controls[i]).Controls[x] is Tlabel ) then
                              begin
                               listadenombres.add( tlabel(tgroupbox(scrollbox1.Controls[i]).Controls[x]).Caption );
                               continue;
                              end;

                        end;



                 end;

       end;
bueno creo que se me acaba de ocurrir ahorita mismo es así
__________________
Todo es Relativo
Responder Con Cita
  #9  
Antiguo 21-05-2012
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.

Aunque seguramente no lo haga tan claro como roman, con respecto al código, te pongo un ejemplo con un ScrollBox que contiene además del GroupBox un Panel con controles.

Lo podes hacer de este modo:
Código Delphi [-]
var
  i,j: Integer;
begin
  for i:= 0 to ScrollBox1.ControlCount-1 do
  begin
    if ScrollBox1.Controls[i] is TGroupBox then  // Es un GroupBox ?
      with TGroupBox(ScrollBox1.Controls[i]) do  // con el GroupBox hacer
        for j:= 0 to ControlCount-1 do
        begin
          if Controls[j] is TCheckBox then  // Es un CheckBox ?
            TCheckBox(Controls[j]).Checked:= True;
          if Controls[j] is TLabel then  
            ListaDeNombres.Add(TLabel(Controls[j]).Caption);
          if Controls[j] is TRadioButton then  
            TRadioButton(Controls[j]).Checked:= True;
        end;
    if ScrollBox1.Controls[i] is TPanel then  // Es un TPanel ?
      with TPanel(ScrollBox1.Controls[i]) do  // Con el TPanel hacer
        for j:= 0 to ControlCount-1 do
        begin
          if Controls[j] is TEdit then
            TEdit(Controls[j]).Color:= clRed;
          if Controls[j] is TButton then
            TButton(Controls[j]).Caption:= 'Hola';
        end;
  end;
end;
Pero quizá te resulte más entendible así:
Código Delphi [-]
var
  i,j: Integer;
  Gb: TGroupBox;
  Tp: TPanel;
begin
  for i:= 0 to ScrollBox1.ControlCount-1 do
  begin
    if ScrollBox1.Controls[i] is TGroupBox then // Es un GroupBox ?
    begin
      Gb:= TGroupBox(ScrollBox1.Controls[i]);  // Gb es el GroupBox
      for j:= 0 to Gb.ControlCount-1 do
      begin
        if Gb.Controls[j] is TCheckBox then
          TCheckBox(Gb.Controls[j]).Checked:= True;
        if Gb.Controls[j] is TLabel then
          ListaDeNombres.Add(TLabel(Gb.Controls[j]).Caption);
        if Gb.Controls[j] is TRadioButton then
          TRadioButton(Gb.Controls[j]).Checked:= True;
      end;
    end;
    if ScrollBox1.Controls[i] is TPanel then  // Es un TPanel ?
    begin
      Tp:= TPanel(SCrollBox1.Controls[i]);  // Tp es el TPanel
      for j:= 0 to Tp.ControlCount - 1 do
      begin
        if Tp.Controls[j] is TEdit then
          TEdit(Tp.Controls[j]).Color:= clRed;
        if Tp.Controls[j] is TButton then
          TButton(Tp.Controls[j]).Caption:= 'Hola';
      end;
    end;
  end;
end;

TWinControl es la clase base para todos los controles que contienen ventanas (TObject->TPersistent->TComponent->TControl->TWinControl). De TWinControl derivan por ejemplo: TEdit, TPanel, TButton, TComboBox,...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-05-2012 a las 18:00:32.
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
Pregunta sobre NVL aluser SQL 5 13-11-2008 23:59:00
Consulta sencilla sobre ms access fybeyancourt Tablas planas 2 05-03-2007 22:51:58
Pregunta sobre BDE JorgeBec Conexión con bases de datos 1 18-03-2005 15:53:02
pregunta sencilla valentine Varios 7 17-06-2004 21:17:40
Pregunta Sencilla jorge_mosquera Gráficos 1 19-03-2004 03:39:20


La franja horaria es GMT +2. Ahora son las 20:22:40.


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