III UNIDAD C++BUILDER ARREGLOS
8.- COMPONENTE StringGrid C++BUILDER ( adicional )
Este componente es de los mas importantes, para el procesamiento de muchos datos, permite concentrar, procesar y mostrar gran cantidad de información para la vista del usuario.
Este componente presenta, manipula y procesa conjuntos de datos de tipo strings en forma tabular, es decir en forma de tablas, matrices, cuadros concentrados, ejemplo;
CIA ACME
INGRESOS POR VENTAS MENSUALES
MILLONES DE PESOS
ENE FEB MAR ABR
SUC A 1 2 3 4
SUC B 5 6 4 5
SUC C 6 7 8 9
Recordar que son los datos numéricos internos quienes se procesan (es decir, se capturan, se realizan operaciones con ellos, se despliegan, etc.), es la información externa quien le da sentido.
Algunas de sus propiedades y métodos mas interesantes son:
ColCount.- Determina la cantidad de columnas que contendrá la tabla.
Recordar que para efectos de programación, la primera de ellas es la columna 0.
RowCount.- Determina la cantidad de renglones que contendrá la tabla.
Recordar que para efectos de programación, el primero de ellos es el renglón 0.
Fixedcol , Fixedrow.- Determinan la cantidad de columnas y renglones fijos o de encabezado, estas propiedades ponerlas en 0.
+Options, goediting = true; Para que permita editar o capturar datos al usuario.
+Options, gotab = true; Para que el usuario pueda navegar entre celdas usando la tecla del tabulador.
Cells[columna][renglón], Es la propiedad mas importante, porque es la que permite el acceso a cualquier celda de la tabla,
StringGrid1→Cells[1][1]=“PATO”;
Edit1→Text=StringGrid1→Cells[0][0];
Edit2→Text=StringGrid→Cells[0][1] * 3.1416;
observar que a pesar de ser de tipo Strings, se pueden efectuar alguna operaciones matemáticas directamente con las celdas.
Aunque es mas seguro sobre todo en el caso particular de la suma, convertirlos a Cells[][].ToInt() o ToDouble(), ej.;
Edit2→Text=StringGrid1→Cells[1][0].ToInt()+5;
Las demás propiedades investigarlas en la ayuda del CBuilder.
Para procesar todos los elementos de la tabla, solo recordar que se deben usar dos ciclos for, uno externo para controlar columnas, y uno interno para controlar renglón ( observar que es lo inverso de las tablas o arreglos normales).
Ejemplo , capturar una tabla de 3 * 4 enteros, y restarles 4 después;
Pantalla de Diseño:
Programa;
void __fastcall TForm1::Button1Click(TObject *Sender)
{ int col, reng ;
for(col=0;col<=2;col++)
for(reng=0;reng<=3;reng++)
{StringGrid1->Cells[col][reng]=StringGrid1->Cells[col][reng]. ToInt()- 4 ;};
}
Pantalla de Corrida:
Un proceso muy común con tablas, cuadros y concentrados es agregarles listasde totales y promedios ya sea por columna o por renglón o ambas , por ejemplo;
CIA ACME
INGRESOS MENSUALES
ENE FEB MARZO TOTALSUC PROMSUC
SUC A 1 2 3 6 2
SUC B 4 5 6 15 5
SUC C 7 8 9 24 8
SUC D 10 11 12 33 11
TOTMES 22 26 30
PROMMES 5.5 6.5 7.8
En este ejemplo aparte de la tabla se ocupan 4 listas, dos para totales y dos para promedios.
El código es sencillo, pero recordarlo y aprenderlo para siempre:
//declaración
float tabla[4][3], totsuc[4], promsuc[4];
float totmes[3], promes[3];
//observar tamaños de listas que referencian renglón
// listas que referencian columnas, se supone que la tabla // ya esta capturada.
//código para operaciones para totales y promedios //renglones por sucursal:
for(reng=0;reng<=3;reng++)
for(col=0;col<=2;col++)
{ totsuc[reng]=totsuc[reng]+tabla[reng][col]; };
for(reng=0;reng<=3;reng++) promsuc[reng]=totsuc[reng] / 3.0 ;
// operaciones para totales y promedios por mes
for(reng=0;reng<=3;reng++)
for(col=0;col<=2;col++)
{totmes[col]=totmes[col]+tabla[reng][col]; };
for (col=0;col<=2;col++) prommes[col]=totmes[col]/4.0;
TAREAS PROGRAMACION C++BUILDER
1.- Construir un concentrado que despliegue los costos fijos de tres diversos productos que se fabrican en cuatro sucursales de una empresa MAQUILADORA.
2.- Construir un concentrado que contenga los ingresos por ventas mensuales de los 4 primeros meses del año de tres sucursales de una cadena refaccionaría, agregar listas de ingresos totales por mes e ingresos promedios por sucursal.
3.- Construir un cuadro que contenga las calificaciones de 5 materias de cuatro alumnos cualesquiera, incluir promedios de calificaciones por materia y por alumno.