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 27-09-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
C++ Valor de String como nombre de Variable o Objeto

Saludos

Sucede que tengo un código horriblemente repetitivo, tego varios labels y según el usuario da click en cada uno de ellos le cambio el color para que sepa en cual esta detenido. para esto en cada label tengo que escribir el código asignándole la nueva fuente al seleccionado y la común a todos los demas porque no se si ha seleccionado otro antes.
Lo que quisiera tratar de hacer es que una variable obtenga el nombre del label y a la vez me permita usar sus propiedades para poder cambiar el color de la fuente. Loq ue tengo es esto:

Código:
Label20->Font->Color = clBlack;
        Label22->Font->Color = clBlack;
        Label26->Font->Color = clBlack;
        Label28->Font->Color = clBlack;
        Label24->Font->Color = clBlack;
        Label30->Font->Color = clBlack;
        Label40->Font->Color = clBlue;
        Label42->Font->Color = clBlack;
        Label44->Font->Color = clBlack;

        Label21->Font->Color = clBlack;
        Label23->Font->Color = clBlack;
        Label25->Font->Color = clBlack;
        Label29->Font->Color = clBlack;
        Label25->Font->Color = clBlack;
        Label31->Font->Color = clBlack;
        Label39->Font->Color = clBlue;
        Label41->Font->Color = clBlack;
        Label43->Font->Color = clBlack;

        Label46->Font->Color = clBlack;
        Label48->Font->Color = clBlack;
        Label49->Font->Color = clBlack;
        Label50->Font->Color = clBlack;
        Label51->Font->Color = clBlack;
        Label52->Font->Color = clBlack;
        Label65->Font->Color = clBlack;
        Label66->Font->Color = clBlack;
        Label53->Font->Color = clBlack;
        Label58->Font->Color = clBlack;
        Label54->Font->Color = clBlack;
        Label57->Font->Color = clBlack;
        Label55->Font->Color = clBlack;
        Label56->Font->Color = clBlack;
        Label67->Font->Color = clBlack;
        Label68->Font->Color = clBlack;
        Label61->Font->Color = clBlack;
        Label64->Font->Color = clBlack;
        Label60->Font->Color = clBlack;
        Label63->Font->Color = clBlack;
        Label59->Font->Color = clBlack;
        Label62->Font->Color = clBlack;
        Label69->Font->Color = clBlack;
        Label70->Font->Color = clBlack;
        Label74->Font->Color = clBlack;
        Label75->Font->Color = clBlack;
Como pueden ver tengo que cambiar todos y asignar el color azul solo a dos, así por cada uno de ellos !!! horrible verdad !!! alguien preguntó esto antes y le indicaron que tal vez haciendo un array podría lograrlo, pero de ese tema no hubo mas respuestas, si se logro o no ni idea.



Lo que necesito hacer seria algo como hacer una clase que al pasarle el nombre del seleccionado me ponga los demas en color negro y al seleccionado me lo ponga en azul. De forma que solo tenga que llamarla en el OnClick del Label y pasarle ese valor.

De paso NO SE COMO HACER EL ARRAY !!! Nunca antes he tenido que hacerlo y por ende no se como hacerlo, asi que me fue imposible probar la idea que dieron en el foro

si alguien me pudiera ayudar seria excelente
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 27-09-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 Impadron.


Cita:
Lo que necesito hacer seria algo como hacer una clase que al pasarle el nombre del seleccionado me ponga los demas en color negro y al seleccionado me lo ponga en azul. De forma que solo tenga que llamarla en el OnClick del Label y pasarle ese valor.
Si interpreté bién lo que solicitas en ese párrafo, de este modo tendría que funcionarte:
Código:
...
TLabel *PrevLabel;

void __fastcall TForm1::FormCreate(TObject *Sender) {
  PrevLabel = Label1;  // primer Label 
}

/* asignar a los eventos OnClick de todos los Labels */
void __fastcall TForm1::LabelClick(TObject *Sender) {
  PrevLabel->Font->Color = clBlack;
  PrevLabel = static_cast<TLabel*>(Sender);
  PrevLabel->Font->Color = clBlue;
}
Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 27-09-2012 a las 19:51:50. Razón: agregar comentarios
Responder Con Cita
  #3  
Antiguo 27-09-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Otra solución puede ser usar FindComponent:

Código:
  TLabel* Label;
  for(int n=0; n<ComponentCount; n++){
    Label = static_cast<TLabel*>(FindComponent("Label"+IntToStr(n)));
    if(Label){
      if(n == 39 || n == 40) Label->Font->Color = clBlue;
      else Label->Font->Color = clBlack;
    }
  }
Saludos.
Responder Con Cita
  #4  
Antiguo 28-09-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Gracias por su ayuda amigos !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
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
asignar valor a variable por medio de nombre ocram Varios 4 14-07-2011 18:32:03
Variable String cambia de valor a '' oscarac Varios 3 30-05-2011 07:28:39
Concatenar variable a nombre de objeto cslbcn OOP 5 08-06-2010 14:55:08
como acceder a un objeto si el nombre es pasado como un string marcelinux Varios 4 08-11-2007 00:20:39
el valor de una variable como nombre de un boton carlosmoralesm OOP 5 26-05-2004 06:57:53


La franja horaria es GMT +2. Ahora son las 18:52:29.


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