FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Cambiar la propiedad Caption de etiquetas TLabels en runtime mediante bucle for.
Hola a todos, os pongo en situación. Resulta que tengo en un Form 13 etiquetas (Label1..Label13) donde la propiedad Caption es la que trae por defecto (p.ej. "Label1"). Básicamente lo que trato de hacer es cambiar dicha propiedad Caption de cada una de las 13 etiquetas en tiempo de ejecución mediante el uso de un bucle for de la siguiente manera:
Código:
for(int x = 1; x <= 13; x++) { //Labelx->Caption = "Propiedad Caption cambiada a la etiqueta "+IntToStr(x); } |
#2
|
||||
|
||||
Hola Yugo.
Ejemplo: Código:
{ TLabel *LB = NULL; for(int i=0; i<ComponentCount; i++) { if(LB = static_cast<TLabel*>(FindComponent("Label"+IntToStr(i)))); LB->Caption = "Nuevo valor" + IntToStr(i); } }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 04-09-2014 a las 20:36:22. |
#3
|
|||
|
|||
Código:
{ TLabel *LB=NULL; for(int i=0; i<ComponentCount; i++) { if(LB = static_cast<TLabel*>(FindComponent("Label"+IntToStr(i)))); LB->Caption = "Nuevo valor" + IntToStr(i); } } "[C++ Warning] Unit1.cpp(23): W8060 Possibly incorrect assignment" Por otro lado, hay algo que no entiendo. La variable ComponentCount del bucle for, ¿contiene el número de componentes que posee nuestro Form? Porque de ser así, al tener también un botón en el Form y cuente como un componente más para la propiedad ComponentCount del Form, ¿puede ser que la precaución que salte sea por este motivo, ya que el bucle for se ejecutaría una vez más de lo que realmente haría falta? |
#4
|
||||
|
||||
Hola Yugo.
Cita:
Código:
{ TComponent *CP=NULL; for(int i=0; i<ComponentCount; i++) { CP = FindComponent("Label" + IntToStr(i)); if (CP != NULL && CP->ClassNameIs("TLabel")) (static_cast<TLabel*>(CP))->Caption = "Nuevo valor" + IntToStr(i); } } Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 04-09-2014 a las 22:33:09. |
#5
|
|||
|
|||
Bueno pues dicho mensaje de precaución desaparece al realizar la siguiente asignación !=0 a la condición if por si el puntero cast falla:
Código:
if( (LB = static_cast<TLabel*>(FindComponent("Label"+IntToStr(i)))) !=0 ); |
#6
|
||||
|
||||
Hola Yugo.
Seguramente no viste mi último mensaje mientras escribias el tuyo. Usa el código que figura en ese ya que el anterior no es seguro, por que asigna en la comparación sin que aún se sepa si es un TLabel. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
Cierto ecfisa, justo tras enviar mi último mensaje vi tu respuesta, gracias.
He estado revisando un poco tu código, que funciona igualmente muy bien... Código:
{ TComponent *CP=NULL; for(int i=0; i<ComponentCount; i++) { CP = FindComponent("Label" + IntToStr(i)); if (CP != NULL) (static_cast<TLabel*>(CP))->Caption = "Nuevo valor" + IntToStr(i); } } Otra cosa ecfisa, al inicializar la variable i del bucle for a i=0, también podríamos haberla inicializado a i=1 cuando el nombre de la primera etiqueta es Label1. ¿No? Por cierto, no tengo nada que disculparte, te agradezco muchísimo tu ayuda. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
propiedad caption | lucas05 | Varios | 10 | 25-08-2010 19:51:51 |
Cambiar caption componentes | capo979 | Varios | 2 | 22-07-2008 09:04:23 |
Problema con propiedad TRadioButton.Checked en Runtime | vejerf | OOP | 4 | 06-06-2008 17:09:44 |
Cambiar Caption | Caral | Varios | 13 | 08-02-2008 14:22:13 |
¿Cómo hago para que la propiedad Caption de un botón tenga múltiples líneas? | kakarotv5 | Varios | 9 | 25-05-2007 15:29:10 |
|