SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: draugsul en Domingo 28 de Mayo de 2006, 06:51
-
Saludos:
Esta esla primera vez que escribo en el foro asi que espero hacerlo bien.
Estoy haciendo una pequeña aplicación, en la cual incluyo un StringGrid de 50 celdas. El detalle que no he logrado hacer es el siguiente, buscar las celdas que esten vacias y poder escribir en la primera de estas, claro haciendo que las que esten ocupadas no se sobreescriban. ¿Como puedo lograr esto?
Gracias.
-
Bueno, supongo que primero tienes que recorrer el StringGrid con un for doble, algo así como.
int i,j;
for(i=1;i<=StringGrid1->ColCount;i++)
{
for(j=1;j<=StringGrid1->RowCount;i++)
{
if(StringGrid1[j]=" ") //Aquí es donde localizas una celda vacía
StringGrid1[j]="0"; //Sustituyes la celda vacía por el valor que quieras naturalmente esto no afacta a las demás.
else break;
}
}
O también pódrias declarar una variable AnsiString;
ejemplo.
AnsiString celda;
celda=StringGrid1[j];
Y se pondría así:
if(celda.IsEmpty()==true) en lugar de if(StringGrid1[j]=" ")
Bueno, eso es solo una idea para que te guies, escribí el código sin probarlo, espero que te sea de utilidad.
Suerte y saludos. :D <_< :blink: :whistling:
-
Gracias carnal lo pondre en practica :D
-
Tambien podrias hacer la condicion sin necesidad de declarar un AnsiString adicional
if( StringGrid1->Cells[j].IsEmpty() )
pero creo que el for debe empezar en 0 y terminar un numero antes del total
for( int i = 0; i < StringGrid1->ColCount; i++ )
for( int i = 0; i < StringGrid1->RowCount; i++ )
if( StringGrid1->Cells[j].IsEmpty() )
{
StringGrid1->Cells[j] = "Algo";
break;
}
y el break no debe ir ahi, pues el codigo solo serviria para escribir en la primera celda si esta vacia, pero solo son detalles
-
jeje, el segundo for es el de j, es lo malo de copiar y pegar
for( int i = 0; i < StringGrid1->ColCount; i++ )
for( int j = 0; j < StringGrid1->RowCount; j++ )
if( StringGrid1->Cells[j].IsEmpty() )
{
StringGrid1->Cells[j] = "Algo";
break;
}