Está en la página 1de 24

1.

- INTRODUCCION C++BUILDER

Uno de los problemas mas comunes en los diversos sistemas de información, es el


tratamiento o procesamiento de una gran volumen de datos o de información.

Variables o componentes visuales manejados hasta ahora, no pueden ayudar a resolver


este problema.

Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares,
porque solo permiten almacenar o procesar un dato a la vez.

No confundir esto con el tipo de dato o rango de datos que una variable tiene la
capacidad de almacenar.

Por ejemplo si se quiere almacenar nombre y edad de 15 personas, con el método


tradicional se ocuparan 30 variables o 30 componentes visuales, y solo es nombre y
edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de empezar a
analizar otro tipo de variables y de componentes.

Es decir, en problemas que exigen manejar mucha información o datos a la vez,


variables escalares o componentes visuales de manipulación de datos normales (edit,
label, etc.), no son suficientes, ya que su principal problema es que solo permiten
almacenas un dato a la vez.

Se ocupa entonces variables o sus correspondientes componentes visuales que sean


capaces de almacenar y manipular conjuntos de datos a la vez.

Variables de tipo arreglo y sus correspondientes componentes visuales, si permiten


almacenar y procesar conjuntos de datos del mismo tipo a la vez.

Cada dato dentro del arreglo, se le llama elemento del arreglo y se simboliza y
procesa(captura ,operación ,despliegue ), usando el nombre del arreglo respectivo y un
subíndice indicando la posición relativa del elemento con respecto a los demás
elementos del arreglo, solo recordar que en C++Builder la primera posición, elemento o
renglón es la 0 (cero), ej.

NOMBRES

Juan

Pedro —> Nombres[1]

José

Ana —→ Nombres[3]
Carmen

EDAD

18 —> Edad[0]

20

25

30 —> Edad[3]

Sin embargo sus problemas son similares a los de variables normales, es decir hay que
declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.

Para propósitos del aprendizaje se analiza o clasifican en tres grupos diferentes los
arreglos que ofrece C++Builder, ellos son;

1.- Arreglos tradicionales en C++ (internos dentro del programa)

2.- Nuevos Arreglos de C++ (Son CLASES e internos dentro del programa)

3.- Componentes Visuales de tipo Arreglo

2.- ARREGLOS TRADICIONALES EN C++BUILDER

En programación tradicional siempre se manejan dos tipos de arreglos, los arreglos tipo
listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados,
matrices o bidimensionales, en ambos casos son variables que permiten almacenar un
conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas
que cada uno de estos tipos contiene, como en los siguientes ejemplos;

1. ARREGLOS TIPO LISTA

Juan

Pedro —> Nombres[1]

José

Ana —> Nombres[3]


Carmen

18 —> Edad[0]

20

25

30 —> Edad[3]

1. ARREGLOS TIPO TABLAS

CIA ACME

ING MENS VTAS

(MILES DE $)

ENE FEB MAR ABR MAY

SUC A 10 12 15 10 9

SUC B 8 7 5 9 6

SUC C 11 18 20 14 17

INST TECN DE TIJUANA

CONCENTRADO DE CALIF

MAT FIS QUIM HIST

JUAN 5 5 5 5

JOSE 4 4 4 4

PEDRO 3 3 3 3

ANA 9 9 9 9
Como se observa, la diferencia principal entre un arreglo tipo lista, y un arreglo tipo
tabla, son las cantidades de columnas que contienen.

NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN


ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES
FINANCIEROS ADMINISTRATIVOS

EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE


VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON
PRECISAMENTE LOS DEL ALGEBRA MATRICIAL Y NO ES PROPOSITO O
LUGAR INDICADO PARA TRATAR PROBLEMAS Y OPERACIONES CON
MATRICES.

3.- ARREGLOS TIPO LISTA C++BUILDER

Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de
datos del mismo tipo organizados en una sola columna y uno o mas renglones.

También reciben el nombre de vectores en álgebra, o arreglos unidimensionales en


programación.

Los procesos normales con una lista o con sus elementos, incluyen declarar toda la lista,
capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc.

Para declarar una lista se usa el siguiente formato;

tipodato nomlista[cant de elementos o renglones];

ejemplos;

int edades[12];

float sueldos[10];

AnsiString municipios[5];

notas:

Si un solo botón, en toda la ventana va a realizar, todos los procesos ( declaración,


captura, operaciones, comparaciones, despliegue), con la lista, solo hacer la declaración
de la lista, al principio del evento onclick, como lo muestra el programa ejemplo.

Recordar también que la primera posición o renglón en una lista es la posición o renglón
0 (cero).
El dato capturado, proviene de momento de un componente visual escalar y por tanto
para capturas se deben de usar tantos componentes visuales como elementos tenga la
lista, ejemplo para capturar una lista de 4 edades, el código y pantalla se da un poco mas
adelante;

1. Programa

void __fastcall TForm1::Button1Click(TObject *Sender)

{ // declaración

int edad[4];

// carga o captura del arreglo

edad[0]=Edit1->Text.ToInt();

edad[1]=Edit2->Text.ToInt();

edad[2]=Edit3->Text.ToInt();

edad[3]=Edit4->Text.ToInt();

2. Pantalla de corrida

Para el caso de operaciones y comparaciones con todos los elementos de la lista a la


vez, se deberá usar un ciclo for con una variable entera llamada renglón, misma que
también se usara como índice de la lista, para el problema ejemplo, suponer que se
quieren convertir todas las edades a meses, el código seria;
{ // declaración

// carga o captura del arreglo

// conversión a meses

for(renglon=0;renglon<=3;renglon++)

{ edad[renglón]=edad[renglón]*12; };

Recordar que todos los datos internos de la lista estarán almacenados en la memoria ram
del computador, para despliegues se usara un componente visual que permite manipular
un conjunto de datos a la vez, el ListBox, pero se tiene que usar un ciclo for() para ir
añadiendo o agregando elemento por elemento como se observa en el problema ejemplo
que se ha venido desarrollando, en este caso se quiere desplegar las cuatro edades
convertidas a meses;

código y pantalla de salida son;

void __fastcall TForm1::Button1Click(TObject *Sender) {

// declaración

int edad[4];

int renglón;

// carga o captura del arreglo

// conversión a meses

{ edad[renglón]=edad[renglón]*12; };

// CONVERSION A STRINGS Y ALMACENANDO EN ListBox

{ ListBox1->Items->Add(edad[renglón]); };

}
Solo recordar que para capturar una lista de strings, primero se deberá usar un
componente visual por cada elemento o renglón del arreglo y segundo el traspaso de
dato es directo, y para desplegarlo en un componente ListBox de igual forma es directo,
como en el siguiente ejemplo;

void __fastcall TForm1::Button1Click(TObject *Sender)

{ // declaración

AnsiString Ciudad[3];

int reng;

//Captura de elementos de la lista

Ciudad[0]=Edit1->Text;

Ciudad[1]=Edit2->Text;

Ciudad[2]=Edit3->Text;

// Pasando lista a ListBox;

{ ListBox1->Items->Add(Ciudad[reng]); };

}
TAREAS PROGRAMACION C++BUILDER

1.- Capturar y desplegar 5 precios de productos cualesquiera, usando dos panel, uno
para capturar y uno para desplegar.

2.- Capturar 4 sueldos en un panel, desplegarlos aumentados en un 25% en otro panel.

3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre,
precio y cantidad en sus 3 listas respectivas, después calcular una cuarta lista con el
gasto total por cada producto desplegarlo todo en un segundo panel e incluir también el
gran total.

4.- Capturar en una lista solamente 6 números múltiplos de 5, se debe de estar capture y
capture números hasta que se completen los 6 múltiplos de

4.- C++BUILDER ARREGLOS TIPO TABLA

Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados
en dos o mas columnas y uno o mas renglones.

Para procesar ( recordar solo operaciones y comparaciones) internamente todos los


elementos de la tabla se ocupan dos ciclos for(), uno externo para controlar renglón y
uno interno para controlar columna.
Solo recordar que en capturas, se deberán usar tantos componentes Edit como celdas
tenga la tabla y en despliegue usar tantos componentes ListBox como columnas tenga la
tabla, estos métodos son provisionales mientras se analizan los componentes visuales
apropiados y respectivos.

Problema ejemplo, capturar una tabla que nos muestre el peso en lbs de los tres
jugadores claves de 4 equipos de fútbol, desplegarlos en otra tabla pero convertidos a
kg. ( una libra = .454 kg.), el programa y la pantalla de salida son;

{ // declaración

double lbrs[3][4];

int reng, col;

//conversión tabla lbrs a kgrs

for(reng=0;reng<=2;reng++)

for(col=0;col<=3;col++)

{ lbrs[reng][col]=lbrs[reng][col]*.454; };

{ ListBox1->Items->Add(FormatFloat("###.##",lbrs[reng][0]) );

ListBox2->Items->Add(FormatFloat("###.##",lbrs[reng][1]) );

ListBox3->Items->Add(FormatFloat("###.##",lbrs[reng][2]) );

ListBox4->Items->Add(FormatFloat("###.##",lbrs[reng][3]) ); };

// observar solo un for renglón, y los cuatro ListBox con // las


columnas
constantes

}
Recordar que en este nivel de instrucción solo se pretende entender los conceptos
asociados a arreglos, mejores maneras de procesarlos existen, como se vera mas
adelante, pero con lo ya descrito y comprendido, ya es posible;

TAREAS PROGRAMACION C++BUILDER

1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE


CUATRO PRODUCTOSCUALESQUIERA, QUE SE PRODUCEN EN TRES
PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA.

2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES


POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL AÑO DE CUATRO
SUCURSALES DE UNA CADENA DE AUTOREFACCIONES, AGREGAR AL
FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES
POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS
MENSUALES TOTALES POR SUCURSAL.

3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS


POR TRES VENDEDORES DIFERENTES DE 5 TIPOS DE MUEBLES DE LINEA
BLANCA, AGREGAR ADEMAS LISTAS DE COMISIONES TOTALES POR
VENDEDORES Y POR TIPO DE MUEBLE Y LISTAS DE COMISIONES
PROMEDIO POR VENDEDORES Y POR TIPO DE MUEBLES.

SUGERENCIA: PRIMERO HACER UN BOSQUEJO EN PAPEL DE COMO


QUEDARAN LOS CUADROS Y LAS LISTAS EN PANTALLA.

5.- TLIST TIPOS DE ARREGLOS EN C++BUILDER (CLASES E INTERNOS)

C++Builder nos proporciona cuando menos dos tiposnuevos de arreglos, ellos son;
TList

Se especializa en el almacenamiento y manipulación de varios tipos de OBJETOS u


elementos, por ejemplo enteros, floats, strings, componentes ( edits, labels, forms, etc. ).

Sin embargo TList no es propiamente un tipo de dato como los float, int, double,
etcétera, sino que es una Clase en C++, y como todas las Clases en C++, TList tiene
asociados una serie de propiedades y de métodos (procedimientos y funciones) que
facilitan el procesamiento y manipulación de sus elementos.

Consultando la ayuda de C++Builder, estas propiedades y métodos son:

1.-Propiedades;

Capacity.- Es la cantidad o tamaño del arreglo de apuntadores a los objetos en la lista.

Count.- Numero de objetos contenidos actualmente en la lista Items.- Se usa para


referenciar o accesar los objetos en la lista.

Recordar que las propiedades en un programa, se manejan con el formato


nomobjeto→nompropiedad.

2.- Métodos;

Add.- Inserta un objeto nuevo al final de la lista y regresa el lugar o posición donde hizo
la inserción.

Clear.- Se usa para vaciar el arreglo, también libera la memoria ocupada por los objetos
de la lista.

Delete.- Se usa para eliminar un objeto especifico, lleva como argumento o parámetro la
posición del objeto.

Exchange.- Intercambia dos objetos de la lista.

Expand.- Se usa para agregar mas espacio para nuevos objetos en la lista.

First.- Se utiliza para regresar al primero objeto de la l lista.

IndexOf.- Regresa la posición del objeto en la lista.

Insert.- Inserta un objeto en la posición deseada.

Last.- Regresa la posición del ultimo objeto en la lista.


Move.- Mueve el objeto de una posición a otra posición.

Pack .- Compacta todos los objetos en una lista y libera la memoria ocupada por los
objetos que estaban en la parte inferior de la lista.

Remove.- Remueve o elimina un objeto especificado, el resto los recorre a la posición


que ocupaba el objeto eliminado.

Sort.- Ordena los objetos de la lista, usando QuickSort.

Como se observa TList contiene muchas propiedades y métodos que facilitan


grandemente el trabajo con los elementos de una lista.

Una de las características mas importante es que todas las listas que se derivan de TList,
son completamente dinámicas, es decir listas que se crean y se derivan de esta clase, no
son de tamaño fijo, sino que pueden ir admitiendo elementos mientras la memoria del
computador alcance, esta característica junto con las propiedades y métodos que poseen,
hacen de esta clase un objeto digno de estudiar, conocer, comprender y aplicar de forma
muy detallada.

 6.- TStringList C++BUILDER

De nuevo, TList se especializa en el almacenamiento y procesamiento de toda clase de


objetos, TStringList en principio es una clase derivada de TList, esto significa que
HEREDA o que puede usar muchas de las propiedades y métodos que pertenecen a
TList, además de poder usar igualmente algunas propiedades y métodos que le son
propios.

La diferencia básica, con TList, es que TStringList solo permite almacenar strings,
como este es el caso mas común en el ambiente visual que se ha venido desarrollando,
así como en los sistemas o problemas de información de naturaleza administrativa, el
resto del capitulo se dedica a estudiar, analizar y construir aplicaciones con esta clase.

Sus propiedades y métodos son;

1.- Propiedades;

Count.- Cuenta las strings en la lista

Duplicates.- Permite strings duplicadas en una lista ordenada de strings

Objects.- Asocia un objeto a una string existente (ej. un bitmap a una string).
Sorted.- Especifica que las strings en la lista deben ser ordenadas automáticamente, solo
poner esta propiedad en True.

Strings[reng].- La mas importante, se usa para accesar, y leer o modificar una posición o
elemento especifico o determinado.

2.- Métodos;

Add.- Inserta un objeto nuevo al final de la lista y regresa el lugar o posición donde se
realizo la inserción.

Clear.- Se usa para vaciar el arreglo, también libera la memoria ocupada por los objetos
de la lista.

Delete.- Se usa para eliminar un objeto especifico, lleva como argumento o parámetro la
posición del objeto.

Exchange.- Intercambia dos objetos de la lista.

Find.- Regresa la posición de una string en una lista ordenada.

IndexOf.- Regresa la posición del objeto en la lista.

Insert.- Inserta un objeto en la posición deseada.

Sort.- Ordena los objetos de la lista, usando QuickSort.

Recuerde que objetos(variables) derivadas de TStringList pueden usar también muchas


de las propiedades y métodos de TList.

Se analiza ahora el procesamiento normal de estos objetos o desde una perspectiva mas
tradicional variables arreglo de tipo lista.

Lo mas importante a recordar es combinar lo ya visto para tratamiento de variables tipo


lista normales y usar igualmente las propiedades y métodos que contiene esta clase.

Para declarar un objeto o variable derivada de esta clase, recordar que aquí son dos
pasos, primero se debe declarar el objeto o variable y segundo se debe crear una
instancia real en memoria de este objeto o variable, como se muestran en los siguientes
ejemplos;

Creación y declaración de una lista de 8 ciudades

// área de declaración
TStringList *ciudades;

ciudades = new TStringList;

nota recordar que esta listas son dinámicas, y que no tiene sentido asignarle un tamaño
fijo, que también se podría hacer.

Creación y declaración de una lista de 6 edades;

// declaración y creación de las listas

TStringList *edades;

edades = new TStringList;

Recordar que son listas de strings, si ocupan operaciones con números se deberá usar
ToInt() y ToDouble().

Recordar además que estos dos renglones que se ocupan para la declaración, van a ir
juntos al principio del onclick del botón Ok, pero si la captura se realiza usando un
montón o conjunto de componentes edits y otros botones realizan otro proceso con la
lista, entonces tendrán que ir separados en su lugar respectivo ( mas delante se indica
como ).

Para capturar sus elementos usando de momento el método que se analizo en listas
normales, es decir un montón de componentes Edit, como en el siguiente ejemplo;

// área de declaración y creación

TStringList *ciudades;

ciudades = new TStringList;

// captura de datos

ciudades->Strings[0]=Edit1->Text;

ciudades->Strings[1]=Edit2->Text;

párrafos arriba se encuentra la definición de la propiedad Strings[];

Recordar que son listas y por tanto la primera posición, o primer renglón es la posición
0(cero).

Para desplegar los datos recordar que se puede usar un componente ListBox o un
componente ComboBox que permiten manipular el conjunto de datos a la vez, solo usar
las propiedades Text, tanto del ListBox, así como de la variable objeto derivada de
TStringList, como en el siguiente ejemplo;

void __fastcall TForm1::Button1Click(TObject *Sender)

{ TStringList *ciudades;
ciudades = new TStringList;

// procesos con la lista

// despliegue de la lista

ListBox1->Items->Text = ciudades->Text;

La pantalla de salida es:

Para el caso de procesos mas comunes como operaciones, comparaciones, etcétera, solo
recordar combinar las propiedades y métodos de TStringList con los métodos vistos y
aplicados ya para componentes visuales y para los de variables de tipo arreglo ya vistas.

Esto es importante porque exige conocer y familiarizarse con esta clase mas a fondo,
por ejemplo un caso sencillo, capturar una lista de 5 edades en años, convertirlos
posteriormente a meses y al final desplegar las edades convertidas a meses.

Una de las posibles soluciones es:

Código

void __fastcall TForm1::Button1Click(TObject *Sender)

{ TStringList *edad;

edad = new TStringList;

int reng;

// captura de datos
edad->Add(Edit1->Text);

edad->Add(Edit2->Text);

edad->Add(Edit3->Text);

edad->Add(Edit4->Text);

edad->Add(Edit5->Text);

// procesos con la lista

for(reng=0;reng<edad->Count;reng++)

{ edad->Strings[reng]=FormatFloat("###.##",edad->Strings[reng].ToInt()
*
12);

};

notas:

En el for se esta usando la propiedad Count que devuelve la cantidad de elementos que
contiene la lista, esto es con la finalidad de no tener mas que procesar los elementos
existentes.

La operación es un solo renglón en el programa.

Recordar que Propiedad Strings[] permite manipular una posición especifica dentro de
una lista, recordar igualmente que la primera posición, es la 0(cero).

Para pasar los elementos de edad a ListBox, ambos componente y variable/objeto usan
propiedad Text, porque ambos la comparten o la heredan esto es importante porque
demuestra que realmente no son cosas o elementos diferentes.

Lo mas importante, es que se debe entender, aprender y aplicar combinaciones de


propiedades, métodos y operaciones como en el ejemplo.

La pantalla de salida es;


Para poder usar un solo componente edit para capturar todos los elementos de la lista:

1. La declaración de la lista se pone en dos partes diferentes, dentro y arriba de la Unit,


como se observa en el siguiente ejemplo;

#include <vcl\vcl.h>

#pragma hdrstop

#include "Unit1.h"

//-------------------------------------------

#pragma resource "*.dfm"

TForm1 *Form1;

TStringList *edad;

//-------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

edad=new TStringList;

//-------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

edad->Add(Edit1->Text);

}
La captura no ocupa ciclo for, pero si ocupa su propio BUTTON OK, solo con Caption
=“insertar o agregar” y su código usa el método Add como en el ejemplo de arriba.

Operaciones y comparaciones son normales, es decir un for renglón hasta que sea menor
que Count, etc., en el onclick del segundo botón.

Despliegues igualmente en forma normal, es decir sin ciclo for e igualando Text en
ambos, el TStringList y el Listbox.

TAREAS PROGRAMACION C++BUILDER

1.- CAPTURAR Y DESPLEGAR 5 MUEBLES DE HOGAR

2.- CAPTURAR EN UNA LISTA 5 ESTATURAS EN CENTIMETROS,


DESPLEGARLAS CONVERTIDAS EN PULGADAS ( 1 PULGADA = 2.54 CM.)

3.- CAPTURAR EN UNA LISTA 6 PESOS EN KG., CONVERTIRLOS


POSTERIORMENTE A LIBRAS Y SOLO DESPLEGAR EN EL ListBox
RESPECTIVO PESOS MAYORES DE 120 LIBRAS.

4.- CAPTURAR EN SUS CUATRO LISTAS RESPECTIVAS, MATRICULA,


NOMBRE, CALIFICACION DE MATEMATICAS, CALIFICACION DE FISICA, DE
5 ALUMNOS, CALCULAR POSTERIORMENTE UNA LISTA DE PROMEDIOS, Y
EN LOS ListBox DE SALIDA SOLO DESPLEGAR LOS DATOS DE ALUMNOS
APROBADOS.

7.- COMPONENTE ListBox C++BUILDER ( Standard )

Este componente permite procesar visualmente un conjunto de elementos de tipo string.

Este componente hereda muchas de las propiedades y métodos de TStringList y


TStrings, mas algunas propiedades y métodos propios.

Se puede añadir, eliminar e insertar ítems en la lista usando los métodos Add, Delete,
Insert con la propiedad Items, que también es de tipo TStrings.

Si se quiere que ListBox presente varias columnas, solo cambiar el valor de la


propiedad Columns, para ordenar o clasificar los ítems, usar la propiedad Sorted.

Se puede permitir que un usuario realice una selección múltiple, poniendo la propiedad
MultiSelect en true, la propiedad ExtendedSelect determina como se realiza la selección
múltiple.
Para determinar cual ítem en particular esta seleccionado solo validar la propiedad
Selected, para conocer cuantos ítems se han seleccionado revisar los valores de la
propiedad SelCount.

Propiedades:

BorderStyle.- Despliega la lista con un marco sencillo o sin marco.

Canvas.- Se utiliza para asociar un área de dibujo o de imagen a un ítem de la lista


(consultar ayuda de esta propiedad en ListBox puesto que es interesante).

Columns.- Define una determinada cantidad de columnas para su despliegue dentro del
ListBox.

ItemIndex.- Se utiliza para seleccionar la posición o índice de un ítem o elemento en la


lista.

Items.- Es la propiedad que mas se ha venido usando, se utiliza para accesar las diversas
propiedades y métodos de las strings en la lista.

Sorted.- Se usa para ordenar alfabéticamente los elementos de la


lista( ListBox1→Sorted= true; )

Style.- Define diversos o varios estilos o formas de ListBox.

Métodos:

Clear.- Elimina todos los elementos a la vez.

En la practica para cargar o capturar sus elementos, se deberá usar el método Add, ya
que no se permite cargar directamente sus datos o elementos por el usuario del
programa, solo usar código como el siguiente;

ListBox1→Items→Add(Edit1→Text);

Recordar que se pueden usar todos los métodos, para insertar, eliminar, contar, etc.

Si los valores son de tipo “numérico”, se pueden efectuar procesos con ellos de dos
maneras:

Pasando los valores de ListBox a una variable numérica de tipo arreglo y procesando
esta ultima variable.
Usar instrucciones directamente de proceso con los métodos ToInt y ToDouble, como
se realizo con las variables/objetos derivadas de TStringList.

Si es necesario pasar el contenido de ListBox1 a ListBox2, solo usar la propiedad Text


en ambas, ej.; (ListBox2→Text=ListBox1→Text).

Ejemplo con ListBox, para este caso se pide capturar 5 edades en un ListBox, luego
sumarle 3 años a cada una usando el mismo ListBox, y desplegarlas en un segundo
ListBox convertidas a meses.

Pantalla de diseño:

Código:

void __fastcall TForm1::Button1Click(TObject *Sender)

{ ListBox1→Items→Add(Edit1→Text); }

——————————————————
{ListBox2→Items→Add(ListBox1→Items→Strings[reng].ToInt() * 12);}; }
————————————————————————— Pantalla de salida:

TAREAS
PROGRAMACION C++BUILDER 1.- CAPTURAR EN UNA LISTA LOS SUELDOS
DE 6 EMPLEADOS Y DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS
EN UN 30% 2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6
PERSONAS DESPLEGARLOS EN UNA SEGUNDA LISTA CONVERTIDOS A LIBRAS
Y ADEMAS SOLO LOS MAYORES DE 100 LIBRAS. 3.- CAPTURAR EN SUS 4
LISTAS RESPECTIVAS MATRICULA, NOMBRE Y DOS CALIFICACIONES DE 5
ALUMNOS, DESPUES CALCULAR UNA LISTA DE PROMEDIOS DE
CALIFICACIONES. 4.- CAPTURAR EN SUS LISTAS RESPECTIVAS
NUMEMPLEADO, NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5
EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA NOMINA PERO
SOLO DE AQUELLOS EMPLEADOS QUE GANAN MAS DE $300.00 A LA SEMANA.

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.

También podría gustarte