Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por las respuestas. He estado probando.

Este es el panel concreto en el que estoy haciendo las pruebas. Tiene dos TLabelEdit, dos TLabel y dos TComboBox, además del propio TPanel. Sin embargo, poniendo el código que ma ha sugerido ecfisa, la propiedad ControlCount me dice que tiene ocho elementos y eos me tiene muy despistado. ¿Cuál o cuáles son los que sobran?
Responder Con Cita
  #2  
Antiguo 03-05-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Vale. Ya he encontrado la solución. A la hora de "ver" los controles hago esto:
Código PHP:
TWinControl *wEdit Edit->Parent;
TControl *Control;

for (
nItem 0nItem wEdit->ControlCountnItem ++)
{
     
Control wEdit->Controls[nItem];
     if (
Control->ClassNameIs("TLabeledEdit"))
     {
          [
Codigo para el TLabeled]
     }
     if (
Control->ClassNameIs("TComboBox"))
     {
          [
Código para el TComboBox]
     }

No sé si será el mejor método, pero me funciona a la perfección. Muchas gracias a los dos por la ayuda.
Responder Con Cita
  #3  
Antiguo 03-05-2018
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.
Cita:
Empezado por Angel.Matilla Ver Mensaje
...
Este es el panel concreto en el que estoy haciendo las pruebas. Tiene dos TLabelEdit, dos TLabel y dos TComboBox, además del propio TPanel. Sin embargo, poniendo el código que ma ha sugerido ecfisa, la propiedad ControlCount me dice que tiene ocho elementos y eos me tiene muy despistado. ¿Cuál o cuáles son los que sobran?
Acabo de comprobar que el problema lo ocasiona el TLabeledEdit y reconozco que al no haber usado ese componente, nunca había notado el detalle.

Basta con que haya una aparición del control para que la propiedad ControlCount del contenedor se incremente en uno y la propiedad ControlCount se incrementa en uno por cada TLabeledEdit añadido (es decir que un TPanel que incluya tres LabelEdits, tiene en la propiedad ControlCount el valor seis).

Tal vez el incremento se deba a que el TLabeledEdit es un control de edición que tiene asociado un TLabel...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 03-05-2018
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.

Busqué en pero no pude encontrar referencia a ese comportamiento .

Se me ocurren dos soluciones, la primera mediante una función miembro:
Código PHP:
...
class 
THWinControl : public TWinControl {
public:
  
int CtrlCount() {
    
int n ControlCount;

    for(
int i 0ControlCounti++)
      if(
Controls[i]->ClassNameIs("TLabeledEdit")) n--;
    return 
n;
  }
};
...

/* Ej. de uso */
void __fastcall TForm1::Panel1Exit(TObject *Sender)
{
  
THWinControlHWC static_cast<THWinControl*>(LabeledEdit1->Parent);
  
Label2->Caption HWC->CtrlCount();

o mas simple, mediante una función:
Código PHP:
...
int CtrlCount(TWinControlWC)
{
  
int n WC->ControlCount;

  for(
int i 0WC->ControlCounti++)
    if(
WC->Controls[i]->ClassNameIs("TLabeledEdit")) n--;

  return 
n;
}

/* Ej. de uso */
void __fastcall TForm1::Panel1Exit(TObject *Sender)
{
   
Label2->Caption =  CtrlCount(LabeledEdit1->Parent);

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 04-05-2018 a las 02:10:56.
Responder Con Cita
  #5  
Antiguo 04-05-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Basta con que haya una aparición del control para que la propiedad ControlCount del contenedor se incremente en uno y la propiedad ControlCount se incrementa en uno por cada TLabeledEdit añadido (es decir que un TPanel que incluya tres LabelEdits, tiene en la propiedad ControlCount el valor seis).

Tal vez el incremento se deba a que el TLabeledEdit es un control de edición que tiene asociado un TLabel...

Saludos
Efectivamente. Me he dado cuenta al hacer las pruebas; aparecen para cada TLabeledEdit dos elementos: un Edit y un SubLabel. De todas formas con el código que puse ayer me vale porque lo que necesito es comprobar que todos los TLabeledEdit y TComboBox tienen contenido.
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
referencia a un objeto no establecida como instancia de un objeto Beare MySQL 4 30-12-2015 15:49:54
Analizar elementos web Furyxe Internet 4 28-07-2011 12:16:05
XML y sus elementos papulo Varios 5 01-03-2007 10:13:30
Dos elementos en un ComboBox BuenaOnda Varios 7 16-01-2007 17:21:26
Elementos no imprimibles Igna Impresión 4 12-01-2004 17:53:28


La franja horaria es GMT +2. Ahora son las 11:42:53.


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