Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

TLabel dinámicos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: TLabel dinámicos Responder citando

hola, si alguien puede contestar, estaría muy agradecido.

He creado cuatro TLabel dinámicamente TLabel new_label= new TLabel(Form1); , esto funciona, pero luego, como puedo acceder a ellos independientemente?, es decir, como podría saber el nombre de cada label para que por ejemplo, al pulsar uno de los cuatro botones que tengo (los botones no están creados dinámicamente), el caption de cada Tlabel fuese igual al de cada botón?

seria:

Label¿?->Caption=Button1->Caption;
pero que Label?

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Hola, a mi entender sólo estás creando un label que se llama new_label, por lo que el código que debes usar es

new_label->Caption = Button1->Caption;

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Creo que no me he expresado con claridad.

Lo que me contestas lo entiendo bien, pero imagínate que lo que quiero es que cada vez que pulse el Button1, se actualize el caption del new_label al caption que tenga el Button1.
Gracias.

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Hola, sigo sin entenderte. Lo primero que no entiendo es cómo creas 4 label con un solo new. Lo lógico es usar una sentencia new para cada uno de los label (escribe el código que usas).

En segundo lugar no entiendo la necesidad de crearlos dinámicamente, más bien veo un problema pues si haces referencia a ellos antes de haberlos creado te generará un error.

Respondiendo puramente a tu pregunta (que ya ves que no entiendo bien) deberías escribir

new_label->Caption = Button1->Caption;

dentro del evento onClick del Button1, de forma que se produzca la asignación cuando pulsas el botón.

Si me mandas el código con la creación de los TLabel dinámicos puede que adelantemos algo. También si me mandas una justificación de porqué los creas dinámicamente, porque podrías crearlos en modo diseño y no poner nada en la propiedad Caption, de esta forma parece que no existen hasta que no pulsas el botón correspondiente que los "rellene".

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Salu2.......

Uso la creacion dinamica de objetos a menudo aqui tienes un trozo de codigo que permite crear un label cada vez que lo desees y asignarle propiedades y eventos:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static TLabel *Texto = NULL;
Texto = new TLabel(Form1);
Texto->Parent = QRBand1;
Texto->Name = "Texto"+ IntToStr(Form1->ComponentCount -Conteo);
Texto->OnClick = TextoClick;
Texto->OnMouseDown = TextoMouseDown;
Texto->OnMouseMove = TextoMouseMove;
Texto->OnMouseUp = TextoMouseUp;
Texto->OnClick = TextoClick;
Texto->Transparent = false;
Texto->WordWrap = false;
Texto->Cursor = crHandPoint;
Texto->ShowHint = true;
Texto->Hint = Texto->Name;
}

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Hola, Alfredo, una pregunta ¿qué ocurre si pulsas muchas veces el Button1? No veo que se borre el puntero a Texto, y no sé que hace exactamente la sentencia

static TLabel *Texto = NULL;

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Hola...

Si pulsas el boton suficientes veces llegara el momento en que se supere la capacidad en recursos del pc y/o windows proteste.

Te puse la creacion y asignacion en un Button imagino que tu usas otro evento para solo crear 4 labels , estos labels
se llamaran LabelX donde x sera el numero de componentes del formulario mas 1 , para un valor apropiado de Conteo, en mi caso, en el tuyo te recomiendo que pongas esta variable a cero y la incrementes por cada label.
Esto relativo al boton de creacion, desde los otros Botones seria simple, el primero se referira a Label0 o Label1 depende si incrementas Conteo antes o despues de la creacion, los siguentes pues Labe1 o Label2 etc.

De la destruccion del puntero no estoy seguro pero asumo que este solo existe durante la ejecucion del evento y se destruye automaticamente, si estoy equivocado agradeceria que me lo dijeran,la asignacion a null si se que lo crea con propiedades nulas, lo cual permite la futura asignacion de estas.

Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

yo tengo lo que necesitas pero por alguna razon no puedo contestarte (no me deja)
pero si de verdad te interesa este es mi email
wereka@tutopia.com
Volver arriba
Mensaje    Asunto: TLabel dinámicos Responder citando

Para hacer lo que quieres hacer utiliza la Funcion FindComponent
EJ:
TLabel *Tmp;
Tmp=(*TLabel)FindComponent("Label1");
Tmp->Caption="HOLA";

//SOLO NECESITA EL NOMBRE DEL COMP. pudes hacer para el nombre esto:
FindComponent("Label"+IntToStr(I));
// donde I es el contador entero del ciclo

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.