Hola como estan.
quiero saber si hay alguna forma de reducir este codigo ya que esto me parace un poco exagerado estuve pensado como hacerlo con while o con un for pero el problema es que cuando se preciona soble el boton esto quivale a un click y click va aumentando de uno en uno.
osea cuando la variable click es igual a uno se habilita un label que esta oculto y asi susesivamente.
pero me parecen demasiados if y si click llega a 100 o 1000 se tendran que crear tantos if como clicks haya echo el usuario
colaOb.insert(click);
if(click == 1)
{
//Hace visible un label
}
else if (click == 2)
{
//Hace visible un label
}
else if (click == 3)
{
//Hace visible un label
}
else if (click == 4)
{
//Hace visible un label
}
else if (click == 5)
{
//Hace visible un label
}
else if (click == 6)
{
//Hace visible un label
}
//Asi sique trece veces mas
cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien
Mil gracias saludos
Si todos esos valores deben hacer lo mismo y se encuentran en un rango consecutivo hace un if cuya comprobacion sea ( (click > X) && (click < X) ); obviamente X debe ser reemplazado por los limites del rango.
puedes usar switch
switch variable{
case 1:
//algo
break;
case 2:
//algo
break;
default:
//si no cumple ninguna de las condiciones anteriores
break;
}
Haces visible un label. Quizás metiendo esos labels en un array, y accediendo a ellos mediante labels[click] te valga.
hola contestando primero a
Eternal Idol creo que entedi la idea el problema es que son label distintos los que se deben de activar segun valla incrementado click.
if ((click >0) && (click < 30))
{
lblCliente13 //Se hace visible este label Cuando Click es 1
lblCliente14 //Se hace visible este label Cuando Click es 2
lblCliente15 //Se hace visible este label Cuando Click es 3
lblCliente16 //Se hace visible este label Cuando Click es 4
lblCliente17 //Se hace visible este label Cuando Click es 5
lblCliente18 //Se hace visible este label Cuando Click es 6
lblCliente19 //Se hace visible este label Cuando Click es 7
}
Contestando a
engel lex en caso de que use swicth deberia crear tantos case como clicks solo que estarian contenidos dentro de un solo switch
seria casi como usar if.
intentare lo que indica
ivancea96 gracias a todos por comentar
ahora que lo pienso
Cita de: ivancea96 en 3 Junio 2014, 19:30 PM
Haces visible un label. Quizás metiendo esos labels en un array, y accediendo a ellos mediante labels[click] te valga.
pero como sabria que label es el que se va a volver visible por medio del click que reciva el array?
lo intentare ahora
Gracias por contestar a todos. Saludos
Cita de: nolasco281 en 3 Junio 2014, 20:11 PM
if ((click >0) && (click < 30))
{
lblCliente13 //Se hace visible este label Cuando Click es 1
lblCliente14 //Se hace visible este label Cuando Click es 2
lblCliente15 //Se hace visible este label Cuando Click es 3
lblCliente16 //Se hace visible este label Cuando Click es 4
lblCliente17 //Se hace visible este label Cuando Click es 5
lblCliente18 //Se hace visible este label Cuando Click es 6
lblCliente19 //Se hace visible este label Cuando Click es 7
}
Cogiendo eso de ejemplo:
labels[click+12]Como lvlCliente13 se hace visible cuando Click es 1, pues 12+1 da 13.
Antes claro, tendrías que meter las labels en el array o vector o lo que quieras.
No se si entendí muy bien, así que ya dirás.
Y no sería más facil mapear los label usando un vector??
std::vector< Label* > labels;
labels.push_back( label1 );
labels.push_back( label2 );
// ...
if ( ( click > 0 ) && ( click <= labels.size( ) ) )
labels[ click ]->hide( );
int x = 1;
int click = 0;
colaOb.insert(click);
click = click -1; // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
while ( clik == x ){
colaOb.insert(click);
click = click - 1; // si el problema es que al hacer click click es igual a 2 clicks le quitas uno XD
mostrar ( label, x);
cout << colaOb; //Verifica que en cosola el insertar en cola vaya bien
x++;
if ( click == 30)
0 = 0;
}
el propio click puede ser indice si le quitas un click ni hace falta la x XD
si un click es igual a 2 le quitas uno en seguida antes de hacer comprobaciones XD :laugh:
Es solo una idea XD
Es un click click - 1click :¬¬
Hola queria comentar que despues de estar tratando me funciono
hice un poco de lo que comenta ivancea96 y eferion cree una instancia de los labels despues pase a todos los labes que tenia creados a un vector como comenta eferion y luego los llame de la forma que comenta ivancea96
Gracias a todos un poco de ayuda y pensar de que forma te puede servir es genial.
Gracias a todos saludos y muchas gracias por la ayuda.