Você está na página 1de 93

C++ Builder

Aplicado
Salomn Ortiz Quintanilla
Docente del Curso de Introduccin a la Programacin
Facultad de Ingeniera de Minas
Universidad Nacional Jorge Basadre Grohmann
Tacna Per

1 Conceptos de programacin
2 Introduccin a Borland C++ Builder
3 Borland C++ Builder Aplicaciones de Consola
4 Programacion Visual
5.- Libreras Matemticas
6 Control de Programa
7 Funciones
8 Arreglos
9 Introduccin a las Bases de Datos
II C++ Builder Aplicado

CONTENIDO
1
Conceptos de Programacin
Introduccion.-
Aplicaciones de los Lenguajes de Programacin: 1
Pasos para Crear un Programa: 1
Programacin Orientada a Objetos 1
Origenes de la Programacion Orientada a Objetos. 1
Conceptos de La Programacion Orientada a Objetos. 2
Aplicacin en La Actividad Minera 3
Introduccion a Diagramas de Flujo 4
Formas de los Smbolos Usados en Diagramas de Flujo. 4

2
Introduccin a Borland C++ Builder
Estructura del C++ Builder.

8
El C++ Builder.
Requerimientos de Hardware. 8
Instalacion de C++ Builder. 8
El Ide (Entorno de Desarrollo Integrado) 8
Una Visin General del Ide de C++ Builder. 8
Menu Principal y Barra de Herramientas. 9
Paleta de Componentes. 10
El Editor de la Forma (Form).o de Formularios 10
El Inspector de Objetos (Object Inspector). 11
Ejercicio. Gestores de Eventos 13
Componentes Visuales y No Visuales 14
El Editor de Cdigo..
El Manejador de Proyectos. 15
Estructura Habitual de un Proyecto Escrito en C++ 16
Ficheros de Proyecto en C++ Builder 16
Cmo Configurar un Proyecto en C++ Builder
Como Aadir Archivos a un Proyecto. 18
Como Eliminar Archivos de un Proyecto. 18
Opciones del Proyecto. 18
Pagina de Formas. 18
Archivos Fuente Generados por C++ Builder. 20
Compilacin, Ejecucin y Depuracin de Programas. 20
Componentes 21
Pginas de Componentes 21
Pagina de Formas. 21
Archivos Fuente Generados por C++ Builder. 23

4
Programacion Visual
Elementos Bsicos
Introduccin 123
Ejemplo de Modelo de Solucion 124
Variables 124
Tipos de Datos 125
Operadores Aritmeticos 125
Operador Cast 127
Jerarquia de Operaciones 128
Creando un Nuevo Proyecto. 128
Como Funcionan Los Eventos. 131
Eventos del Mouse. 131
Eventos del Teclado. 132
Eventos de Sistema. 133
Message Boxes 134
La funcin MessageDlgPos( ) 138

______________
Indice III
El Input Dialog Box 139
La funcin InputQuery( ) 139
Entradas/Salidas En Programacion Visual 140
Componente LABEL (Standard) 140
Componente BUTTON (Standard) 141
Componente EDIT (Standard) 143
Componente MASKEDIT (Adicional) 156
Uso del componente LISTBOX. 158
Componente COMBOBOX(Standard) 160
Uso del componente SCROLLBAR. 162
TRACKBAR 163
Uso del componente BITBTN. (paleta additional) 164
Uso de botones aceleradores (SPEED BUTTON). 165
Componentes de agrupamiento 165
Componente PANEL(Standard y atrs flecha negra) 165
Componente GROUPBOX(Standard) 166
Ventanas en C++Builder 166
Uso de componentes MEMO. 169
Uso del componente RICHEDIT. 171
Aplicacin de SHOWMESSAGE E INPUTBOX 173
Problemas EJEMPLO 176
PROBLEMAS PROPUESTOS 177

5
Libreras Matemticas 181
Convertir un String (cadena) a entero: ToInt( ) y viceversa
Convertir una cadena a nmero flotante
Formateando la salida de valores numricos
Usando funciones Format
Convertir Valores Numricos a String (cadenas)
Funciones Aritmticas
Valor absoluto
La function abs, labs
El mayor entero (Ceiling) de Nmeros
La Funcin ceil( ), Ceil( )
Las funciones floor y Floor
Las funciones frexp(), la frexpl(), y la Frexp()
La funcin Power (Potencia)
La Funcin pow( ) del C/C++
El Exponencial
LnXP1, Log10. Log2. LogN
La raiz cuadrada
FUNCIONES ECONOMICO FINANCIERAS
La Doble Declinacin de Balance (The Double Declining Balance)
La SLNDepreciation, SYDDepreciation
Funciones Financieras.
El Valor futuro de una Inversin
El nmero de perodos de una inversin
El Monto Pagado como Amortizacin (Amount Paid as Principal)
El Valor Presente de una Inversin
Monto pagado como inters
La Tasa de Inters
La Tasa Interna de Retorno (TIR)
Valor Presente Neto
Funciones de medicin
Pi
Ciclo (Cycle) a Radianes (Rad) y viceversa
Conversin de Grado (Degrees) a Radianes (Radians) y viceversa
Estadstica
El mximo valor de enteros
Mximo Valor y el Valor Medio (Mean) de una Serie
MinIntValue
El valor mnimo de una serie

_______________
IV C++ Builder Aplicado

La Suma de una Serie y de nmeros Enteros


Las Sumas y Cuadrados
Funciones Trigonometricas
La Funcion Coseno, Seno, Tangente y Arco Tangente
Problemas 211

6
Control de Programa
Introduccion 184
Instrucciones Condicionales 184
Condiciones Simples 185
Instruccion IF 186
Condiciones Compuestas 191
Instruccion SWITCH( ); 194
Componentes Visuales de Seleccion y Decisin 197
Uso de Cajas de Verificacion (CHECKBOX) . 197
Problemas Sugeridos 200
Uso de Botones Circulares (RADIOBUTTON). 201
Componente RADIOGROUP (Standard) 202
Problemas Sugeridos 207
Ciclos FOR 209
Ciclo WHILE 211
Ciclo DO-WHILE 213
Conclusiones Acerca de Ciclos 214
Instruccion de Salto Incondicional, Etiquetas o Goto 215
Componente MAINMENU (Standard) 215
Componente POPUPMENU (Standard) 220
Problemas Resueltos 221
La funcin SPRINTF 224
PROBLEMAS SUGERIDOS DEL CAPITULO: 227

7
Funciones
La declaracin return 231
Creacin y uso de funciones 231
Paso de argumentos 232
El programa pasa informacin a la funcin 233
Paso por referencia 234
Escritura de funciones en C++ 236
Prototipos 236
Declaracin y definicin: prototipos 237
Parmetros por defecto 241
Escritura de funciones en C++ Builder sin prototipo 242
EJERCICIOS 243
PROBLEMAS PROPUESTOS 254

8
ARREGLOS
Introduccin 260
Arreglos Tradicionales en C++ 260
Pasar arreglos a las funciones 264
Cadena o arreglo de caracteres 266
Sumar y anexar (append) cadenas: 271
Cadenas y su longitud 271
Controlando la longitud de una cadena 271
Chequeando el mismo texto 271
Pasar cadenas a las funciones 272
Arreglos tipo tabla 273
Arreglos multidimensionales 274
Inicializando arreglos multidimensionales 275
Nuevos tipos de arreglos en C++ (son CLASES e internos dentro del programa) 277
TStringList 278

______________
Indice V
-Componentes visuales de tipo arreglo 283
Componente LISTBOX (Standard) 283
Componente STRINGGRID ( adicional ) 285
Problemas resueltos 289
Problemas propuestos 293
Tablas (Continuacin) 295
Diseo y Creacin de una Tabla 295
Database Desktop 296

9
Introduccin a las Bases de Datos
Introduccin 298
Modelos de Almacenamiento de Datos 298
Tablas 299
Tablas (Continuacin) 300
Diseo Y Creacin de una Tabla 300
Database Desktop 301
Aplicaciones o Programas Con Tablas 303
Aplicaciones por Fila (Rengln) 304
Procedimiento y Componentes 304
Aplicacin por Tabla 306
Componente TABLE (En Paleta de Componentes Pgina: Data Access) 306
Componente DATASOURCE (en Data Access) 306
Componente DBGRID (en Paleta de Componentes Pgina Data Controls) 306
Procesos Bsicos 307
Operaciones con Campos 307
Bsquedas 309
Filtros 310
Grficos o Imgenes 311
Impresin o Reportes 312
QREPORT 312
Impresin de Toda la Tabla 315
Problemas Sugeridos 317

_______________
VI C++ Builder Aplicado

Resumen

Con C++ tenemos una poderosa herramienta para la construccin de aplicaciones;


todos estamos de acuerdo.

Si ahora le anexamos como parte de su estructura docenas de los objetos mas


utilizados por todos los desarrolladores, encontramos un software que facilita la
construccin de aplicaciones, por lo que es an mas poderoso y efectivo; ahora el
desarrollador se tiene que preocupar por que sus funciones asociadas a los objetos
que seleccione para su aplicacin hagan lo que se desea que realicen, y no se tiene
que preocupar por como lograr la visualizacin en pantalla.

La creacin de botones, mens, ventanas de dialogo, barras de estado, la


presentacin de campos tipo memo, la visualizacin de directorios, la presentacin
de imgenes, secuencias de impresin, y muchas ms cosas que comnmente se
realizan con demasiadas lneas de cdigo, las podr tener con solo elegir un
componente que C++ Builder le ofrece.

Veamos la facilidad con que podemos utilizar estos componentes.

______________
1
Conceptos de programacin
INTRODUCCION.- Un lenguaje de programacin es el que se utiliza para definir una secuencia de
instrucciones para su procesamiento por una computadora. Es complicado definir qu es y qu no es un
lenguaje de programacin. El programa est escrito en un cdigo o lenguaje que solo la computadora puede
comprender.

Aplicaciones de los lenguajes de programacin:

a.- Uso cientfico.-


b.- Procesamiento de datos.-
c.- Procesamiento de texto.-
d.- Inteligencia Artificial.-
e.- Programacin de sistemas.-

PASOS PARA CREAR UN PROGRAMA:

1. Anlisis y Conocimiento del Problema, nos proporciona una mejor comprensin de los procedimientos
que debemos realizar para la elaboracin del programa.

2. Preparacin de los Diagramas de Flujo y/o Seleccin del algoritmo.- Un buen diagrama de flujo dibujado,
har mucho ms fcil escribir el programa. Para un trabajo complejo, se podrn requerir algoritmos, los
mismos que debern insertarse en los diagramas de flujo y/o pseudocdigos detallados y de alto nivel.

3. Escritura del Programa.- Los enunciados del lenguaje de procedimientos se escriben en forma que
complementen los diagramas de flujo. Deben ser verificados para estar seguros que se han seguido las
reglas en el uso del lenguaje y las restricciones de la computadora.

4. Depuracin y Correccin del programa para la entrada.-, despus de organizar una solucin y bosquejar
detalles del algoritmo, deben localizarse y corregirse todos los errores inevitables.

5. Compilacin.- Es un programa utilizado en lenguajes de alto nivel que permite traducir el programa escrito
en lenguaje de procedimiento a lenguaje de maquina.

6. Produccin.-. El programa terminado, es puesto a disposicin del usuario para su utilizacin

7. Mantenimiento.- Es la parte ms importante que consiste en realizar un seguimiento del programa para
estudiar su comportamiento durante su utilizacin. Este seguimiento permite actualizar y mejorar el
programa de acuerdo a las necesidades del usuario

Programacin Orientada a Objetos

El trmino Programacin Orientada a Objetos (POO), hoy en da ampliamente utilizado, es difcil de definir,
ya que no es un concepto nuevo, sino que ha sido el desarrollo de tcnicas de programacin desde
principios de la dcada de los setenta, aunque sea en la dcada de los noventa cuando ha aumentado su
difusin, uso y popularidad. No obstante, se puede definir POO como una tcnica o estilo de programacin
que utiliza objetos como bloque esencial de construccin.

Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos
de un objeto se les conoce como miembros; las funciones que operan sobre los objetos se denominan
mtodos y los datos se denominan miembros datos.

1.1 ORIGENES DE LA PROGRAMACION ORIENTADA A OBJETOS.

1.a Etapa. Lenguajes Ensambladores.


La unidad de programacin es la instruccin, compuesta de un operador y los operandos. El nivel de

-1-
2 C++ Builder Aplicado Ing. Ortiz
abstraccin que se aplica es muy bajo.

2.a Etapa. Lenguajes de Programacin: Fortran, Algol, Cobol.


Los objetos y operaciones del mundo real se podan modelar mediante datos y estructuras de control
separadamente. En esta etapa el diseo del software se enfoca sobre la representacin del detalle
procedimental y en funcin del lenguaje elegido. Conceptos como: refinamiento progresivo, modularidad
procedimientos y programacin estructurada son conceptos bsicos que se utilizan en esta etapa. Existe
mayor abstraccin de datos.

3.a Etapa.
Se introducen en esta etapa los conceptos de abstraccin y ocultacin de la informacin.

4.a Etapa.
A partir de los aos setenta se trabaja sobre una nueva clase de lenguajes de simulacin y sobre la
construccin de prototipos tales como Simula-70 y basado en parte de ste, el Smalltalk. En estos
lenguajes, la abstraccin de datos tiene una gran importancia y los problemas del mundo real se
representan mediante objetos de datos a los cuales se les aade el correspondiente conjunto de
operaciones asociados a ellos. Trminos como Abstraccin de datos, objeto, encapsulacin entre otros, son
conceptos bsicos sobre la que se fundamenta la POO.

1.2 CONCEPTOS DE LA PROGRAMACION ORIENTADA A OBJETOS.


La POO representa una metodologa de programacin que se basa en las siguientes caractersticas:

1) Los diseadores definen nuevas clases (o tipos) de objetos.


2) Los objetos poseen una serie de operaciones asociadas a ellos.
3) Las operaciones tienden a ser genricas, es decir, operan sobre mltiples tipos de datos.
4) Las clases o tipos de objetos comparten componentes comunes mediante mecanismos de herencia.

Objeto: Una estructura de datos y conjunto de procedimientos que operan sobre dicha estructura. Una
definicin ms completa de objeto es: una entidad de programa que consiste en datos y todos aquellos
procedimientos que pueden manipular aquellos datos; el acceso a los datos de un objeto es solamente a
travs de estos procedimientos, nicamente estos procedimientos pueden manipular, referenciar y/o
modificar estos datos.

Para poder describir todos los objetos de un programa, conviene agrupar stos en clases.
Clase: Podemos considerar una clase como una coleccin de objetos que poseen caractersticas y
operaciones comunes. Una clase contiene toda la informacin necesaria para crear nuevos objetos.

Encapsulacin: Es una tcnica que permite localizar y ocultar los detalles de un objeto. La encapsulacin
previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulacin es
como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada.

Las principales razones tcnicas para la utilizacin de la encapsulacin son:

1) Mantener a salvo los detalles de representacin, si solamente nos interesa el comportamiento del
objeto.
2) Modificar y ajustar la representacin a mejores soluciones algortmicas o a nuevas tecnologas de
software.

Abstraccin: En el sentido ms general, una abstraccin es una representacin concisa de una idea o de
un objeto complicado. En un sentido mas especifico, la abstraccin localiza y oculta los detalles de un
modelo o diseo para generar y manipular objetos.

Una abstraccin tiene un significado ms general que la encapsulacin, pudiendo hablar de abstraccin de
datos en lugar de encapsulacin de datos.

Como resumen de los 3 conceptos expuestos anteriormente podemos decir que:

1) Los objetos son encapsulaciones de abstracciones en la POO.


2) La unidad de encapsulacin en la POO es el objeto.

Una clase es un tipo: Un objeto es una instancia de ese tipo. Adems, la clase es un concepto esttico: una
clase es un elemento reconocible en el texto del programa.

______________
Conceptos de Programacin 3

La programacin orientada a objetos, ha tomado las mejores ideas de la programacin estructurada y los ha
combinado con varios conceptos nuevos y potentes que incitan a contemplar las tareas de programacin
desde un nuevo punto de vista. La programacin orientada a objetos, permite descomponer ms fcilmente
un problema en subgrupos de partes relacionadas del problema. Entonces, utilizando el lenguaje se pueden
traducir estos subgrupos a unidades autocontenidas llamadas objetos.

Objetos: Un objeto es una entidad lgica que contiene datos y un cdigo que manipula estos datos; el
enlazado de cdigo y de datos, de esta manera suele denominarse encapsulacin.
Cuando se define un objeto, se esta creando implcitamente un nuevo tipo de datos.
Polimorfismo: Significa que un nombre se puede utilizar para especificar una clase genrica de acciones.

Herencia: La herencia es un proceso mediante el cual un objeto puede adquirir las propiedades de otro
objeto.

Aplicacin en la actividad minera


Este lenguaje de programacin nos va a servir especficamente para poder elaborar programas para nuestra
profesin en cualesquiera de sus fases que apreciamos en el siguiente cuadro

Superficie del territorio nacional


Area de la superficie del Per 1 285 216 100%
Area de la selva 704 953 54,85%
Area del Per menos rea de la selva 580 263 45,15%
Area en la cota 4000 133 718 10,40%

Superficie en la cota 4000


Area del Per menos el rea de 580 263 100%
la selva
Area a la cota 4000 133 718 23,04

ACTIVIDAD MINERA MODERNA


EXPLORACION MINERIA METALURGIA SERVICIOS COMERCIALIZACIN
GENERALES
Imgenes satlite Diseo de mina y Diseo de planta y Energa Concentrados
construccin construccin Mantenimiento
- Tolvas mecnico y elctrico Metales
-Acceso y desarrollo - Chancado Ingeniera Financiacin
- Preparacin - Molienda Logstica Logstica y transporte
Fotografa area - Explotacin - Tratamiento flotacin, Seguridad minera
- Extraccin gravimetra lixiviacin, Medio ambiente
etc. Recursos humanos
Operaciones unitarias - Despacho de concentrados
Prospec. Geolgica - perforac y voladura - Disposicin de relaves
- Carguo
Prospec. - Transporte
Geoqumica - Relleno (opcin)

Prospec. Geofsica Servicios mina


Ventilacin
Perforacin de - Drenaje y bombeo
sondajes Sostenimiento y/o
diamantinos mantenimiento de vas
Labores mineras - Comunicaciones
Muestreo

Microscopa

_______________
4 C++ Builder Aplicado Ing. Ortiz

INTRODUCCION A DIAGRAMAS DE FLUJO

La diagramacin es un mtodo para describir grficamente los pasos de un programa, el diagrama de flujo
muestra la secuencia lgica de un programa. Para hacer ms fcil la lectura del diagrama de flujo se han
asignado smbolos especiales a las diferentes operaciones que pueden presentarse en un programa
(normas ANSI).

Formas de los smbolos usados en diagramas de flujo.

Terminal de un programa

Este smbolo indica el comienzo de un programa, una interrupcin temporal o una interrupcin permanente
(fin). Si se usa para indicar el comienzo, el nombre asignado al programa debe ir entre comillas.

Direccin del diagrama de flujo

Este smbolo indica la direccin del flujo de control o proceso que el programa debe seguir a travs de sus
operaciones.

Conectores de la direccin del flujo

Dentro de la misma pgina De una pgina a otra

Estos smbolos indican la continuacin de la direccin del flujo dentro de la misma pgina, o de una a otra
pgina; se usan dentro de la misma pgina cuando la continuidad de la direccin del flujo haga el diagrama
muy confuso. Los conectores siempre se usan en pares, con el nombre o smbolo de su conexin
encerrados en l.

Z2 Z2

Bloque de entrada salida

Indica transmisin de informacin ya sea de entrada o de salida

Bloque de proceso

Este smbolo encierra uno o varios pasos de iniciacin o de clculo en el programa, en la esquina superior
izquierda del bloque se escribe rdenes descriptivas tal como: calcule o fije

Bloque de decisiones

El bloque de decisiones mostrado se usa en diagramas de flujo para indicar cuando se escoge las
ramificaciones alternas que puede tomar un programa

______________
Conceptos de Programacin 5
Bloque del ciclo DO

DO n El primer bloque simboliza el inicio del DO y el final, el punto


donde el bloque aumenta compara y repite el ciclo. Este
bloque puede estar despus del bloque de proceso.
La lnea conectora punteada se usa para encerrar todas las
instrucciones contenidas en el DO

Fin ciclo

Bloque de proceso predefinido (subrutina)

Sirve para indicar la llamada a una subrutina que se agrega al programa, este bloque significa una
transferencia de control a la subrutina cuyo nombre aparece en el bloque, una vez que se ejecuta el
subprograma el control regresa al mismo bloque. No se usa lnea alguna para mostrar este flujo de control.
El bloque adems del nombre de la subrutina tambin contiene la lista de los argumentos que se trasmiten
en la llamada.

Bloque de proceso FOR

Ciclo ITERATIVO FOR.- indica un proceso que se repite en un ciclo.

Salida hacia impresora

A continuacin vamos a ver dos ejemplos de aplicacin de los diagramas de flujo

D Dado un arreglo de N elementos, la media aritmtica se define como:


(A1 + A2 + . . . AN)/N
y la media geomtrica
N A1 . A2 .... A N

_______________
6 C++ Builder Aplicado Ing. Ortiz

El diagrama de flujo con funciones Un diagrama de flujo para imprimir los


para calcular la media aritmtica y nmeros primos menores de 400
geomtrica
INICIO
INICIO
K = 1 .... 400

Leer N A(k) = k
(A[i], I=1 . . . N)

Calculo de la media I = 2 . . 20
Aritmtica y geomtrica
No
Escribir: aritmtica, A[I] 0
geomtrica
Si
Escribir A[I]
FIN

Funcin: J = 1. . 400/I
INICIO
K=IxJ
Suma = 0 A[K] = 0
Producto = 1

I=1.. .N

Suma = Suma + A[i]


Producto = Producto * A[i] I = 21 . . 400

Si
A[I] 0
Aritmtica = Suma/N
Geomtrica = N Pr oducto No Escribir A[I]

FIN
FIN

______________
2
Introduccin a Borland C++ Builder
Una computadora es una mquina que recibe instrucciones y brinda resultados despus de llevar a cabo las
asignaciones apropiadas. Desde que es una mquina espera directivas buenas y precisas para hacer algo.

Tal como una mquina, la computadora no puede calcular lo que se desea. La computadora no piensa (a
pesar de lo que usted haya escuchado antes). Como la computadora no piensa, no puede cometer errores.

Programar computadoras es el arte de escribir instrucciones (programas) que solicita a la computadora que
haga algo (computar) y dar un resultado. Una computadora recibe instrucciones de diferentes formas,
cuatro de las cuales son particularmente importantes:

1- Las primeras instrucciones las da el fabricante de las diferentes partes del hardware tales como drivers
del microprocesador, la tarjeta madre, la disketera y del CD-ROM,etc. Estas partes las fabrican
diferentes compaas configurndolas a su manera. Por ejemplo las instrucciones dadas al
microprocesador, le dicen como llevar a cabo los clculos a que velocidad y bajo que circunstancias.

2. Una vez que se conocen las instrucciones dadas al hardware, los ingenieros del software usan esa
informacin para dar el segundo conjunto de instrucciones a la computadora. Estas instrucciones,
conocidas como sistema operativo, generalmente estn escritas por una compaa. Asimismo esta vez,
se desarrollan algunos leguajes de computadora de tal forma que los programadores pueden escribir
aplicaciones como el tercer conjunto de instrucciones. Algunos de los sistemas operativos en el mercado
son: Microsoft Windows 3.X, Corel Linux, IBM OS\2, Microsoft Windows 9X, Apple OS 10, Red Hat Linux,
Microsoft Windows Millennium, Microsoft Windows XP, Vista etc. Un sistema operativo en particular (por
ejemplo Microsoft Windows Vista) que depende de un procesador en particular (por ejemplo Intel
Pentium) es llamado plataforma

3. El actual tercer conjunto de instrucciones es dado al computador por usted, el programador, usando uno o
ms de los lenguajes que el sistema operativo que est planeando usar puede comprender. Su trabajo
consiste en escribir aplicaciones. Como programador escribe instrucciones que le digan al computador,
actualmente el sistema operativo, que si el usuario hace click derecho, muestra esto, si es doble clic
hace lo otro. Para escribir estas instrucciones llamadas programa, usted primero aprende a hablar
uno de los lenguajes del sistema operativo. Luego se torna ms creativo. Algunos de los programas de
aplicacin en el mercado son Microsoft Word, Lotus ScreenCam, Adobe Acrobat, Jasc Paint Shop Pro, etc

4. Las ltimas instrucciones son dadas por quien usa los programas de usted, o su aplicacin. Por ejemplo,
si usted ha programado Microsoft Word, usted habr dicho al computador que si un usuario hace clic en
el botn New en la barra de herramientas Estndar, quiero mostrar un documento nuevo vaco. Pero si
el usuario hace clic File -> New..., quiere decir llamar el dialogo New y tener ms opciones para crear
un nuevo documento.

El inters aqu est en el lenguaje para computadoras, desde que usted va a escribir programas. Hay
varios lenguajes, por diferentes razones capaces de hacer diferentes cosas. Ejemplo de estos lenguajes
son: Basic, C++, Pascal, etc

ESTRUCTURA DEL C++ BUILDER.


C++ es un lenguaje muy poderoso, pero, el programador debe de conocer una serie de conceptos y reglas
de uso y requiere de suficiente experiencia, y conocimiento del lenguaje cuando est programando
aplicaciones windows complejas. El hecho es: C++ es un lenguaje complejo con demasiadas reglas y
trminos confusos, y el usuario tiene adems que aprender tcnicas de programacin orientadas a objetos.

C++ Builder habilita y produce aplicaciones ejecutables bajo windows98, XP o windows NT con soporte de
32 bits; El cdigo se ejecutar mucho ms rpido.
Para ser un buen programador en C++ Builder existen distintos aspectos que se deben conocer:
El Entorno de desarrollo integrado de C++ Builder (el IDE).

-7-
8 C++ Builder Aplicado Ing. Ortiz

Los componentes disponibles para crear aplicaciones Windows, y sobre stos, sus propiedades ms
importantes, los mtodos asociados y los eventos a los que pueden responder).

Un conocimiento genrico acerca de la biblioteca de clases visuales de Borland (la VCL), en definitiva,
conocer a grandes rasgos la jerarqua de clases de la que forman parte los componentes.

Los conceptos fundamentales de la metodologa de programacin orientada a objetos (POO), el


lenguaje C++ y cmo se debe usar bajo el estilo de C++ Builder.

Ciertas tcnicas avanzadas de programacin, como pueden ser el tratamiento de excepciones, la


programacin con hebras, la construccin de componentes personalizados, la interaccin con bases de
datos, la programacin de aplicaciones para Internet..

EL C++ BUILDER.
Borland Software Corporation (anteriormente Borland International, Inc.) es una compaa de software,
ubicada en Scotts Valley, California, Estados Unidos, conocida sobre todo por sus herramientas de
programacin, especialmente Turbo Pascal que evolucion hasta el actual Delphi.

Borland naci en 1983 cuando el joven dans Anders Hejlsberg lleg a un acuerdo con Philip Khan para
vender el compilador de Pascal que Anders haba creado para ordenadores personales. Turbo Pascal fue
un compilador con un concepto de "entorno", revolucionario en aquella poca.

Borland sac ms tarde compiladores para otros lenguajes como Prolog y Basic (Turbo BASIC). Pero el
ms popular y que arraig fue el del C, Turbo C. Delphi sali en la primavera del ao 1995.

As como Delphi surge como la evolucin para MS Windows del Turbo Pascal, otro tanto sucedi con el
Turbo C que dio lugar al C++Builder. La compaa tambin lanz JBuilder, un IDE Java (1996).

En septiembre de 2006 se relanz la gama de productos Turbo (Turbo C++, Turbo C#, Turbo Delphi), como
versiones reducidas de sus herramientas estrella (Delphi, C++Builder) para Windows

El 14 de noviembre de 2006 el departamento de IDEs y compiladores (Borland Developer Tools Group) se


separ de Borland formando una nueva filial (cuyo nico accionista era Borland), llamada CodeGear.
La ltima versin es C++Builder 2009 (lanzada en 2008), de la que existen tres ediciones: Professional,
Enterprise y Architect. Est incluido en CodeGear RAD estudio 2009, junto con Delphi 2009 . La anterior
versin 2006 estuvo incluida en Borland Developer Studio 2006

C++ BUILDER PROFESIONAL. Ofrece C++ Builder con el equipo de desarrollo y otras herramientas
potentes como libreras y cdigo fuente del que puede aprender sirviendo como tutorial. Esta versin
proporciona algunas secciones especiales que probablemente no requiera inmediatamente, pero se
alegrar al familiarizarse mas con C++ builder.

REQUERIMIENTOS DE HARDWARE.
Necesita una Pc con un procesador lo suficientemente poderoso y una amplia memoria.
INSTALACION DE C++ BUILDER.

Para instalar C++ Builder en tu PC, coloca el CD ROM Borland C++ Builder en tu lector de discos compactos, no
necesitas teclear nada, automticamente el CD comienza la ejecucin.

EL IDE (ENTORNO DE DESARROLLO INTEGRADO)


IDE es el acrnimo de Integrated Development Environment o entorno de desarrollo integrado.

C++ Builder es una aplicacin Windows que proporciona un entorno de trabajo visual para construir
aplicaciones Windows que integra distintos aspectos de la programacin en un entorno unificado o
integrado. La integracin y facilidad de manejo hace que sea una herramienta indispensable para el
desarrollo rpido de aplicaciones o RAD (Rapid Application Development). Guarda una gran similitud con el
IDE de Visual Basic, aunque existen ciertas diferencias.

Una visin general del IDE de C++ Builder.


El entorno de desarrollo se divide, bsicamente, en tres partes. Una serie de ventanas, que pueden estar
visibles u ocultas, constituyen la base de C++ Builder. El aspecto de la aplicacin al inicio de una sesin de
trabajo es el mostrado en la figura 2.1.

______________
Introduccin a Borland C++ Builder 9

Barra de Ventana de Paleta de


Herramientas edicin. Componentes

Inspector de Objetos Diseo de la forma

FIG. 2.1 Ambiente de desarrollo integrado C++ Builder.

En la figura se presenta los principales elementos de C++ Builder (Ambiente de Desarrollo Integrado, por
sus siglas en Ingls IDE). Cada parte trabaja conjuntamente, diseos visuales y editor de cdigo donde la
edicin es similar a otros editores; solo que con el ambiente de desarrollo integrado, usted puede observar
realmente lo que esta construyendo al momento de crearlo.
MENU PRINCIPAL Y BARRA DE HERRAMIENTAS.
Muchas de las opciones que puedes accesar desde el men principal, estn disponibles a travs del panel
de botones aceleradores en la barra de herramientas. En general la barra de herramientas provee una
manera rpida de ejecutar operaciones del programa con un simple click del mouse.

FIG. 1.2 Men principal.


Abrir Proyecto
Grabar todos los archivos
Anexar archivo al proyecto
Seleccionar un programa de la lista de
proyectos
Seleccionar una forma de la lista de
proyectos
Ejecutar programa

Pausa mientras corres el


programa
Paso sobre lnea al depurar
Paso a funcin al depurar
Crear nueva forma
Cambio entre forma y ventana
Borrar archivo del
de edicin
proyecto
Grabar archivo
Abrirseleccionado
Archivo
FIG. 2.3 Barra de herramientas.

_______________
10 C++ Builder Aplicado Ing. Ortiz

Usted puede configurar la barra de


herramientas, seleccionndola con un click,
y nuevamente haciendo click con el botn
derecho del mouse, se activar un men, y
al elegir la opcin de Customize, tendr a su
disposicin el editor de la barra de
herramientas elegir Commands y en la
figura se elige File donde podr tomar las
propiedades que necesite para anexarla a la
barra de herramientas solamente jalndola
con el mouse al panel de la barra de
herramientas.

Si desea remover alguna propiedad de la


barra de herramientas, solamente jlelo con
el mouse fuera del panel de la barra de
herramientas y desaparecer
FIG. 2.4 Editor de la barra de herramientas.
PALETA DE COMPONENTES.
La paleta de componentes es algo como un catlogo de objetos que puedes usar de acuerdo a las
necesidades de construccin de tus aplicaciones. La coleccin de componentes que pone a nuestra
disposicin C++Builder estn agrupados en diversos folder o pestaas o pginas en la barra de
componentes:

FIG. 2.5 Paleta de componentes.


Los componentes constituyen los bloques bsicos sobre la que se construyen aplicaciones Windows con C+
+ Builder basadas en la VCL (Visual Component Library) y son la base de la VCL.

Todos los componentes (visuales y no visuales) estn accesible rpida y cmodamente gracias a la paleta
de componentes. Podemos decir que es un gran almacn de componentes listos para ser incorporados a
una aplicacin, seleccionndolo y colocndolo en un formulario.

Por conveniencia, todos los componentes disponibles se encuentran organizados en distintas pginas o
carpetas segn su funcionalidad. Cada pestaa de la paleta de componentes da acceso a un conjunto de
iconos que representan a componentes que pueden usarse para disear la aplicacin. Su aspecto es el que
mostramos en la figura 2.5.

A diferencia con Visual Basic, todos los componentes de C++ Builder se encuentran cargados por defecto,
aunque se le pueden aadir ms mediante las opciones del men de componentes (opcin Component del
men principal). Cada componente tiene asignada una pgina, por lo que el usuario no puede elegir la
ubicacin de los componentes disponibles por defecto en la paleta de componentes, aunque puede
modificar la disposicin de las pginas y aadir nuevas pginas o componentes ( Tools | Environment
Options)

Para colocar un componente en un formulario se debe seleccionar en la paleta de componentes el botn


que representa al componente y a continuacin, pinchar sobre el formulario donde se desea colocalo. Una
estrategia alternativa (y menos utilizada) es seleccionar el componente en la ventana Components, que se
abre seleccionando View | Component List.

Conocer los componentes y su filosofa de trabajo (propiedades, mtodos y eventos) es fundamental para
un programador.
EL EDITOR DE LA FORMA (FORM).o de formularios

Cuando comienzas a trabajar con C++ Builder, tu espacio de trabajo y resultados se suple por la forma
principal (Referida antes como diseo de la forma).

______________
Introduccin a Borland C++ Builder 11

FIG. Editor de la forma.


Es sobre esta forma donde se construye el programa y esta forma se convierte en ventana al momento de
ejecutarse el programa.

Es decir ser la primera ventana que el usuario ve al momento de ejecutarse el programa, su nombre es
Form1.

Esta forma o ventana es un objeto de C++, y como todos los objetos de C++ y del universo, la forma
o ventana tiene asociados propiedades y eventos.

Propiedades son todas las caractersticas particulares que diferencian un objeto de otro objeto, las
propiedades o caractersticas mas comunes son forma, tamao, color, etc., para objetos en C++, estas
propiedades se modifican o individualizan usando el Inspector de Objetos, que es la parte del programa que
las contiene.

Como hemos indicado anteriormente, es una ventana cuadriculada que sirve para disear las ventanas (o
formularios) que formarn la aplicacin (ver figura superior). Es una herramienta visual destinada a disear y
presentar la interfaz de usuario (la apariencia externa) de una aplicacin. Un formulario puede ser la
ventana principal de un programa, un cuadro de dilogo o cualquier otra ventana.

Mediante el uso del ratn podemos colocar componentes de la paleta de componentes en el rea de diseo.
Lo nico que tenemos que hacer es:
1. Buscar el componente en la paleta de componentes.
2. Pinchar sobre el componente para seleccionarlo.
3. Pinchar en el formulario: el componente ha quedado asociado al formulario.
4. Arrastrarlo hasta su posicin final.
La posicin de un componente siempre se ajusta al punto ms prximo de la rejilla para facilitar su ajuste
(su alineacin). La opciones relacionadas con la rejilla pueden modificarse en Tools | Environment Options.

Siempre hay un componente (o en su defecto, el propio formulario) activo. Visualmente se sabe cul es
porque aparece enmarcado con trazos discontnuos en el diseador de formularios. Se puede activar
cualquier componente pinchando (un slo click) sobre l.
Si se pincha dos veces en lugar de una, se activa el editor de cdigo para escribir el gestor del evento
OnClick asociado a ese componente. Si esto no es lo que queremos basta con volver a activar el
diseador de formularios y continuar con la fase de diseo. Cuando se guarde el proyecto, el cdigo
que C++ Builder ha insertado automticamente desaparecer porque no hemos introducido ningn
cdigo para ese gestor.

En ningn caso se borrar manualmente lo que C++ Builder ha insertado automticamente:


podra provocar una inconsistencia interna y hacer inaprovechable el trabajo realizado.

EL INSPECTOR DE OBJETOS (Object Inspector).

El inspector de objetos permite ver las propiedades o caractersticas de los objetos que comprendan tu
proyecto, por medio de l se pueden cambiar las propiedades de los objetos, tambin muestra los eventos
asociados a los objetos de la aplicacin.

Cuando se selecciona un objeto, el inspector de objetos automticamente cambia al contenido y


propiedades de este objeto. Si se oculta, o pierdes el inspector de objetos, lo puedes llamar oprimiendo la
tecla de funcin F11.

El inspector de objetos podra llamarse editor de objetos, por la propiedad antes mencionada de poder
modificar las propiedades de los objetos.

_______________
12 C++ Builder Aplicado Ing. Ortiz
Propiedades (Properties): Cuando se comienza un proyecto el inspector de objetos despliega las
propiedades de la forma principal como son: nombre, color, altura, ancho, posicin etc. Recordemos que
al seleccionar otro objeto, automticamente mostrar las propiedades de ese objeto.

Las propiedades son los elementos del componente que configuran su aspecto y controlan su
comportamiento.

Muchos componentes tienen propiedades en comn. Por ejemplo, todos los componentes visuales tienen
las propiedades Top y Left que controlan la posicin del componente en el formulario, tanto en tiempo de
diseo como en tiempo de ejecucin.

Hemos visto como pueden establecerse y modificarse las propiedades de los componentes en tiempo de
diseo utilizando el inspector de objetos. Las propiedades tienen, normalmente, un mtodo de acceso
asociado que se ejecuta al modificar la propiedad en tiempo de ejecucin. Para modificar una propiedad
basta (generalmente) con asignarle el nuevo valor. Al realizar un cambio, la VCL invoca el mtodo de
acceso a la propiedad. En el caso concreto de la propiedad Left, la VCL dibuja de nuevo todo el formulario
en la nueva ubicacin.

A modo de resumen, las propiedades tienen dos especificadores de acceso que se emplean al consultar o
modificar el valor de una propiedad en tiempo de ejecucin. En definitiva, hay un especificador de lectura y
un especificador de escritura.

Los especificadores de acceso asocian mtodos de lectura o de escritura (funciones, en definitiva) con las
propiedades. Al consultar o modificar el valor de una propiedad se invocan, automticamente, las funciones
respectivas asociadas:

Al asignar un nuevo valor a una propiedad se est accediendo al especificador de escritura. La VCL
comprueba si existe un mtodo de acceso asociado al especificador de escritura y si es as, lo ejecuta.
Si no existe, simplemente asigna el nuevo valor a la propiedad.
Al consultar el valor de una propiedad se est accediendo al especificador de lectura. En la mayora de
los casos el especificador de lectura no hace ms que devolver el valor de la propiedad.

Eventos (Events): Eventos,


son todos aquellos sucesos de
carcter externo que afectan o
llaman la atencin del objeto
componente, para estos caso la
forma o ventana:

1. Debe tener capacidad de


detectar el evento
2.- Aun ms importante debe
tener capacidad de reaccionar
y emitir una respuesta,
mensaje o conducta FIG. Inspector de objetos.
apropiada al evento
detectado.:

Al activar el objeto, al oprimir una tecla, al oprimir el mouse, al soltar el mouse, etc. esos eventos son
disparados con acciones del usuario, o del sistema operativo mismo. Por ejemplo el evento; al hacer click
en el mouse, se dispara o hace una accin cuando el usuario hace click con el mouse para ese objeto.
Tambin se pueden modificar las propiedades dentro de un programa, usando instrucciones apropiadas,
mismas que llevan el siguiente formato:
nomobjeto->propiedad = nvovalor;
ej.; Form2->Color=clRed;

Cuando se responde a un evento se dice que se est manipulando el evento. Los eventos se manejan
mediante los gestores o manipuladores de eventos.

La forma de tratar un evento asociado a un componente en C++ Builder es sencilla: se activa el componente
que va a responder al evento y utilizando el Inspector de Objetos (pestaa Events) se selecciona el evento

______________
Introduccin a Borland C++ Builder 13

al que debe responder y, cuando se active el editor de cdigo, se escribe el cdigo asociado al gestor del
evento.

Se dice que Windows est orientado a eventos. Esto significa que cualquier programa est condicionado por
lo eventos que ocurren en el entorno Windows. Un programa Windows est continuamente sondeando al
sistema ante la ocurrencia de cualquier evento y de ocurrir, Windows avisa al programa envindole un
mensaje. Un programa Windows est ocioso la mayor parte del tiempo esperando a que ocurra algn
evento.
Ejercicio. Gestores de eventos

Construiremos el gestor del evento asociado a modificar el componente CheckBox de forma que cuando se
active (inicialmente est desactivado) se muestren los dos botones de radio y se active el botn de OK.
Cuando se desactive, los botones de radio se volvern a ocultar y el botn de Ok se desactivar. Para ello,
escribiremos el gestor asociado al evento OnClick del componente CheckBox:
void __fastcall TMainForm::CheckBoxClick(TObject *Sender)
{
if (CheckBox->Checked == true) {
Al ejecutar el programa, cuando se activa el CheckBox
RadioButton1->Show();
produce el siguiente resultado:
RadioButton2->Show();
RadioButton1->Checked = true;
Figura E6.1. El programa al activar el CheckBox
OKButton->Enabled = true;
}
else {
RadioButton1->Hide();
RadioButton2->Hide();
OKButton->Enabled = false;
LabelOutput->Caption = "";
}
}
//--------------------------------------
Finalmente, escribiremos el gestor del evento asociado a hacer click sobre el botn OK, que est operativo
(propiedad Enabled) nicamente cuando el CheckBox est activado, y en consecuencia, cuando pueden
emplearse los botones de radio. Observar el siguiente cdigo y dos resultados de la ejecucin (figuras E6.2
y E6.3):
//------------------------------------------------------------
void __fastcall TMainForm::OKButtonClick(TObject *Sender)
{
if (RadioButton1->Checked) {
if (Edit->Text == "")
LabelOutput->Caption = "Escogi Opcin 1, Sr/Sra. desconocido/a";
else
LabelOutput->Caption = "Escogi Opcin 1, Sr/Sra. " + Edit->Text;
}
else {
if (Edit->Text == "")
LabelOutput->Caption = "Escogi Opcin 2, Sr/Sra. desconocido/a";
else
LabelOutput->Caption = "Escogi Opcin 2, Sr/Sra. " + Edit->Text;
}
}
//------------------------------------------------------------

_______________
14 C++ Builder Aplicado Ing. Ortiz

Figura E6.2. Resultado al seleccionar la opcin 1 Figura E6.3. Resultado al seleccionar la opcin 2
estando el cuadro de edicin vaco. habiendo escrito algo en el cuadro de edicin.

Componentes visuales y no visuales

Se pueden establecer muchas clasificaciones para los componentes. Una de ellas es la de visuales o
controles, frente a no visuales.

Un componente es visual cuando tiene una representacin grfica en tiempo de diseo y ejecucin
(botones, barras de scroll, cuadros de edicin, etc.), y se dice no visual en caso contrario (temporizadores,
cuadros de dilogo -no visibles en la fase de dieo-, etc). Por lo dems no existen ms diferencias entre
ellos, excepto, claro est, las derivadas de la visualizacin del componente.

Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles,
aunque en este caso su posicin es irrelevante.

EL EDITOR DE CODIGO.
La ventana de edicin de
cdigo muestra el cdigo
actual de tu aplicacin C+
+ Builder. Al aadir
objetos y hacer doble
click sobre ellos,
automticamente se
editar en la ventana de
edicin la llamada a la
funcin que asociar al
evento de ese objeto,
dejando el espacio en
blanco para que se
codifique la accin que FIG. 2.19 Ventana de edicin de cdigo.
se desee para ese
evento.
En la ventana del editor pueden "pegarse" el gestor de proyectos y el inspector de clases, aunque estas
dos herramientas pueden aparecer tambin como ventanas separadas.

o Inspector de clases: Es un navegador que muestra las clases, objetos y mtodos asociados a la
aplicacin. Aparece por defecto asociada al editor (en el Unit1.cpp o Editor, en la parte izquierda).
Para abrir esta ventana: View | ClassExplorer.

o Administrador de proyectos: Es bsicamente un navegador entre los diferentes ficheros que forman
la aplicacin. No aparece por defecto, y cuando se abre (View | Project Manager) se muestra como
una ventana independiente. En la figura mas abajo se muestra asociada al editor, en la parte superior
izquierda: En el Object Tree View, pegado.

Pulsando con el botn derecho aparece un men contextual (figura 2.19a) con algunas opciones bastante
tiles.

______________
Introduccin a Borland C++ Builder 15

Figura 2.19a. El men contextual del editor de cdigo.


A diferencia con Visual Basic, C++ Builder nos permite el acceso a la totalidad del cdigo fuente de la
aplicacin. Por esto es importante saber qu partes de ese cdigo est mantenido automticamente, y
sobre todo evitar modificarlo!!!.

El editor de cdigo est relacionado muy estrechamente con el inspector de objetos. Al hacer doble click en
un evento, el IDE genera automticamente el cdigo para la funcin manejadora para tal evento. No
tenemos que preocuparnos de cul es exactamente el prototipo que debemos de usar para la funcin que
maneje el evento, ya que este se generar correctamente en la unidad de cdigo asociada al Form actual.

Cuando queramos eliminar un manejador de evento que ha sido generado automticamente es conveniente
no borrar "a mano" la funcin. Lo mejor es borrar "el cuerpo" de dicha funcin (lo que el programador
escribe) y dejar que el resto lo elimine C++ Builder (lo que ocurrir cuando se guarde el archivo).
Ejercicio 3. Uso del inspector de objetos para escribir gestores de eventos con el editor de cdigo
Vamos a construir el gestor del evento que se genera al hacer click sobre el botn de salir. Se trata de que
al pinchar sobre este botn la aplicacin termine su ejecucin.

Seleccionar el componente ExitButton y en la pestaa Events del inspector de objetos, hacer doble click en
OnClick. El editor de cdigo muestra el siguiente cdigo, generado automticamente:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->Terminate(); // Similar a Close()
}
//---------
Ahora, generar el ejecutable y ejecutar el programa: al hacer click sobre el botn de salir, el programa deja
de ejecutarse.

EL MANEJADOR DE PROYECTOS.
Un sencillo proyecto de C++ Builder est conformado por solo una forma y su cdigo, pero en aplicaciones
muy grandes, puede conformarse un proyecto por varias formas, cdigo y varios archivos de cabecera
distintos a las libreras que por omisin ya necesita la aplicacin, por tanto un proyecto puede integrar varios
archivos.
Un proyecto es un conjunto de archivos que trabajan en equipo para crear un archivo ejecutable
independiente o una DLL. Un grupo de proyectos es un conjunto de proyectos.

Los proyectos que componen un grupo de proyectos, y los archivos que componen cada uno de esos
proyectos, es lo que presenta, en forma de rbol, el administrador de proyectos. Puede emplearse como
navegador para seleccionar el mdulo con el que se va a trabajar. Para visualizar el gestor de proyectos,
seleccionar View | Project Manager. El gestor de proyectos puede "pegarse" al editor de cdigo,
arrastrndolo hasta colocarlo sobre ste ltimo (ver figura 2.19a).
Para saber cuales son los archivos que comprende un proyecto, usaremos el manejador del proyecto, que
muestra el rbol de archivos involucrados en el orden en que fueron aadidos.

_______________
16 C++ Builder Aplicado Ing. Ortiz
Vaya a View->Project Manager y aparece la ventana

FIG. 2.20 Manejador de proyectos.


En todo momento existe un nico proyecto activo (en la figura 2.20, Project1), y ser este el que se ejecute
si elegimos la opcin Run|Run.

Los ficheros de proyecto especifican todos los recursos necesarios (ficheros .cpp, .h, ficheros de descripcin
de formularios, etc.) que se necesitan para la construccin del ejecutable. Los ficheros de proyecto tienen
extensin .bpr y el ejecutable que se genera tiene el mismo nombre que el proyecto y la extensin .exe,
lgicamente.

Todo proyecto en C++ Builder se compone, al menos, de un archivo de cdigo que contiene la funcin
principal (WinMain()). Su nombre es el nombre del proyecto, con la extensin .cpp (en la figura 2.20,
Project1.cpp). Este fichero no est, habitualmente, visible, ya que no es necesario modificarlo. Puede
abrirse en el editor de cdigo con la opcin Project|View Source.

Cualquier aplicacin tpica tendr al menos una ventana. Para cada ventana (en la figura 2.20, Form1)
habr un mdulo, formado por una pareja de ficheros: un .cpp (en la figura 2.20, Unit1.cpp) y su
correspondiente .h: en el fichero .cpp estarn los gestores de los eventos asociados a los componentes de
esa ventana y en el .h (que no se modificar, normalmente) estar la declaracin de los componentes de
esa ventana.

Adems del fichero que contiene la funcin principal, un proyecto puede tener asociados una serie de
mdulos adicionales en los cuales pueden incluirse funciones y clases de objetos, como en cualquier
aplicacin C++. Cada uno de estos mdulos estar formado por una pareja de ficheros: un .cpp y su
correspondiente .h.
Estructura habitual de un proyecto escrito en C++
Una aplicacin escrita en C++ se compone de un mdulo (fichero) que contiene la funcin main() y,
opcionalmente, de una serie de mdulos adicionales que pueden contener declaraciones de clases,
declaraciones de funciones (prototipos), definiciones de clases, etc.

Para la creacin de un ejecutable se requiere:


1. Un fichero makefile en el que se especifica la dependencia entre los diferentes mdulos y la manera en
la que se generan los mdulos objeto, bibliotecas y el ejecutable final.
2. Ejecutar el programa make para que interprete el fichero makefile y desencadene las rdenes
oportunas para la creacin del ejecutable, de acuerdo a lo especificado en el fichero makefile.
Ficheros de proyecto en C++ Builder
En C++ Builder la gestin de proyectos software se realiza automticamente y el usuario no necesita
construir el fichero makefile ni ejecutar make para obtener el ejecutable: C++ Builder se encarga de todo
sto. Para este trabajo estructura los ficheros asociados a una aplicacin en un proyecto. Se puede decir
que un fichero de proyecto es un fichero makefile. La extensin de estos ficheros es .bpr (Borland Project).

Ejemplo. A modo de ejemplo, emplearemos el proyecto Inicial, que se desarrolla en los seis
ejercicios introductorios. ANEXO4
Consiste en desarrollar una sencilla aplicacin que consta de una nica ventana. El proyecto se
llamar Inicial.bpr

En todo proyecto existe un fichero que contiene la funcin principal. En aplicaciones que hacen uso de la

______________
Introduccin a Borland C++ Builder 17

VCL la funcin main() se llama WinMain() y se aloja en un fichero cuyo nombre coincide con el del proyecto.
Habitualmente no es preciso trabajar sobre este fichero.
Si fuera preciso, para mostrar en el editor de cdigo el fichero que contiene a la funcin WinMain(),
seleccionar Project | View Source).
Ejemplo. La funcin WinMain() se alojar en el fichero Inicial.cpp

Adems, cualquier aplicacin contendr al menos una ventana. Para cada ventana existirn dos mdulos
adicionales:
1. Un mdulo con extensin .cpp con el cdigo asociado a esa ventana (usualmente contiene los gestores
de los eventos que se pueden gestionar en esa ventana).
2. Un mdulo cabecera con extensin .h que contiene la declaracin de los componentes que se incluyen
en la ventana.
Ejemplo. En este ejemplo, los ficheros asociados a la ventana principal (y nica) se llamarn
main.cpp y main.h.

Cmo configurar un proyecto en C++ Builder


El primer consejo es que cada aplicacin debera estar en un directorio propio donde se guardarn todos los
ficheros asociados a la aplicacin.

Ejemplo. Crear un directorio (p.e. Ejercicio) para guardar los ficheros asociados al proyecto.

Ahora se procede a configurar la aplicacin. Consiste, bsicamente en proporcionar nombres


significativos al proyecto y a los ficheros asociados al proyecto.

A) Si se acaba de arrancar C++ Builder aparece, por defecto aparece un formulario vaco llamado Form1
asociado al proyecto Project1.bpr.

B) Si existe un proyecto vigente, lo ms cmodo es crear una nueva aplicacin (File | New Application)
salvando, si se desea el proyecto vigente.

En cualquier caso se crean, por defecto:


1. Project1.bpr, fichero de proyecto.
2. Project1.cpp, fichero que contiene la funcin WinMain(),
3. Unit1.cpp, fichero que contiene las funciones asociadas al formulario principal (constructor de la
ventana y que posteriormente contendr, adems, los gestores de los eventos que puede gestionar), y
4. Unit1.h (especificacion de los componentes del formulario principal).
Puede comprobarse usando el gestor de proyectos (View | Project Manager).

Los pasos a seguir son los siguientes:

1. Cambiar el nombre y ttulo del formulario principal utilizando el inspector de objetos.

Ejemplo. Cambiar la propiedad Caption por Form de Prueba y la propiedad Name por
MainForm.

2. Guardar ficheros asociados a ventanas (File | Save As) en el directorio adecuado para dar nombres
significativos a los ficheros.

Ejemplo. Guardar Unit1.cpp como main.cpp. (Unit1.h cambia automticamente a main.h).

3. Guardar el proyecto: (File | Save Project As) en el directorio adecuado.

Ejemplo. Guardar Project1.bpr como Inicial.bpr. (Observar que Project1.cpp ha cambiado


automticamente a Inicial.cpp, y que ste contiene a la funcin WinMain). ANEXO 4
Comprobar que Inicial.bpr tiene la estructura de un fichero makefile.
4. Observar que el proyecto vigente se llama ahora Inicial. Podemos comprobarlo desplegando el men
Project.
5. Dar un nombre a la aplicacin y fijar un icono.
Estos datos aparecern al minimizar el programa durante su ejecucin. Selecionar Project | Options |
Application.

_______________
18 C++ Builder Aplicado Ing. Ortiz

Ejemplo. Dar como ttulo: Ejemplo inicial y seleccionar cualquier icono.

A un grupo de proyectos se le pueden aadir proyectos, archivos, formularios, mdulos... nuevos o que ya
existan.

Hemos dicho que, en definitiva, el administrador de proyectos es nicamente un organizador de archivos.


Veamos brevemente qu tipos de archivos pueden formar parte de un proyecto/grupo de proyectos, y que
cul es su cometido:

EXT Descripcin

BPR Es el archivo makefile del proyecto. Define qu y cmo se debe compilar.

CPP Archivos fuente de C++.

H Archivos de cabecera de C++.

OBJ Archivos objeto resultado de la compilacin.

EXE Es el programa ejecutable resultante.

TDS Archivos temporales para la compilacin incremental.

DFM Archivos de descripcin de formulario. Contiene los valores de las propiedades de cada
componente. Aunque est en formato binario, puede verse como texto seleccionando View as text
en el men contextual que aparece al pulsar con el botn derecho del ratn cuando se est
situado sobre el formulario.

RES Un archivo de recursos.

DSK Es el archivo que contiene la configuracin del escritorio para un proyecto.

BPG Es un archivo de grupo de proyectos. Describe qu proyectos conforman el grupo de proyectos.

HPP Archivos de cabecera creados automticamente por C++ Builder.

COMO AADIR ARCHIVOS A UN PROYECTO.

Para aadir archivos a un proyecto,


seleccione del men principal: View
Project Manager y obtendr una caja
con la informacin de los componentes
actuales del proyecto (FIG. 2.20), haga
con el proyecto seleccionado, clic botn
derecho, y saldr una ventana de adicin
Add .Existing Project. donde puede
buscar la ruta de acceso donde se
encuentre el archivo a aadir, y haga click
en el botn Abrir y obtendr ya aadido a
su proyecto el archivo seleccionado

FIG. 2.21 Ventana de adicin al proyecto.

COMO ELIMINAR ARCHIVOS DE UN PROYECTO.


Para eliminar un archivo del proyecto, abra su manejador de proyectos, seleccione el archivo que quiera

eliminar y haga click en el botn de remover archivo y ser borrado de la lista. (no de su mquina,
solo del proyecto).
OPCIONES DEL PROYECTO.

______________
Introduccin a Borland C++ Builder 19

Puede accesar a detalles del ambiente de configuracin del proyecto actual eligiendo del men principal
Project Options

Este comando abre la caja de dialogo de opciones del proyecto, toma el ambiente para cada proyecto y
puede ser accesado en cualquier momento durante el desarrollo de la aplicacin.

Puede explorar las 6 hojas para ver las opciones que estn disponibles. Al iniciar un proyecto, comienza con
la configuracin que tiene por omisin.

PAGINA DE FORMAS.

Por omisin est incluida la auto creacin de una forma, al abrir un nuevo proyecto, evitando que usted al
crear una nueva aplicacin tenga que pedir una forma. Al crear un nuevo proyecto se crea automticamente
su forma principal y su ventana de edicin de cdigo. Se puede ir a la barra de men Project Options

FIG. 2.22 Opciones del proyecto, pgina de Formas.

LA PAGINA DE APLICACIONES.

La pgina de aplicaciones contiene


3 mascaras de configuracin:

Titulo: El texto que introduzca


ser el titulo de la aplicacin y ser
desplegado con el icono cuando se
minimice la aplicacin.

Help_File: Asociar un archivo de


ayuda a su aplicacin.

Icon: El archivo ejecutable


contendr el icono que seleccione,
por omisin mostrar el de
aplicaciones C++ Builder.

FIG. 2.23 Opciones del proyecto, pgina de Aplicaciones.


LA PAGINA DE C++.
La pgina C++ es donde inicializa las opciones que desea usar para configurar su particular proyecto. Como
opciones de depuracin, optimizacin de cdigo y libreras precompiladas.

LA PAGINA PASCAL .

C++ Builder tiene un hermano mayor llamado Delphi que es una herramienta RAD. Y sus aplicaciones se

_______________
20 C++ Builder Aplicado Ing. Ortiz
construyen en lenguaje pascal. Si ha manejado Delphi, ver que el ambiente de desarrollo es prcticamente
el mismo. Puede usar funciones hechas en Delphi dentro de C++ Builder.

LA PAGINA DE ENLAZADO.

La mayora del tiempo se querr que la aplicacin genere un archivo ejecutable, en otras ocasiones querr
que su construccin sea una librera para diferentes programas, en este caso usted puede llamar a la opcin
de libreras de enlazado dinmico (DLL) y las puede generar cambiando la opcin a generar DLLs.

PAGINA DIRECTORIOS/CONDICIONAL.

Usted no necesita cambiar la configuracin en esta pagina, a menos que tenga en diferentes directorios de
los que por omisin genera la instalacin de C++ Builder.

Y debe tener cuidado en estos parmetros.

ARCHIVOS FUENTE GENERADOS POR C++ BUILDER.

Cada una de las siguientes extenciones son vitales para cualquier proyecto de C++ Builder.

Project1.bpr: Este es el archivo principal de opciones del proyecto. Un archivo .bpr se requiere en cada
aplicacin; es un archivo de texto que puede examinar eligiendo del men principal: View Project
MakeFile. Este archivo contiene instrucciones de cmo C++ Builder construir el archivo (.exe) ejecutable
para el proyecto.

Project1.Cpp: Este archivo contiene el cdigo principal de la aplicacin, comparte el mismo nombre del
proyecto, lo crea automticamente C++ Builder al darle nombre al proyecto; contiene el cdigo de iniciacin
y terminacin del programa. si quiere examinar este archivo, solo elija del men principal View Project
Source.

Unit1.cpp: Este es el cdigo que usted le da a los eventos de los objetos que tendr en su forma final, este
cdigo es el que introduce en la ventana de edicin, o en su editor de cdigo.
Unit1.h: Para cada archivo .cpp, C++ Builder
crea automticamente un .h correspondiente. El
archivo de cabecera contiene la declaracin de la
forma y menciona a C++ Builder la lista de
componentes y los eventos que tendr la
aplicacin.

Unit1.dfm: El archivo .dfm contiene la


informacin, definicin y declaracin de la forma y
otros detalles importantes como: tamao, color,
ttulos, fondos etc. as como detalles del resto de
los componentes utilizados en la forma.

La extensin .dfm indica que este archivo oculta


los datos de la forma en formato binario. Este
archivo no se puede leer, pero puede convertirlo
para observar su contenido, solo seleccione la
forma (form1), y con el botn derecho del mouse
haga click y saldr un men de opciones, escoja
View as text, para ver la informacin de su forma.
Y de igual manera, para regresar a verlo como
forma, seleccione con el botn derecho del mouse,
escoja View as Form, y regresar a su forma.
FIG. 2.24 Ver la forma como texto

Unit1.obj Cuando se compila el proyecto se crea el archivo binario con extensin .obj.
Cada aplicacin contendr un archivo .obj, este archivo cambiar cada vez que se reconstruya el proyecto.

Project1.exe o Project1.dll: Este es el archivo final segn se halla elegido en su proyecto, el .exe podr
ejecutarse, y los dll son libreras dinmicas que pueden utilizarse desde otros programas.

______________
Introduccin a Borland C++ Builder 21

Project1.dsk: Contiene la informacin de la configuracin que tena su hardware al momento de crear o


finalizar su proyecto, para al momento de ejecutarse lo haga sobre la misma configuracin.

Project1.il?: Al ver la extensin .il? indica que el archivo es usado al enlazar, C++ Builder usa una
tecnologa de compilacin muy rpida, lo que hace que la compilacin o recompilacin de sus proyectos sea
en cuestin de segundos.

Compilacin, ejecucin y depuracin de programas.

El objetivo final es la creacin de un programa ejecutable correcto que funcione bajo Windows. El ejecutable
se construye tomando como referencia los ficheros que forman el proyecto activo. Para esta tarea se utilizan
los mens Project y Run (figura 2.25).

En la compilacin se trata de la obtencin del programa ejecutable (extensin .EXE). Las operaciones
asociadas a este objetivo se encuentran en el men que se despliega al seleccionar la opcin Project del
men principal (figura 2.25), y las ms importantes son:
Figura 2.25. Submens Project y Run del men principal.
Compile Unit. Compila el modulo
fuente activo (extensin .CPP) Project Run
generando un fichero objeto
(extensin .OBJ).

Make. Genera el fichero ejecutable a


partir de los ficheros objeto asociados
al proyecto recompilando nicamente
los mdulos fuente que se hayan
modificado desde la ltima vez que se
compilaron.

Build. Genera el fichero ejecutable a


partir de los ficheros objeto asociados
al proyecto recompilando todos los
mdulos fuente, aunque no se hayan
modificado desde la ltima vez que se
compilaron.

Si durante la compilacin se detectaran errores, se mostraran en el editor de cdigo y se puede acceder


directamente a las lneas de cdigo en las que se han detectado para facilitar su correccin.
Para ejecutar el programa basta con pinchar sobre el botn correspondiente de la barra de herramientas o
seleccionar la opcin Run | Run.

C++ Builder proporciona facilidades para la depuracin de programas, seleccionables al desplegar el men
Run (figura 2.25). Las ms importantes son:

Step Over F8. Ejecuta instruccin a instruccin el programa, pero ejecuta las llamadas a funciones
como una instruccin ms, sin mostrar la ejecucin de las instrucciones de las funciones.

Trace Into F7. Ejecuta instruccin a instruccin el programa, incluidas las instrucciones de las
funciones llamadas.

Run to Cursor F4. Ejecuta desde el principio del programa hasta la lnea en la que est situada el
cursor.

Para que la depuracin sea ms completa y verstil se incorporan las siguientes opciones en el mismo
men:

Evaluate/Modify Ctrl+F7. Evaluar expresiones que involucren a las variables y modificar los valores
de las variables.

Add Watch Ctrl+F5. Visualizar el contenido de una variable permanentemente.

Add Breakpoint. Aade un punto de ruptura en la lnea en la que est situado el cursor. de modo

_______________
22 C++ Builder Aplicado Ing. Ortiz
que cuando se ejecute el programa se detendr su ejecucin al llegar al siguiente punto de ruptura.

Componentes
Los componentes son unos elementos genricos con una funcionalidad muy concreta, cuya nica finalidad
es la reutilizacin. Cada uno de ellos est destinado a realizar una tarea tpica en una aplicacin.

Un componente de la VCL es una clase que caracteriza a un control de Windows agregando propiedades,
mtodos y gestores de eventos a cada control.

La filosofa de los componentes en C++ Builder es exactamente la misma que en Visual Basic. Esto es tanto
as que algunos componentes pueden utilizarse en ambos entornos (los componentes ActiveX).

Pginas de componentes
Como ya hemos comentado anteriormente los componentes se agrupan en la paleta de componentes en
distintas pginas, a saber:

Standard: Incluye los componentes comunes y ms habituales de los programas Windows.

Additional: Los componentes de esta pgina son controles especializados. propios de C++ Builder.

Win32: Componentes de cuadros de dilogo propios de Windows 95/NT.

System: Esta pgina incluye controles muy especializados para interaccin con el sistema.

Internet: Componentes para distintos protocolos de acceso a Internet.

Data Access y Data Controls: Componentes especializados para acceso a bases de datos.

Midas: Esta pgina incluye componentes que permiten el desarrollo de aplicaciones multicapa con
MIDAS.

Decision Cube: Incluye componentes para realizar anlisis multidimensionales de datos con objeto de
tomar decisiones.

QReport: Componentes para disear rpidamente informes y resmenes.

Dialogs: Contiene cuadros de dilogo comunes en aplicaciones Windows listos para usar.

Win 3.1: Componentes propios de Windows 3.1, la mayora de ellos se mantienen en C++ Builder slo
por compatibilidad con versiones anteriores.

Samples: Componentes de demostracin (cmo hacer componentes personalizados).

Active X: Los componentes de esta pgina son objetos Active X, creados por otros desarrolladores
puede que utilizando otros lenguajes de programacin.

C++ Builder soporta docenas de componentes. Una descripcin de las pginas.

Standard: Esta tabla contiene los objetos para hacer eficaces y elegantes tus aplicaciones Windows,
incluye componentes para desplegar y editar texto, botones, barras de estado y mens.
Standard.- Frames, MainMenu, PopupMenu, Label, Edit, Memo, Button, CheckBox, RadioButton, ListBox,
ComboBox, ScrollBar, GroupBox, RadioGroup, Panel. (En el Help Buscar por ejemplo: Standard page
component para tener una descripcin de cada uno de ellos)

FIG. 2.6 Paleta de componentes Standard.

______________
Introduccin a Borland C++ Builder 23

Esta pgina incluye los componentes comunes y ms habituales de los programas Windows
Un marco (Frame), como una forma, es un contenedor para otros componentes. En
algunas formas, sin embargo, un marco es ms como un componente hecho a la
medida que una forma (form1). Los marcos pueden ser guardados en la paleta de
Frames Componentes para el aprovechamiento fcil, y pueden estar anidados dentro de
formas (forms), otros marcos, u otros objetos del contenedor. Los marcos (Frames)
son tiles para organizar grupos de controles que son usados en multiples lugares en
su aplicacin.
Crea una barra de men (que acta como men principal). Para aadir opciones al
MainMenu men y a los submens, aadir el componente MainMenu al formulario y hacer doble
click sobre l para acceder al diseador de mens.
Crea mens desplegables (tambin llamados mens contextuales) que aparecen
PopupMenu cuando se pincha con el botn derecho del ratn. Para configurar el men
desplegable, proceder como con el componente MainMenu.
Muestra texto que el usuario no puede seleccionar ni manipular. Se usa para mostrar
Label textos de ttulo, encabezamientos, o incluso para mostrar resultados, ya que puede
establecerse su valor (propiedad Caption) en tiempo de ejecucin.
Muestra un rea de edicin de texto en la que el usuario puede introducir y modificar
Edit
una nica lnea de texto.
Muestra un rea de edicin de texto en la que el usuario puede introducir y modificar
Memo
mltiples lneas de texto.

Button Crea un botn que el usuario puede pulsar para efectuar acciones.
Presenta una opcin binaria (Si/No - Verdad/Falso) de manera que cuando se
selecciona este control, se permuta entre ambos valores. Este control puede
CheckBox emplearse para crear un grupo de estos controles que representen elecciones que no
sean mutuamente exclusivas (al contrario que los RadioButton, por lo que el usuario
puede seleccionar ms de una opcin en un grupo.

Presenta una opcin binaria (Si/No - Verdad/Falso) de manera que cuando se


selecciona este control, se permuta entre ambos valores. Este control puede
RadioButton
emplearse para crear un grupo de estos controles que representen elecciones
mutuamente exclusivas (al contrario que los CheckBox, por lo que el usuario puede
seleccionar slo una en un grupo.
ListBox Muestra una lista de eleciones que est acompaada de una barra de scroll.
Muestra una lista de eleciones. Es un control que combina aspectos de un
ComboBox componente ListBox y de un componente Edit: el usuario puede introducir datos en el
rea de edicin o seleccionar en el rea de lista.
Prociona una forma cmoda de modificar el rea visible de un formulario o de una
ScrollBar lista. Tambin puede usarse para "desplazarse" en un rango -amplio- de valores por
incrementos prefijados.
GroupBox Contenedor para agrupar opciones relacionadas en un formulario.

RadioGroup Contenedor que crea un grupo de componentes RadioButton en un formulario.


Contenedor que puede contener otros componentes en un formulario. Se usa para
Panel crear barras de herramientas y lneas de estado. Los componentes que contiene estn
asociados al panel.
Use el editor Action List al tiempo del diseo para aadir accin a un componente
Action List
TActionList.

Additional: La tabla de adicionales contiene algunos de los mejores y variados de la paleta de


componentes, como mapas de bits, botones aceleradores y componentes de apariencia.

FIG. 1.7 Paleta de componentes Additional.

_______________
24 C++ Builder Aplicado Ing. Ortiz

BitBtn Crea un botn que puede contener un grfico (tipo "bitmap").


Crea un botn que puede contener un grfico pero no contiene texto. Estos
SpeedButton botones se agrupan, normalmente, dentro de un panel para crear una barra de
herramientas.
Permite la introduccin y edicin de datos, como lo hace el componente Edit,
MaskEdit salvo que proporciona la posibilidad de especificar formatos particulares, como
cdigos postales o nmeros de telfono.
StringGrid Crea una rejilla que puede usarse para mostrar cadenas en filas y columnas.

DrawGrid Crea una rejilla que puede usarse para mostrar datos en filas y columnas.

Image Muestra un "bitmap" o un icono.

Dibuja figuras geomtricas, como elipses, crculos, rectngulos, cuadrados o


Shape
rectngulos y cuadrados con bordes redondeados.
Crea lneas o cuadros con apariencia tridimensional y como si estuviera
Bevel
esculpida (alto o bajorrelieve).
Crea un contenedor redimensionable que muestra barras de scroll cuando sea
ScrollBox
necesario.
Muestra una lista de eleciones que est acompaada de una barra de scroll. Es
CheckListBox muy parecido al componente ListBox salvo que cada elemento de la lista tiene
asociado un CheckBox.
Aade un divisor a un formulario entre dos componentes alineados que permite
Splitter al usuario redimensionar los controles en tiempo de ejecucin pinchando y
arrastrando la lnea de divisin.
StaticText Es un componente de texto no editable, como el componente Label, slo que
Solo VCL StaticText tiene su propio gestor de ventana.
ColorBox Un combo box que permite usar seleccin de colores
Solo VCL
Chart
Un visualizador equivalente a TTable.
Solo VCL
Un cuadro de dialogo que maneja y muestra las acciones estandar y
ActionManager
configuradas contenidas en una aplicacin. Con el editor del ActionManager
Solo VCL
puede configurar mens
ActionMainMenuBar
Una barra de men principal que muestra el men y el submen
Solo VCL
ActionToolBar Una barra de herramientas que muestra las acciones y los botones de la barra
Solo VCL de herramientas
CustomizeDlg Un cuadro de dilogo que permite ea los usuarios configurar los mens y las
Solo VCL barras de herramientas que son construidas con el editor del ActionManager

Win32: Estos componentes permiten el acceso a los controles de usuario-interface de Windows32. Uno de
los principales es la vista del rbol de directorio, (conocido como windows explorer), control de pgina, etc.

FIG. 2.8 Paleta de componentes Win32.

TabControl Divisor de pginas mutuamente exclusivas accesibles por pestaas.

Se emplea para construir cuadros de dilogo con mltiples pginas dentro de la


PageControl
misma ventana.
ImageList Una lista de imgenes es una coleccin de imgenes del mismo tamao accesibles
mediante un ndice. Se emplea para gestionar eficientemente grandes conjuntos de
imgenes o "bitmaps". Paracrear una lista de imgenes, aadir un componente

______________
Introduccin a Borland C++ Builder 25

ImageList al formulario y hacer doble click sobre l para acceder al editor de listas de
imgenes.
Es una especializacin del componente Memo: proporciona la posibilidad de 1)
RichEdit modificar propiedades acrerca de la fuente de letra (familia, tamao, color, negrita o
(solo VCL) itlica), 2) modificar propiedades de formato (alineamiento, tabulaciones, indentacin
o numeracin), y 3) marcacin de texto y arrastre del mismo.
Es una barra que muestra un rango y un indicador que muestra el valor actual y que
TrackBar
permite modificarlo.
Es una barra rectangular que se va "llenando" de izquierda a derecha. Se emplea
ProgressBar
para mostrar cmo progresa una operacin.
UpDown
Son botones para incrementar y decrementar valores.
(solo VCL)
HotKey
Asigna una combinacin de teclas a cualquier componente.
(solo VCL)
Animate Una ventana que se emplea para mostrar ficheros AVI (Audio Video Interleaved) o
(solo VCL) series de "bitmaps" dispuestos en secuencia, como una pelcula.
DateTimePick Muestra una lista de elecciones que est acompaada de una barra de scroll para
er seleccionar fechas. La fecha puede seleccionarse desde el calendario o empleando
(solo VCL) la barra de scroll o las flechas.
TreeView
Muestra un conjunto de objetos estructurados jerrquicamente.

ListView Permite ver una lista en columnas.

HeaderContr Muestra un encabezamiento sobre columnas de texto o nmeros. Este control puede
ol dividirse en varias partes para proporcionar cabeceras para mltiples columnas.
rea para indicar el estado de acciones o textos de pista amplios ("Hints") en la parte
StatusBar
baja de la ventana.
Gestiona botones rpidos y otros controles, colocndolos adecuadamente ajustando
ToolBar
su posicin y tamao.
CoolBar Muestra una coleccin de controles "CoolBand" dentro de bandas que pueden
(solo VCL) moverse y redimensionarse.

System: Proporciona controles individuales para seleccionar archivos, directorios o drives.

FIG. 2.9 Paleta de componentes System.

Es un componente no visual que acta como temporizador. Se emplea para


ejecutar una serie de instrucciones (mediante el gestor del evento OnTimer) que
Timer
deben ejecutarse cuando se alcanza el valor especificado como intervalo
(propiedad Interval).
Especifica un rea rectangular sobre un formulario que delimita la zona en la que
PaintBox
puede dibujarse desde una aplicacin.
Muestra una ventana con botones (similares a los de cualquier reproductor de
MediaPlayer
audio o video) para reproducir video o sonido.
OleContainer Crea un rea de cliente OLE (Object Linking and Embedding) en un formulario.
Establece una conexin cliente a una aplicacin servidora DDE (Dynamic Data
DdeClientConv
Exchange).
Especifica los datos del cliente DDE (Dynamic Data Exchange) que se transfieren
DdeClientItem
en una conversacin DDE.
Establece una conexin servidora a una aplicacin cliente DDE (Dynamic Data
DdeServerConv
Exchange).
Especifica los datos del servidor DDE (Dynamic Data Exchange) que se
DdeServerItem
transfieren en una conversacin DDE.

FastNet .-

_______________
26 C++ Builder Aplicado Ing. Ortiz

FIG. 2.10 Paleta de componentes FastNet.


ClientSocket Aade la forma para una aplicacin TCP/IP cliente.
ServerSocket Aade una forma para iniciar una aplicacin en un servidor TCP/IP
NMDayTime Consigue el dia y hora de un servidor internet/intranet.
NMEcho Envia texto a un internet echo servidor, y lo reexpide a usted.
Consigue informacin acerca de un usuario de un servidor internet usando el Finger
NMFinger
protocol descrito en RFC 1288.
Implementa protocolos de archivos de.transferencia Invisible ActiveX control da fcil
NMFTP
acceso Internet File Transfer Protocol (FTP).
Invisible ActiveX control implementa el HTTP Protocolo Cliente, permitiendo al usuario
NMHTTP
directamente recuperar HTTP y.
Envia mensajes simples de texto ASCII a travs de internet o intranet usando el
NMMsg
protocolo TCP/IP .
NMMsgServ Recibe mensajes enviados con el TNMMsg
Invisible ActiveX Client Control allows applications to access Networking News Transfer
NMNNTP
Protocol (NNTP) news servers. It provides news reading and posting capabilities.
Invisible ActiveX control that retrieves mail from UNIX or other servers supporting POP3
NMPOP3
protocol.
NMUUProcessor MIME encodes or UUEncodes files and decodes MIME-encoded or UUEncoded files.
ActiveX control that gives applications access to SMTP mail servers and mail posting
NMSMTP
capabilities.
NMStrm Sends streams to a stream server across the internet or an intranet.
NMStrmServ Receives streams sent with the TNMStrm component.
NMTime Gets the date and time from Internet time servers, as described in RFC 868.
Invisible WinSock ActiveX Control provides easy access to User Datagram Protocol
(UDP) network services. It implements WinSock for both client and server and
NMUDP
represents a communication point utilizing UDP network services. It can also be used to
send and retrieve UDP data.
Serves as a base for creating controls for dealing with other protocols, or for creating
PowerSock
custom protocols.
Serves as a base class for developing multi-threaded internet servers, such as custom
NMGeneralServer
servers or servers that support RFC standards.
Invisible ActiveX control implements an HTML viewer, with or without automatic network
retrieval of HTML documents, and provides parsing and layout of HTML data, as well as
HTML
a scrollable view of the selected HTML page. The HTML component can also be used
as a nonvisual HTML parser to analyze or process HTML documents.
Decodes URL data into a readable string, and encodes standard strings into URL data
NMURL
format.

Componente BDE Data Access y Data Controls: Se pueden accesar bases de datos y hacer consultas
dentro de las aplicaciones que construyas con las facilidades que permite estos 2 grupos de objetos.

FIG. 2.11 Paleta de componentes BDE y Data Access.

Acts as a conduit between a dataset component such as TTable and data-aware components
DataSource
such as TDBGrid.
Retrieves data from a physical database table via the BDE and supplies it to one or more data-
Table aware components through a DataSource component. Conversely, it also sends data received
from a component to a physical database via the BDE.
Uses SQL statements to retrieve data from a physical database table via the BDE and supplies
Query it to one or more data-aware components through a TDataSource component. Conversely, uses
SQL statements to send data from a component to a physical database via the BDE.

______________
Introduccin a Borland C++ Builder 27

Enables an application to access server stored procedures. Sends data received from a
StoredProc
component to a physical database via the BDE.
Sets up a persistent connection to a database, especially a remote database requiring a user
Database
login and password.
Provides global control over a group of Database components. A default TSession component is
automatically created for each C++Builder database application. You must use the TSession
Session
component only if you are creating a multithreaded database application. Each database thread
requires its own session component.
Copies a table structure or its data. Can be used to move entire tables from one database
BatchMove
format to another.
Lets you use cached updates support with read-only datasets. For example, you could use a
TUpdateSQL component with a "canned" query to provide a way to update the underlying
UpdateSQL datasets, essentially giving you the ability to post updates to a read-only dataset. You associate
a TUpdateSQL component with a dataset by setting the dataset's UpdateObject property. The
dataset automatically uses the TUpdateSQL component when cached updates are applied.

FIG. 2.12 Paleta de componentes Data Controls.


Data-aware custom grid that enables viewing and editing data in a tabular form similar
DBGrid to a spreadsheet. Makes extensive use of TField properties (set in the Fields editor) to
determine a column's visibility, display format, ordering, and so on.
Data-aware navigation buttons that move a table's current record pointer forward or
DBNavigator backward. The navigator can also place a table in Insert, Edit, or Browse state, post
new or modified records, and retrieve updated data to refresh the display.
DBText Data-aware label that displays a field value in the current record.
DBEdit Data-aware edit box that displays or edits a field in the current record.
DBMemo Data-aware memo box that displays or edits BLOB text in the current record.
Data-aware image box that displays, cuts, or pastes bitmapped BLOB images to and
DBImage
from the current record.
DBListBox Data-aware list box that displays a scrolling list of values from a column in a table.
Data-aware combo box that displays or edits a scrolling list of values from a column in
DBComboBox
a table.
Data-aware check box that displays or edits a Boolean data field from the current
DBCheckBox
record.
DBRadioGroup Data-aware group of radio buttons that display or set column values.
DBLookupListBox is a data-aware list box that derives its list of display items from
either a Lookup field defined for a dataset or a secondary data source, data field, and
key. In either case, a user is presented with a restricted list of choices from which to
DBLookupListBox
set a valid field value. When a user selects a list item, the corresponding field value is
changed in the underlying dataset. To specify list box items using a lookup field, the
dataset to which you link the control must already define a lookup field.
DBLookupComboBox is a data-aware combo box that derives its drop-down list of
display items from either a lookup field defined for a dataset or a secondary data
source, data field, and key. In either case, a user is presented with a restricted list of
DBLookupComboBox choices from which to set a valid field value. When a user selects a list item, the
corresponding field value is changed in the underlying dataset. To specify combo box
list items using a lookup field, the dataset to which you link the control must already
define a lookup field.
DBRichEdit A multiline edit control that can display and edit a rich text memo field in a dataset.
A DBCtrlGrid control displays multiple fields in multiple records in a tabular grid format.
DBCtrlGrid
Each cell in the grid displays multiple fields from a single record.
Place the component on a form and right-click it to display the third-party developer's
DBChart
Help topics.
Qreport: (o Quick Reports) Esta pgina incluye componentes para disear rpidamente informes y
resmenes. Se pueden incorporar cabeceras y pies de pginas, resmenes, agrupaciones con cabeceras y
pies, etc. Estos informes pueden realizarse a partir de cualquier fuente de datos: TTable, TQuery, listas,
matrices, etc. arrays. Puede usarse un visalizador previo para comprobar los resultados. Automticamente

_______________
28 C++ Builder Aplicado Ing. Ortiz
se realizan clculos similares a como se hacen en una hoja de clculo.

FIG. 2.13 Paleta de componentes Qreport.

The basic report form on which you build all your reports. It is a visual component that
QuickRep takes the shape of the currently selected paper size. Create reports by dropping bands
and printable components on the TQuickRep component and connecting it to a dataset.
Links additional datasets into a report. Typically you would set up a master/detail
QRSubDetail relationship between table or query components and create a similar relationship with
TQRSubDetail components.
Drop bands on a TQuickRep component and set the BandType property to tell how the
QRBand
band will behave during report generation.
If you have bands with expanding components and want other components to be
QRChildBand moved down accordingly you can create a child band and put the moving components
on it. It's also useful if you have very long bands that span multiple pages.
Allows you to group bands together and provides control for headers, footers, and page
QRGroup
breaks.
Prints static or other non-database text. Enter the text to be displayed in the Caption
QRLabel
property. You can split text on multiple lines and even multiple pages.
A data-aware version of the TQRLabel that prints the value of a database field.
Calculated fields and text field types can be printed, including String fields, various
numeric fields, date fields and memo fields. Text can span multiple lines and pages.
QRDBText
You connect the component to the data field by setting the DataSource and DataField
properties. Unlike regular data-aware components, TQRDBText works even with
dataset controls disabled to improve speed.
Prints database fields, calculations, and static text. Input a valid QuickReport
QRExpr
expression in the Expression property.
Prints system information such as report title, current page number, and so on. Select
QRSysData
the data to print in the Data property. Set any preceding text in the Text property.
Prints a large amount of text that does not come from a database field. It can be static
QRMemo text or you can change it during report generation. You can set the field to expand
vertically as needed and then span multiple pages if necessary.
QRRichText Allows you to embed rich text into your report.
QRDBRichText Provides a Quick Report wrapper for accessing DBRichText fields in your reports.
QRShape Draws simple shapes like rectangles, circles, and lines on a report.
Displays a picture on a report. Supports all image formats supported by the TPicture
QRImage
class.
Imprime imagines almacenadas en campos binarios (BLOB). Imprime todos los
QRDBImage
formatos grficos soportados por C++Builder.
QRCompositeReport Permite combiner mas de un reporte junto.
QRPreview Trae una forma que le permite previsualizar un reporte en la pantalla e imprimirlo.
QRChart Le permite tomar un componente TChart y arrastrarlo a la forma Quick Report.
Dialogs: Permite hacer cajas de dialogo que agilizan el desarrollo de tus aplicaciones como el abrir y grabar
archivos, seleccionar tipos de letras, colores e impresoras y mucho ms.

FIG. 2.14 Paleta de componentes Dialogs.


Muestra una ventana de dilogo comn de Windows para seleccionar y abrir
OpenDialog
ficheros.
Muestra una ventana de dilogo comn de Windows para seleccionar y
SaveDialog
guardar ficheros.
OpenPictureDialog Muestra una ventana de dilogo modal comn de Windows para seleccionar
y abrir ficheros grphicos. Es idntica a la ventana asociada a OpenDialog

______________
Introduccin a Borland C++ Builder 29

salvo que contiene una regin para previsualizacin de imgenes.


Muestra una ventana de dilogo modal comn de Windows para seleccionar
SavePictureDialog y guardar ficheros grphicos. Es idntica a la ventana asociada a SaveDialog
salvo que contiene una regin para previsualizacin de imgenes.
Muestra una ventana de dilogo comn de Windows para especificar la
FontDialog
familia, tamao y estilo de letra.

ColorDialog Muestra una ventana de dilogo comn de Windows para especificar color.

Muestra una ventana de dilogo comn de Windows para especificar


PrintDialog
informacin de impresin.
Muestra una ventana de dilogo comn de Windows para configurar
PrinterSetupDialog
impresoras.
Muestra una ventana de dilogo comn de Windows para especificar la
FindDialog
cadena a buscar.
Muestra una ventana de dilogo comn de Windows para especificar la
ReplaceDialog
cadena a buscar y la cadena por la que se va a reemplazar.

Win31: Esta pgina incluye controles propios de Windows 3.1 para permitir compatibilidad con aplicaciones
antiguas. Muchos de estos controles tienen su versin actualizada en componentes incluidos en ina Win32.

FIG. 2.15 Paleta de componentes Win 3.1.


Estos controles no deberan usarse al desarrollar nuevas aplicaciones. En la siguiente tabla se indica qu
control debera usarse en su lugar:

Control Win 3.1 Sustituir por Pgina


DBLookupCombo DBLookupComboBox Data Controls
TabSet TabControl Win32
Outline TreeView Win32
TabbedNoteBook PageControl Win32
NoteBook PageControl Win32
Header HeaderControl Win32

Data-aware list box that displays values looked up from columns in another table at
DBLookupList
runtime.
Data-aware combo box that displays values looked up from columns in another table at
DBLookupCombo
runtime.
Creates notebook-like tabs. You can use the TabSet component with the Notebook
TabSet
component to enable users to change pages.
Outline Displays information in a variety of outline formats.
Creates a component that contains multiple pages, each with its own set of controls. Users
TabbedNotebook
select a page by clicking the tab at the top of the page
Creates a component that can contain multiple pages. Used with the Notebook
Notebook
component, it enables users to change pages.
Creates a sectioned region for displaying data. Users can resize each section of the region
Header
to display different amounts of data.
FileListBox Displays a scrolling list of files in the current directory.
Displays the directory structure of the current drive. Users can change directories in a
DirectoryListBox
directory list box.
DriveComboBox Displays a scrolling list of available drives.
FilterComboBox Specifies a filter or mask to display a restricted set of files.

_______________
30 C++ Builder Aplicado Ing. Ortiz

Samples Esta pgina incluye ejemplos de


componentes personalizados que pueden
construirse e incorporarse a la paleta de
componentes. El cdigo fuente est disponible en el
directorio \EXAMPLES\CONTROLS\SOURCE de la FIG. 2.16 Paleta de componentes Samples.
instalacin.

TrayIcon
Performance Graph
CSpinButton
CSpinEdit
CGauge
CDirectoryOutline
CColorGrid
CCalendar
IBEVentAlerter

ActiveX: Esta tabla de componentes, contiene un checador de ortografa as como objetos grficos
impresionantes. Los componentes de esta pgina son objetos ActiveX. Son aplicaciones completas y
portables creadas por otros desarrolladores.

FIG. 2.17 Paleta de componentes ActiveX.

Permite crear grficos altamente personalizados. Escoja propiedades para mostrar el panel de
Chartfx
control que le permite definer los valores, apariencia y funcionalidad de los componentes del grfico.
VSSpell Visual Speller, permite personalizar un chequeador de ortografa
F1Book Formula One, permite disear una hoja de clculo con todas sus caractersticas.
VtChart Permite crear 3D charts.
Graph Pinnacle Graph, permite crear grficos 2D.
Tambin los componentes son objetos de C++Builder y como tales tambin tienen asociados propiedades y
eventos, tales como los tiene la forma principal, solo que existen pequeas variaciones en cuanto a sus
propiedades y eventos propios con respecto a Form1.

Recordar adems, que es el Inspector de Objetos en primera instancia quien permite asociar o modificar
propiedades especificas tanto a una forma como a un componente.
Ya en segunda instancia las propiedades de formas y componentes se pueden modificar tambin
directamente dentro de un programa, usando instrucciones como las ya descritas en prrafos muy
anteriores.

______________
3
PROGRAMACION VISUAL
ELEMENTOS BSICOS
INTRODUCCION
Los nuevos sistemas de informacin son costosos en tiempos y recursos, la solucin moderna de sistemas
de informacin exigen nuevas herramientas y metodologas para resolver rpida, econmica y eficiente los
problemas de informacin planteados por las organizaciones.
C++Builder, es un compilador que permite usar cualquiera de los tres enfoques (programacin tradicional,
modular o estructurada; programacin orientada a objetos ( OOP; programacin visual), en la solucin de
problemas de informacin que puedan y deban ser resueltos empleando el computador y el lenguaje. Para
propsitos de aprendizaje usaremos el tercer enfoque, es decir programacin en ambientes visuales y
usando el lenguaje de programacin C++Builder .
En programacin visual ( que tambin es heredera de OOP ),la interfase con el usuario( pantallas) son
generadas por el propio compilador y el ingeniero de software solo se concentra en resolver el problema
planteado.

MODELO DE SOLUCION
En general un problema de informacin es posible entenderlo, analizarlo y descomponerlo en todos sus
componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su
solucin.

Una herramienta rpida que nos permite descomponer en partes un problema para su solucin, es el
llamado modelo de solucin, este consiste de una pequea caja que contiene los tres elementos ms
bsicos en que se puede descomponer cualquier problema sencillo de informacin, estas tres partes son:

a. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos
datos son almacenados internamente en la memoria del computador en las llamadas variables de
entrada.

b. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para
solucionar el problema, generalmente esta parte del modelo es una formula (o igualdad matemtica,
ej. X= y + 5).

c. LA TERCERA PARTE es el resultado o solucin del problema que generalmente se obtiene de la


parte de operaciones del modelo y dichos datos estn almacenados en las llamadas variables de
salida.

En resumen para todo problema sencillo de informacin es necesario plantearse las siguientes preguntas:

Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se
van a almacenar ?

Que procesos u operaciones debe realizar el computador para resolver el problema planteado ?

Que informacin o variables de salida se van a desplegar en pantalla para responder al problema
planteado originalmente?

Como nota importante no confundir los trminos datos, variables e informacin;

Datos se refiere a informacin en bruto, no procesada ni catalogada, por ejemplo "Tacna", "calle Zela #

- 31 -
32 C++ Builder Aplicado Ing. Ortiz
213","15 aos", " $2,520.00", etc.

Variables es el nombre de una localidad o direccin interna en la memoria del computador donde se
almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD,
SUELDO, ETC.

Informacin son datos ya procesados que resuelven un problema planteado.

EJEMPLO DE MODELO DE SOLUCION

Construir un modelo de solucin que resuelva el problema de calcular el rea de un tringulo con la formula
rea igual a base por altura sobre dos.
Variable(s) Proceso u Variable(s)
Entrada operacin salida

BASE AREA = BASE * ALTURA AREA


ALTURA 2

PROBLEMA 2.- CALCULAR EL AREA DE UN CIRCULO CON LA FORMULA

Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor,
en cambio colocar directamente su valor dentro de la formula, en la parte de operaciones del problema.

Pero recordar tambin que existirn problemas sencillos donde:

No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida.

Una formula grande o muy compleja puede ser ms segura y fcil de resolver, si es descompuesta y
resuelta en partes, juntando al final los parciales para obtener el resultado final.

Un problema puede tener ms de una solucin correcta.

El problema no esta suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y


construirlo de manera genrica.

REGLAS DE ESCRITURA DE UN PROGRAMA

Maysculas y minsculas
C++ es sensible al tamao de la letra., es diferente por ejemplo Altura de altura

Espacios en blanco
Los espacios en blanco, lneas, tabulaciones y sangrados en el programa fuente se usan a voluntad, no
afecta el programa pero si le da ms legibilidad.
El carcter de separacin de instrucciones es el punto y coma

Los parntesis
Proporcionan mxima prioridad en el uso de operadores

Comentarios

Los comentarios comienzan con el smbolo // y se le suele llamar comentario de una lnea, termina con el
retorno de carro. Vlido en C++

Ejemplos:
// este es un programa de ejemplo.
// en este programa visualizamos la palabra bienvenido

El otro tipo de comentario que soporta, llamado del viejo estilo C.


El comentario va entre los separadores /* y */, y puede tener varios renglones (se usa para bloques
grandes).

______________
Introduccin a las Bases de Datos 33

Identificadores

Son los nombres elegidos para variables, constantes, funciones, clases y similares, se forman segn las
siguientes reglas:
1.- El primer carcter debe ser una letra o un subrayado "_", el resto del nombre puede contener letras
maysculas o minsculas o dgitos.
2.- La longitud permitida vara y puede ser hasta 32 caracteres.
3.- Los identificadores que comienzan con dos subrayados estn reservados para uso interno del
compilador C++
4.- C++ es sensible al tamao de las letras: MAS es diferente de ms.
5.- Algunos identificadores se designan como "palabras reservadas", y no se pueden utilizar.

Identificadores vlidos Identificadores no vlidos


temperatura 2temperatura Comienza con un dgito
tasaderetorno tasa de retorno tiene caracteres en blanco
_mensaje _ _ mensaje contiene dos subrayados
mas_ventas new es palabra reservada.

Palabras reservadas
No se puede utilizar como identificadores:
auto do goto short typedef
break double if signed union
case else int sizeof unsigned
char enum long static void
const extern register struct volatile
continue float return switch while
default for

Otras son:
Asm catch class delete friend
inline new operator private protected
public template this throw try
virtual

VARIABLES Y CONSTANTES

Variables

Identificadores son conjuntos de letras y/o nmeros que se utilizan para simbolizar todos los elementos que
en un programa, son definibles por el usuario (programador o ingeniero de software) del mismo, como son
las variables donde se almacenan datos, funciones( pequeos mdulos con cdigo), etiquetas, clases,
objetos, etc. Un programa debe DEFINIR a todas las variables que utilizar , antes de comenzar a usarlas,
a fin de indicarle al compilador de que tipo sern , y por lo tanto cuanta memoria debe destinar para albergar
a cada una de ellas.

En C++Builder un identificador es una palabra compuesta de letras y/o nmeros de hasta 32 caracteres
significativos, empezando siempre con una letra.

Una variable se define como un identificador que se utiliza para almacenar todos los datos generados
durante la ejecucin de un programa.

Existen ciertas reglas en cuanto a variables:

Claras y con referencia directa al problema.

No espacios en blanco, ni smbolos extraos en ellas.

Se pueden usar abreviaturas, pero solo de carcter general.

No deben ser palabras reservadas del lenguaje.

Ejemplos de buenas variables:

_______________
34 C++ Builder Aplicado Ing. Ortiz
Nombre, Edad, SdoDiario, IngMensual, Permetro, Calif1, etc.

Constantes
Sintaxis:
const <variable name> [ = <value> ] ;
<function name> ( const <type>*<variable name> ;)
<function name> const;

Descripcin

Use el modificador const para que el valor de la variable sea inmodificable.

Use el modificador const para asignar un valor inicial a una variable que no puede ser cambiada por el
programa. Cualquier asignacin futura a una const resulta en un error del compilador.

Un apuntador const no puede ser modificado. Veamos los siguienters ejemplos:

const float pi = 3.14;

const maxint = 12345; // Cuando se usa sola, const es equivalente a int.


char *const str1 = "Hello, world"; // pointer o apuntador a una constante

char const *str2 = "Borland International"; // un apuntador a una constante de tipo cadena

Dadas estas declaraciones las siguientes sentencias son ilegales:

pi = 3.0; // Asigna un valor a una const

i = maxint++; // Incrementa una const.

str1 = "Hi, there!" // Apunta str1 a hacer algo ms.

Como dichas constantes son guardadas en memoria de la manera que al compilador le resulta ms eficiente
suelen aparecer ciertos efectos secundarios, a veces desconcertantes, ya que las mismas son afectadas
por las reglas de RECONVERSION AUTOMATICA DE TIPO vista previamente.

Constantes simblicas
Por lo general es una mala prctica de programacin colocar en un programa constantes en forma literal
(sobre todo si se usan varias veces en el mismo) ya que el texto se hace difcil de comprender y an ms de
corregir, si se debe cambiar el valor de dichas constantes.
Para dar un smbolo a una constante bastar, en cualquier lugar del programa (previo a su uso) poner la
directiva: #define, por ejemplo:

#define PI 3.1416 // notar que no lleva el signo =


o ms completo:

#define LONGITUD 50

Luego en el programa podemos tener:


int relacion[ LONGITUD] ;
int notas[ LONGITUD ];

El especificador constante
Una constante es una entidad cuyo valor no se puede modificar, y en C++ la palabra reservada const se
utiliza para declarar una constante. A continuacin veremos la utilidad de las constantes, por ejemplo
tenemos dos arrays con 30 elementos
int relacion[30] ;
int notas[30];
sin embargo en C++ no se puede utilizar una variable como ndice de un array por tanto el programa no

______________
Introduccin a las Bases de Datos 35

compila, por lo que una forma de salvar este problema es utilizando la directiva #define para crear constante
con nombre

//Ejemplo
{
const float pi = 3.14159;
float Radio, Area;
Edit1->Text = Ingrese el valor del radio ";
Radio =Edit2->Text.ToDouble();
Area = pi*Radio*Radio;
Edit3->Text = Area;
}
//---------------------------------------------------------------------------

Pero C++ usa la palabra reservada const seguida por el tipo de datos, el identificador y una inicializacin;
por ejemplo:

const int LONGITUD = 50;


En C++ la definicin de una constante sirve para reemplazar a #define,
as en lugar de escribir: se debe escribir:
#define elongmax 234 const elongmax = 234
#define pi 3.141592 const double pi = 3.141592
char una_linea[elongmax] char una_linea[elongmax]

En C++ una constante debe ser inicializada cuando se declara, ejemplo:

const int x = 91

La construccin const de C++ sustituye ventajosamente a las directivas #define que servan para declarar
constantes simblicas en ANSI C

En el caso del crculo tenemos:


const float pi = 3.14159;

TIPOS DE DATOS
A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un
tipo de dato especfico. Un tipo de dato define todo el posible rango de valores que una variable puede
tomar al momento de ejecucin del programa y a lo largo de toda la vida til del propio programa.

Los tipos de datos ms comunes en C++Builder son:


Nombre Tipo Tamao Rango
Enteros
int 32 bits -2,147,483,648 a 2,147,483,647
short int 16 bits - 32,768 a 32,767
long 32 bits - 2,147,483,648 a 2,147,483,647
unsigned int 32 bits 0 a 4,294,967,295
unsigned long 32 bits 0 a 4,294,967,295
enum 16 bits - 2,147,483,648 a 2,147,483,647

Reales
float 32 bits 3.4 x 10-38 a 3.4 x 10+38(6 dec)
double 64 bits 1.7 x 10-308 a 1.7*10+308(15 dec)
80 bits 3.4 x 10-4932 a 1.1 x 10+4932
long double

Carcter
char 8 bits - 128 a 127
unsigned char 8 bits 0 a 255
AnsiString *** cadena de caracteres
*** AnsiString no es propiamente un tipo de dato, sino una clase que se especializa en al almacenamiento y

_______________
36 C++ Builder Aplicado Ing. Ortiz
manipulacin de datos de tipo string, es decir, como clase ya contiene toda una serie de mtodos
(procedimientos y funciones) que pueden usar directamente las variables(objetos) que se declaren de tipo
AnsiString, como en el siguiente ejemplo;
// rea de declaracin
AnsiString alfa, beta;
int a;
// carga normal de variables strings (que antes no se poda hacer directamente en C o C++)
alfa = "UABC";
beta = "50";
// procesos con las variables ya considerndolas como objetos de la clase AnsiString estos procesos antes
ocupaban una librera especial llamada <string.h>

alfa = alfa.LowerCase(); primero las convierte a minsculas y luego se cargan a la misma variable.

a = beta.ToInt(); convierte el contenido a enteros.

Interesante este nuevo tipo (Clase) AnsiString y tambin interesante estos dos mtodos ( LowerCase() y
ToInt() ), el resto de mtodos, se deben buscar en la ayuda del C++Builder (solo abrir folder o libro
llamado "referencia del programador", pedir ndex y luego escribir AnsiString ).

OPERADORES ARITMETICOS

Un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica
o lgica.
C++Builder reconoce los siguientes operadores aritmticos:

Operador Operacin
+ Suma
- Resta
* Multiplicacin
/ Divisin
% Residuo o Mdulo

Como notas importantes a recordar siempre;

En problemas de divisin entre enteros, C++ trunca la parte residual, es decir;


// rea de declaracin de variables
float a;
// rea de operaciones
a = 10 / 4;
// rea de despliegue de resultados
desplegar a; --- En pantalla sale ( 2.000000 )
El problema no es el tipo float, sino que por definicin de la divisin entre enteros C++ siempre trunca la
parte residual, mas adelante se indica como se resolver este problema.

El operador (%) devuelve el residuo entero de una divisin entre enteros, ej.:
// rea de declaracin
int alfa;
// rea de operaciones
alfa = 23 % 4;
// rea de despliegue

desplegar alfa; --- El resultado en pantalla es 3

Otro ejemplo;
alfa = 108 % 10;
desplegar alfa; -- El resultado en pantalla es 8
Para resolver los problemas de potencias y races, se usan ciertas instrucciones especiales que proporciona

______________
Introduccin a las Bases de Datos 37

el lenguaje, llamadas funciones matemticas, en C++ existe toda una librera de instrucciones o funciones
matemticas.

Recordar que todas las funciones reciben uno o ms datos o valores y regresan siempre un resultado, una
de estas funciones matemticas es:
#include <math.h>
double pow(double base, double exp);
Esta funcin ocupa dos valores o datos( base y exp) ambos de tipo double, y regresa un resultado tambin
de tipo double, ejemplo;

- resolver el problema de calcular


#include <math.h>
// rea de declaracin de variables
double base, exponente, potencia;
// rea de asignacin o carga o inicializacin de
// variables
base=5;
exponente=3;
// rea de operaciones
potencia =pow( base, exponente);
// Despliegue
cout<< potencia;
desplegar potencia; El resultado en pantalla es 125.000000000

Para resolver el problema de races, se aprovecha una de las ms elementales y conocida de las leyes de
exponentes que dice:

Es decir una raz cualquiera se puede transformar a una potencia con un exponente fraccionario.
Ejemplo:

Problema y = 3 x esto es equivalente a entonces


// Usando la funcin pow
y= 3*pow(x, 0.5);

En este ejemplo se esta dando por supuesto que no interesa el tipo de dato que requiere la funcin
pow() para trabajar correctamente

OPERADOR CAST

Se puede forzar un dato, variable o una expresin a convertirse o cambiarse a un nuevo tipo de dato.

El operador cast realiza este proceso, es decir convierte datos, variables o expresiones a un nuevo tipo de
dato, su formato es:

nvotipo (dato , var, exp);


Ejemplo:
// declaracin
int alfa;
// Asignacin
alfa=20;
// Cambio de tipo
float (alfa);
Ejemplo:
int (3.1416);
en este ejemplo se est convirtiendo un float a int, recordar que en este caso ya no se tendrn los
decimales.

Como nota importante este operador resuelve los dos problemas pendientes:

_______________
38 C++ Builder Aplicado Ing. Ortiz
a. El de la divisin entre enteros.

b. El tipo de dato especifico que requieren las funciones.


Ejemplos:
a) // Declaracin
float alfa;
// Operacin
alfa = float (23)/5;
// Pero en estos casos es preferible
alfa=23/5.0;
En toda divisin recordar agregar a uno de los dos valores el (.0), solo que los dos elementos sean variables
entonces usar el operador cast con una de ellas.
b)// Declaracin
double potencia;
// Operacin
potencia = pow ( double (5), double (3));

Como se observa en el ejemplo, se puede usar pow(), directamente con los datos, argumentos o
parmetros requeridos , si estos son numricos, pero transformndolos con el operador cast.
Esto tambin va a permitir evaluar expresiones matemticas de manera mas directa y sencilla, solo
recordando usar un pow() por cada potencia y cada raz de la ecuacin, ejemplo:

Sea
Dentro de un programa esto se resuelve con;

// rea de declaracin de variables


double y, x;
// rea de captura de datos
capturar el valor de x;
// rea de operaciones
y = 3 * pow(x, double (3)) - pow(x, (1/3.0)) + 4 * pow(x, double(2) );
// rea de despliegue de resultados
desplegar x, y

JERARQUIA DE OPERACIONES

El problema de no tomar en cuenta la jerarqua de los operadores al plantear y resolver

una operacin casi siempre conduce a resultados muchas veces equivocados como estos:
Ejemplos:

a. 2+ 3* 4 = 20(incorrecto) = 14 (correcto)

Recordar siempre, que antes de plantear una frmula en un programa se deber evaluar contra el siguiente:

Orden de operaciones:

1.- Parntesis
2.- Potencias y races
3.- Multiplicaciones y divisiones
4.- Sumas y restas
5.- Dos o ms de la misma jerarqua u orden, entonces resolver de izquierda a derecha

Nota: Si se quiere alterar el orden normal de operaciones, entonces usar parntesis.

Nota: Tampoco es bueno usar parntesis de ms en una operacin, esto solo indica que no se evalu bien
la formula, como en el siguiente ejemplo;

aqu los parntesis estn de ms, porque por orden de operaciones, multiplicacin y divisin tienen la

______________
Introduccin a las Bases de Datos 39

misma jerarqua y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten parntesis
ni que sobren parntesis.

Declaracin de variables
El programa usa variables para almacenar informacin. La mayora de los programas en C++ utilizarn los
tipos de variables descritos en la tabla de Tipos de Datos. Antes de usar la variable habr que declararla,
es decir introducirla en el programa; para esto se debe saber el tipo de sta y el nombre que el programa
usar para referirse a ella
// Ejemplo programa para multiplicar
#include <vcl.h>
#pragma hdrstop
#include "Ecuacion1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int multiplicador,multiplicando, resultado; /* defino como un enteros */
multiplicador = 1000 ; /* les asigno valores */
multiplicando = 2 ;
resultado = multiplicando * multiplicador ;
Edit1->Text = resultado; /* muestro el resultado */
}
//---------------------------------------------------

En las primeras lneas de texto dentro del fastcall respectivo defino mis variables como nmeros enteros , es
decir del tipo "int" seguido de un identificador (nombre) de la misma . Este identificador puede tener la
cantidad de caracteres que se desee; siendo por lo general n igual a 32 .

Por ejemplo la siguiente declaracin enuncia a un grupo:


double sueldo, descuento_afp, casas_comerciales, seguro;

Inicializacin de variables
Las variables pueden tambin ser inicializadas en el momento de definirse .
int multiplicador = 1000, multiplicando = 2, resultado;
De esta manera el EJEMPLO anterior podra escribirse:

EJEMPLO
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int multiplicador=1000,multiplicando=2, resultado; // defino como un enteros
resultado = multiplicando * multiplicador ;
Edit1->Text = resultado; // muestro el resultado
}
//---------------------------------------------------
Obsrvese que en la primer sentencia se definen e inicializan simultneamente ambas variables.

Asignacin de valores a la variable

a) Directa en el programa, con el signo de igualdad

variable = valor asignado

El valor asignado puede ser una constante, una variable o una expresin. En este caso, si es

_______________
40 C++ Builder Aplicado Ing. Ortiz
necesario el valor asignado se convierte al tipo de dato de la variable

b) durante corrida mediante un componente de entrada de datos en C++ que veremos ms adelante

CREANDO UN NUEVO PROYECTO.


Este capitulo lo iniciaremos con un pequeo ejemplo que muestre los pasos a seguir para crear un nuevo
proyecto y cambiar las propiedades de la forma, y conforme avancemos se mostrarn algunas de las
propiedades de la paleta de componentes, se mostrar lo esencial para el uso todos ellos.

Comencemos con una nueva forma:

1.- Elija del men principal File New Application, para tener una forma en blanco y un nuevo
programa.

2.- Seleccione la forma haciendo clic con el mouse en ella. Observe el inspector de objetos, si no est
presente, presione F11.

3.- En el inspector de objetos localice la propiedad


Caption (TITULO), seleccione esta propiedad y
cambie Form1 por el titulo: Mi primer Programa
C++ Builder.

4.- Presione la tecla de funcin F9 lo que ejecutar


su programa y tendr el siguiente resultado; La
ventana de la forma con el texto: Mi primer
Programa C++ Builder.
FIG. Ejecucin de un programa sin cdigo en C++
Usted ha hecho cambios a las propiedades de la Builder.
forma usando el inspector de objetos.
A continuacin se da un breve repaso por las propiedades de la forma mostrados en el inspector de objetos.
LAS PROPIEDADES
HINT Y SHOWHINT. La
propiedad Hint es un
pequeo texto que
mostrar un mensaje al
usuario cada vez que pase
lentamente el puntero del
mouse sobre la forma
(form1), en este espacio
puede introducir cualquier
texto, y si quiere
activarlo, tendr que activar la propiedad ShowHint (cambiarlo a true), con esto el texto que haya tecleado
en Hint, aparecer cuando pase el puntero sobre la forma.

LAS PROPIEDADES HEIGHT Y WIDTH. Cuando se cambia el tamao de una


forma, los valores numricos de esta propiedad cambian automticamente.
Usted puede dar dimensiones exactas a su forma dando valores numricos (en
pixeles) a estas propiedades Largo y Ancho, que tambin las puede cambiar
con otras dos propiedades que darn posicin en su ventana principal a las
dimensiones escogidas para su forma; estas propiedades son Top(Nmero de
pixeles desplazados desde la parte superior.) y Left( Nmero de pixeles
desplazados desde la parte izquierda de su monitor.)

LA PROPIEDAD VISIBLE. Esta propiedad permite elegir entre 2 valores para


su objeto, true o false, cuando la propiedad visible esta en verdadero(true), el
usuario puede observar la forma (o el objeto) cuando la aplicacin se est
ejecutando, si la propiedad visible se encuentra en falso(False), al momento de
la ejecucin de la aplicacin el usuario no podr ver este objeto.

LA PROPIEDAD COLOR. La propiedad color cambia inmediatamente la


apariencia de la forma al color seleccionado.

______________
Introduccin a las Bases de Datos 41

LAS PROPIEDADES SETTYPE. Una de las formas de distinguir que


propiedades pueden tener un tipo inicial, es que en la parte izquierda de
las propiedades tienen un signo (+). Esto es que tienen varias
caractersticas ms que puede adoptar esta propiedad, usted puede
verlas y modificarlas seleccionando la propiedad y elegir de el men de
opciones que se presentar la opcin expand.

LA PROPIEDAD FORMSTYLE. Tiene dos opciones principales,


fsMDIform y fsMDIChild; usted puede desear en su aplicacin que una
forma contenga a otras, este tratamiento de formas, llamado Interfase
Documento Mltiple, hace muy fcil este tipo de aplicaciones, veamos
cuan sencillo es hacer un ejemplo:
1.- Seleccione del men de principal File New Application; Para obtener una nueva aplicacin.

2.- Con el inspector de objetos, ponga un nuevo


nombre a su forma como lo hizo en el ejemplo
anterior a: Forma Principal, y en la propiedad
FormStyle cambie a la opcin fsMDIForm.

3.- Aada una segunda forma al proyecto eligiendo


del men principal File New Form y
aparecer una nueva forma.

4.- Con el inspector de objetos cambie ahora a esta


forma la propiedad caption, por el siguiente texto:
Ventana secundaria,(Puede tener varias ventanas
secundarias) y en la propiedad FormStyle cambie FIG. Interfase Documento Mltiple.
a la opcin fsMDIChild. Y es todo lo que necesita
para correr esta simple aplicacin.

5.- Oprima la tecla de funcin F9 para ejecutar la aplicacin MDI.


Cuando corra la aplicacin obtendr el siguiente resultado (figura derecha).
La ventana hija ser parte permanente de la aplicacin hasta que se cierre, puede minimizar mover o
maximizar la ventana secundaria dentro de la ventana principal.

LA PROPIEDAD BORDERICONS. Esta propiedad permite especificar el tipo de borde e iconos que llevar
en la barra de titulo su aplicacin.

Subpropiedad Que sucede cuando se selecciona la subpropiedad.

Cuando selecciones con un clic con el botn derecho del mouse cualquier parte de la barra
BiSystemMenu de titulo de la forma, presenta un men de control con las opciones que permite la
configuracin de su proyecto.
Coloca en la barra de titulo un pequeo icono que permite
minimizar la forma con que se est trabajando al
BiMinimize
momento de ejecutarse.

Coloca en la barra de titulo un pequeo icono que permite


maximizar la forma con que se est trabajando al
BiMaximize
momento de ejecutarse.

Coloca un botn "?" en la forma. Cuando el usuario hace


BiHelp clic proporciona una pequea definicin del objeto en
contexto sensitivo.

Si usted selecciona en todas las opciones False, no tendr forma de cerrar su aplicacin por medio de estos
componentes as que tendr que implementar una forma de cerrar y salir.

LA PROPIEDAD BORDERSTYLE. Estas subpropiedades estn divididas en la que permiten que la forma
se escale y las que no.

_______________
42 C++ Builder Aplicado Ing. Ortiz

Subpropiedad Que sucede cuando se selecciona la subpropiedad.

No le permite al usuario ni mover, ni cerrar, ni maximizar ni


escalar. Deber implementar una forma de cerrar su
BsNone
aplicacin ya que esta opcin no muestra una barra de
titulo..
Permite mover, minimizar o maximizar pero no escalar.
BsSingle.
Solo permite mover, ni maximizar ni minimizar ni escalar.
BsDialog
Solo permite mover y escalar, no permite ni maximizar ni
BsSizeWin
minimizar ni escalar.
Solo permite mover, ni maximizar ni minimizar ni escalar.
BsToolWindow
BsSizeable Permite todas las acciones, mover, escalar, minimizar,
maximizar.

LA PROPIEDAD ICON. Por omisin si no se selecciona ninguno, el C++ Builder presenta el icono de las
aplicaciones C++ Builder.
Pero se puede cambiar haciendo
doble clic en del Object
Inspector, aparece la ventana
Picture Editor, click en el botn
Load, para seleccionar de algn
directorio el archivo del icono
deseado. esta propiedad busca
archivos con extensin .ico.

C++ Builder tiene una biblioteca de archivos .ico en el subdirectorio:

Archivos de programa\Borland \Cbuilder6\ Examples\icons. Y


presenta un editor de iconos (Picture Editor).

Tambin puede experimentar con esta herramienta:


seleccionando del men principal: Tools Image Editor.
Aparece la persiana donde se puede cargar, editar o modificar un
cono

LA PROPIEDAD POSITION. Determina donde ser desplegada la forma en la pantalla de la computadora


posicin (x,y).
Que sucede cuando se selecciona la subpropiedad.
Subpropiedad
Aparece la forma en la posicin en la que estaba al
PoDesigned
momento de correr el programa.
Si se escala se escalar de manera de quedar en el
PoScreenCenter centro de la pantalla.

Deja la forma en la posicin en que la coloque el


PoDefault usuario.

Deja la forma en la posicin en que la coloque el


PoDefaultPosOnly usuario.

Deja la forma en la posicin en que la coloque el


PoDefaultSizeOnly usuario.

______________
Introduccin a las Bases de Datos 43

LA PROPIEDAD WINDOWSTATE. Esta propiedad muestra las caractersticas de la forma al momento de


ejecutarse
La forma aparece de la manera en que se defini al
WsNormal momento de crearse (dimensiones y posicin).

Al momento de ejecutar la aplicacin, la forma aparecer


WsMinimized minimizada en su pantalla.

Al momento de ejecutar la aplicacin, la forma abarcar la


totalidad de la pantalla.
WsMaximized

COMO FUNCIONAN LOS EVENTOS.

Los eventos son acciones relacionadas a los objetos y su comportamiento que llevarn a cabo durante la
ejecucin del programa.

Eventos Del Mouse.

OnClick: Este evento ocurre cuando el usuario hace clic dentro del rea de la forma los siguientes pasos
muestran un ejemplo de cmo se usara este evento.
1.- Elija del men principal File New Application.
2.- En la hoja de eventos del inspector de objetos haga doble clic en el
evento OnClick y el editor de cdigo presentar la estructura de la funcin
llamada Form1Click y el cursor se coloca para que pueda introducir la lista
de instrucciones.
3.- Teclee la siguiente instruccin en el editor de cdigo.
ShowMessage("ha ocurrido un Clic del Mouse");
de manera que su editor de cdigo luzca as:

4.- Presione la tecla de funcin F9 para ejecutar la aplicacin.

5.- Haga clic en la forma y observe el resultado del programa.

FIG. Resultado de ejecutar el programa


OnClick.

FIG. Edicin de una lnea de cdigo en el evento OnClick


de la Forma principal.
Para experimentar otro evento del mouse siga el siguiente ejemplo.

1.- Elija del men Principal File New Application.

2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.

_______________
44 C++ Builder Aplicado Ing. Ortiz

3.- En la hoja de eventos del inspector de objetos haga doble clic en


el evento OnMouseDown para obtener la funcin en el editor de
cdigo. Introduzca en la funcin el siguiente cdigo. Caption = Se
realiz un clic con el Mouse;

4.- Haga doble clic en el evento OnMouseUp y teclee en el editor de


cdigo la instruccin Caption = ;

5.- Haga doble clic en el evento OnMouseMove e introduzca el


siguiente cdigo en esa funcin.
MessageBeep(0);

6.- Presione la tecla de funcin F9 para ejecutar su programa.


El resultado es que cuando arrastra el mouse sobre la forma se escucha un sonido, cuando se hace clic
sobre la forma en la barra de titulo aparece: Se realiz un clic con el Mouse y se borra.

EVENTOS DEL TECLADO.

Estos eventos suceden cuando el usuario presiona un determinada tecla, experimente con el siguiente
aplicacin.

1.- Elija del men principal File New Application.

2.- Si no esta presente el inspector de objetos presione la tecla de funcin


F11.

3.- En la hoja de eventos del inspector de objetos haga doble clic en el


evento OnKeyPress y teclee el siguiente cdigo:
if((Key >='0') && (Key <= '9'))
MessageBeep(0);
4.- Presione la tecla de funcin F9 para ejecutar la aplicacin.

El resultado es que si se oprime una tecla del 0 al 9, se escuchar un beep.

EVENTOS DE SISTEMA.

No todos los eventos ocurren por acciones que realice el usuario, algunos son ejecutados por el sistema
operativo Windows.

Evento Cuando ocurre Para que se usa.

Cuando la forma se activa. Mostrar la forma.


OnActivate
Despus de cerrar la forma. Cierra la aplicacin libera los recursos que fueron
OnClose usados por la aplicacin.

Cuando se intenta cerrar la Checa que los datos se hallan grabado antes de
OnCloseQuery forma. cerrar las bases de datos.

Cuando se crea la forma Inicializar el cdigo.


OnCreate
Cuando se para la ejecucin Guarda informacin en variables temporales.
OnDeactivate
de una aplicacin.
Al intentar cerrar la aplicacin. Libera memoria utilizada en la aplicacin.
OnDestroy
Cuando la forma necesita ser Redibuja y muestra datos en el rea que se
OnPaint redibujada. redibuj.

Cuando cambia el tamao de Mover o escalar la forma.


OnResize
la forma

______________
Introduccin a las Bases de Datos 45

Siga el siguiente ejemplo de uso del evento OnResize.

1.- Elija del men principal File New Application.

2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.

3.- En la hoja de eventos del inspector de objetos haga doble clic en el evento OnResize

4.- En la hoja standard de la paleta de componentes haga clic en el


componente Label (Etiqueta) y colquelo en la forma haciendo otro
clic.

5.- Use el inspector de objetos para cambiar el titulo (Caption) de


Label1 a Usando una etiqueta

6.- Seleccione la forma haciendo clic en ella.

7.- En el editor de cdigo haga doble clic en el evento OnResize y escriba el siguiente cdigo.
Label1->Left = (ClientWidth/2) (Label1->Width/2);
Label1->Top = (ClientHeight/2) (Label1->Height/2);
8.- Presione la tecla de funcin F9 para ejecutar el programa.

Si usted escala la forma, ver que el texto siempre aparecer en el centro de la forma.

Uso de la propiedad ClientHeight

Se coloca en la forma un Button1, se hace doble click y en el editor se escribe:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->ClientHeight = Form1->ClientHeight/2;
}
Este ejmplo reduce la altura de la forma (Form1) a la mitad cuando se hace click en el Button1.

ENTRADAS/SALIDAS EN PROGRAMACION VISUAL


Entradas o capturas de datos y salidas o despliegues de informacin o resultados son de los procesos ms
comunes en cualquier tipo de problema de informacin, estos procesos o instrucciones varan de acuerdo a
los lenguajes y ambientes de programacin a usar.

El lenguaje y ambiente de programacin a utilizar, es de tipo visual, y muchos de los problemas asociados a
entradas y salidas se encuentran ya resueltos por el propio compilador.

El ambiente de construccin de programas a usar, es el siguiente:


SOLO CARGARLO EN PANTALLA EJECUTANDO EL C++Builder, QUE SE ENCUENTRA EN LA
BARRA DE START DE WINDOWS.

Sus elementos bsicos ya los


vimos en el anterior captulo

Para incorporar un componente


a una forma solo basta
seleccionarlo con un click en su
icono y luego colocar el cursor
dentro de la forma en el lugar
donde se quiere que aparezca y
volver a hacer un click.

Tambin los componentes son objetos de C++Builder y como tales tambin tienen asociados propiedades y

_______________
46 C++ Builder Aplicado Ing. Ortiz
eventos, tales como los tiene la forma principal, solo que existen pequeas variaciones en cuanto a sus
propiedades y eventos propios con respecto a Form1.

Recordar adems, que es el Inspector de Objetos en primera instancia quien permite asociar o modificar
propiedades especficas tanto a una forma como a un componente.

Ya en segunda instancia las propiedades de formas y componentes se pueden modificar tambin


directamente dentro de un programa, usando instrucciones como las ya descritas en prrafos muy
anteriores.

Analizaremos ahora los dos primeros componentes, que tambin se usarn para construir o disear nuestro
primer programa en C++Builder y Visual.

COMPONENTE LABEL (Standard)

Este componente se utiliza para desplegar textos o mensajes estticos dentro de las formas, textos tales
como encabezados, solicitud al usuario del programa para que proporcione algn dato o informacin (edad,
dame sueldo, etc.), en cierta forma hace las funciones de printf, cout, writeln, print, display, etc., pero solo
cuando se consideran en su parte de mensajes.

Tambin es un objeto en C++Builder y por tanto tiene asociados sus propias propiedades y eventos, al
mismo tiempo como se est usando dentro del objeto form1, muchas propiedades que se definan para el
objeto Form1, el objeto Label1 las va a heredar.

Si bien es cierto que el objeto se llama Label, pero cuando se ponen dentro de una forma C++Builder los va
numerando automticamente, si se ponen tres Labels en Form1, ellos se llaman o simbolizan o se procesan
o programan con Label1, Label2, Label3.

Es la propiedad Caption, la que lleva el contenido del mensaje que se quiere desplegar en la pantalla, solo
click derecho a un lado de la propiedad Caption en el Inspector de Objetos, teniendo seleccionada la caja
Label1 en la forma y escribir el texto indicado.

COMPONENTE BUTTON (Standard)

Es el componente principal de la forma, contiene el cdigo principal del programa y su activacin por el
usuario provoca que se realicen los principales procesos del problema planteado (aqu es donde se
capturan datos, se realizan operaciones, etc.).

De este componente se maneja su propiedad Caption para etiquetarlo con la palabra "OK" o "ACEPTAR" o
"EXE" , y su evento OnClick para activarlo, es en dicho evento donde se construye el cdigo del programa.

Recordar que aunque no es un componente necesario en los programas, ya que el cdigo se puede asociar
o pegar a cualquier evento de cualquier forma, o componente del programa, Microsoft ya acostumbr a
todos los usuarios al botn OK, de acuerdo, OK.

Este botn tambin puede activar su evento OnClick, cuando el usuario presione la tecla <ENTER>, solo
poner la propiedad Default en true, en este caso el botn de rdenes, se le conoce como botn de default.

Igualmente puede activar su evento OnClick cuando el usuario, presione la tecla <ESC>, solo poner la
propiedad Cancel en true, a este caso se le conoce como "CANCEL BUTTON".

PRACTICA
Construir un primer programa que consiste en una forma que contenga los cinco datos ms importantes de
un automvil, y uno de esos datos solo deber aparecer cuando el usuario haga click en el botn de
ejecucin o de orden o de OK.

Para este programa se ocupa, una forma, dos componentes labels para encabezados apropiados al
problema, 10 componentes labels para textos y datos, un componente Button.

Para el ltimo componente Label su propiedad Caption se dejara en blanco o vaca para que sea el usuario

______________
Introduccin a las Bases de Datos 47

del programa quien lo cargue al apretar el botn de rdenes o botn de OK.

Recordar que C++Builder va numerando automticamente todos los componentes en el programa en forma
consecutiva, es decir al finalizar el diseo del programa se tendrn, los componentes form1, label1, label2,
label3,..button1. El procedimiento completo para crear y ejecutar el programa es:
1.- Cargar C++Builder.
2.- Al cargarlo ya estar en la pantalla la primera
forma (Form1).
3.- Antes de poner el primer componente usar la
opcin, File Save Project As, aparece la
siguiente ventana:

Donde se deber seleccionar primero, el icono de crear


nueva carpeta ( arriba a la derecha y tiene un folder con

rayitos ), esto es, para crear una nueva carpeta


o directorio donde quedara guardado o almacenado el programa, en cuanto se crea la nueva carpeta,
sobrescribir la palabra "nueva carpeta" que aparece, con el nombre que tendr el directorio donde quedar
almacenado el programa, escribir por ejemplo "programa uno" ( Windows95 en adelante ya permite que los
nombres de directorios y sus archivos ya sean ms largos y no necesariamente del tipo antiguo de 8.3), al
terminar de sobrescribir, la palabra "programa uno" apretar <ENTER> y esperar un momento que se cree el
directorio.

Ya creado y renombrado el directorio, observar que en


la parte inferior de la ventana el programa ya tiene el
nombre de "Unit1.cpp", a un lado esta una caja o botn
de "ABRIR", mismo que se deber apretar y despus
usar en la misma parte un botn llamado "GUARDAR"
para almacenar "Unit1.cpp" y otra vez usar otro botn
"GUARDAR" para almacenar "Project1.bpr". Si se
desea se puede dar otros nombres

4.- Ahora ya que se tiene Form1 en pantalla, recordar que se pueden modificar sus propiedades como color,
font, etc. usando el Inspector de Objetos que esta a un lado de la forma ( se sugiere practicar un poco
esto), los cambios que se hacen en el Inspector de Objetos se van reflejando automticamente en la
forma en pantalla y tambin en la ventana que el usuario vera al ejecutarse el programa.
5.- Ahora se selecciona con un click el componente llamado Label en la paleta de componentes y luego
poner el cursor dentro de la forma en el lugar donde se quiera que aparezca el componente, y volver a
hacer click con el ratn para que ya aparezca dicho componente en la forma.

El componente en la forma, que est seleccionado


(esto se puede hacer, usando un click dentro de el
componente) se puede arrastrar para cambiarlo de
lugar o posicin o hacerlo mas pequeo o mas grande.

Como nota tambin a recordar siempre, un


componente o la propia forma, est seleccionado, si el
Inspector de Objetos lo esta referenciando, es decir es
el Inspector de Objetos quien contiene el nombre del
componente en la parte de arriba del propio Inspector
de Objetos:

Para cargar o para que despliegue un texto el componente Label1, solo escribir dicho texto en la cajita
que esta a un lado de la propiedad Captin en el Inspector de Objetos, por ejemplo para el problema,
escribir la palabra "AUTOS ECONOMICOS", recordar que tambin est componente tiene la propiedad
font que se puede usar para alterar el tipo de letra que despliega el componente.

6.- Repetir el procedimiento anterior hasta tener los doce componentes Label bien acomodados y
organizados en la forma y con sus textos correspondientes, solo recordar dejar el componente Label12
con su propiedad Caption en blanco (usando tecla backspace).

_______________
48 C++ Builder Aplicado Ing. Ortiz

7.- Seleccionar y acomodar ahora un componente Button en la forma y colocarlo en la esquina inferior
derecha, en su propiedad Caption = escribir la palabra "OK". Debiendo quedar todo el conjunto como se
ve lneas arriba. Recordar que este componente, es quien contiene el cdigo del programa y ms
especficamente es su evento OnClick quien lo contiene y quien adems lo activa o lo ejecuta.

Para aadirle el cdigo (en este ejemplo que cargue el Caption de Label12 al tiempo de ejecucin del
programa y por decisin del propio usuario) existen dos maneras:

Una: En el Inspector de Objetos,


hacer click en la pestaa o folder
llamado Events y ahora en lugar
de propiedades el Inspector de
Objetos, muestra todos los
eventos que el componente
puede detectar (observar y
anotarlos), ahora doble click en
la cajita que esta a un lado del
evento llamado OnClick y con
este paso aparece el siguiente
minieditor de programas de C+
+Builder:

Observar que ya trae listo el evento Button1Click( ), para programarse y es dentro de sus llaves donde
se construye el programa.

Solo escribir dentro de las llaves la instruccin

Label12->Caption="$ 5,000.00";
o Escribirla dentro de las llaves
o No olvidar terminarla con ( ; )
o Respetar y aprender siempre la ortografa de componentes, propiedades y valores de propiedades
o Recordar que cualquier propiedad de cualquier componente se puede programar con el formato ya descrito;
NomComponente->NomPropiedad = NuevoValor;
o Observar que Caption se carga como si fuese una variable de tipo "string", dentro de un programa.
o Observar que atrs del editor esta Form1, si se selecciona con un click, este procedimiento lo regresa
a la forma para seguir arreglando o colocando nuevos elementos.
Otra manera de estarse intercambiando entre forma y editor ( ahora lo llamaremos Unit1.cpp), es decir
entre form1 y Unit1, es usar el icono:

Toggle Form/Unit que se encuentra en la barra de componentes arriba y a la izquierda.

Otra: La otra manera y ms sencilla de cargar el editor, es haciendo un dobleclick dentro del
componente.

8.- Ahora ya esta lista la forma o programa para ejecutarse, tambin existen tres maneras:
a. Usar la opcin Run que esta arriba en la barra de mens.

______________
Introduccin a las Bases de Datos 49

b. Usar icono "run" en barra de herramientas.


c. Presionar la tecla F9.
Nota.- Se puede usar tambin la primera letra dentro del botn de comando o de ordenes ( OK), para activar
las instrucciones o acciones del botn, es decir se puede usar click en botn o solo pulsar la letra O,
para que se ejecute este ultimo procedimiento, solo poner un smbolo & en el caption del botn antes
de la letra O.

El programa ya en ejecucin debe ser similar al cuadro del item 6 lneas arriba

Ya que se practic, la mecnica de creacin de programas, resolveremos el problema de interactividad con


el usuario.

Es decir en estos casos es el usuario quien generalmente proporciona los datos para su procesamiento en
el problema, el trabajo del ingeniero de software, es procesarlos y darles sentido, coherencia y sobre todo
eficiencia.

Para esto se ocupan , componentes llamados de "input", "entrada" o "captura", que permitan al usuario
cargar o proporcionar un dato en ellos, dichos componentes son:

COMPONENTE EDIT (Standard)


Este componente es el mas importante componente visual, su funcin principal es manejar, todos los
procesos de entrada y salida (input/output) al programa.

En resumen de este componente, se necesita entender lo siguiente:

Este componente Edit, es el equivalente a las variables en cualquier lenguaje de programacin, ms


la instruccin de captura o despliegue correspondiente, es decir;
a) En BASIC, Input Edad -> Edit1
b) En PASCAL, Read(Ciudad) -> Edit2
c) En C, printf("%d", sueldo) -> Edit3
d) En C++, cin.get(nombre,30) -> Edit4
e) En Cobol Display metros -> Edit5
Ya aclarada su funcin, es necesario entender primero, que este componente permite capturar datos y
tambin como en el caso del componente Label desplegar datos, textos, mensajes o resultados de
operaciones de ser necesario, usando la propiedad Text del componente Edit.

Esta propiedad Text, as como la propiedad Caption en Label, permiten igualarse a muchos procesos
bsicos, es decir es fcil igualar Text o Caption a un dato, una variable, otro Text u Caption, o una
expresin algebraica normal, como en los siguientes ejemplos;

Edit2->Text = 5;
Label3->Caption = "PATO";
Edit4->Text = 3 * 6.2 ;

En principio su valor de default (por defecto) es la palabra Edit1 y es en su propiedad Text donde se
modifica, generalmente al principio de un programa se deja en blanco, y al ejecutarse el programa, el
usuario lo llena con los datos solicitados o el programa lo llena con el resultado de las operaciones.

Cuando un usuario lo carga con un dato, recordar que el dato almacenado queda de tipo texto, no importa
lo que haya escrito el usuario.

Para resolver el problema de usar datos numricos dentro del Text de un componente Edit, en operaciones
matemticas, solo agregarle a la propiedad Text, las funciones .ToInt() o .ToDouble(), quedando
convertida la cadena a dato numrico, como se muestra en los siguientes ejemplos.

int Number1 = Edit1->Text.ToInt();


double Value1 = Edit1->Text.ToDouble();

int Number1 = StrToInt(Edit1->Text);

_______________
50 C++ Builder Aplicado Ing. Ortiz
double Value1 = StrToFloat(Edit1->Text);

Cuando por olvido no se escribe el dato numrico en un casillero Edit, nos da error, para evitar eso definir
como uno el valor inicial (puede ser otro valor), de la siguiente forma
int Value2 = Edit2->Text.ToIntDef(1);

EJERCICIO 1
Unautomvil parte del reposo y tiene una
aceleracin constante a por t segundos.
La velocidad final v y la distancia d,
recorrida por el automvil son dadas por
las frmulas:

d = () a. t2 y v = a . t
Escribir un programa que lea a, t e
imprima t d v
SOLUCION
Seguir los siguientes pasos:

1.- Elija del men principal File New Application. En la forma (Form1) hacer el
diseo como se muestra lneas arriba.

2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.

3.- Usar la opcin File Save Project As. Lo guarda como Ecuacion1

4.- Elija de la barra de componentes el objeto caja de edicin ( ). y colquelo en la forma, las
veces que se indica en la figura superior.

5.- Elija de la barra de componentes el componente Label y colquelo en la forma, tantas veces como
se indica. Cambie la propiedad Caption para indicar las variables de entrada y salida segn se aprecia
en la figura inferior.

6.- Elija de la barra de componentes el componente Button y colquelo en la forma, dos veces como se
indica, el primero ser para correr el programa y el segundo para salir. Cambie la propiedad Caption a
RUN y SALIR en cada uno.

7.- Hacer doble click en el Button1 OK en Form1 y colocar el programa siguiente (lo que aparece en negrita,
sin tocar lo que esta por defecto):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double aceleracion, tiempo, Velocidad, Distancia; //Declaracion del tipo de variable
aceleracion = Edit1->Text.ToDouble();
tiempo = Edit2->Text.ToDouble();
Distancia = 1/2.0*aceleracion*tiempo*tiempo;
Velocidad = aceleracion * tiempo ;
Edit3 ->Text = tiempo;
Edit4 ->Text = Distancia;
Edit5 ->Text = Velocidad;
}

8.- Hacer doble click en el Button2 SALIR en Form1 y colocar el programa siguiente (lo que aparece en
negrita, sin tocar lo que esta por defecto):

______________
Introduccin a las Bases de Datos 51

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}
7.- Presione la tecla F9 para ejecutar su programa y teclee
cualquier numero en el componente de edicin de
aceleracin y tiempo, y luego hacer click en OK para
correr el programa, obtenindose la salida que se
muestra en la figura de la derecha.

EJERCICIO 2
calcular
Solucin:

1.- Elija del men principal File New Application.

2.- En la forma (Form1) hacer el diseo como se muestra


en la figura de la derecha considerando 3 Label, 3 Edit
y 2 Button. (En los componentes Label que estn a la
izquierda de la figura ya se les ha cambiado el
Caption).

Cambiamos la propiedad Caption del Button1 a OK


y del Button 2 a Salir.
3.- Hacer doble click en el Button1 OK en Form1 y
escribimos en la ventana de edicin que aparece, y
entre las llaves lo siguiente:

las dems son instrucciones que aparecen y no deben ser borradas.

4.- Nuevamente pasamos a Form1 y hacemos doble clic en Button2 que ahora tiene el Caption Salir y
tipeamos la palabra Close(); quedando la ventana:

5.- Al ejecutar el Programa (Run -> Run o F9), se escribe el


nmero 2 en el primer cuadro Edit1 luego se presiona
OK y obtendremos los resultados mostrados, para salir
se presiona con el ratn el Button2 que ahora es Salir.

La corrida se muestra as:

En particular, se deber asociar los Edit con las variables, y solo existirn en principio cuatro tipos

_______________
52 C++ Builder Aplicado Ing. Ortiz
de Edits.
Formato Edit Tipo De Dato Ejemplo

Edit->Text String Nombre, Ciudad


Edit->Text[1] Char Grupo, Sexo, Letra
Edit->Text.ToInt() Entera Edad, Ao
Edit->Text.ToDouble() Doble Sueldo, Pi

Realizar operaciones algebraicas con los componentes Edit.

Recordar que el usuario, usar un componente Edit para almacenar los datos de entrada del problema,
muchas veces estos datos son de tipo numrico, por ejemplo en un componente Edit se almacena la
cantidad de pesos, el precio de un artculo, la edad de una persona, etc.

Solo recordar siempre usar el componente Edit, directamente como una variable cualquiera (con su
mtodo o funcin correspondiente) y construir la operacin o frmula con los propios componentes o cajas
Edit. No olvidar adems en la ventana de edicin al incio colocar el #include<math.h>

Es decir, por EJEMPLO, si se pide resolver el problema de multiplicar dos nmeros cualesquiera, se
ocuparan tres componentes Edit,(factor1, factor2, producto), es en estos casos donde se usan tres
componentes Edit como si fuesen tres variables simples directamente.

Ya en programa se ocupan 3 componentes Label para ttulos


(Multiplicando, Multiplicador, Multiplicacin), tres componentes Edit
para los datos (dos proporcionados por el usuario y uno calculado
por el programa) y un componente Button (OK) para realizar la
operacin.

El problema se resuelve de la siguiente manera;

Cdigo y Pantalla de salida que se pone haciendo doble clic en el


Button OK en el Form1, y es ;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=Edit1->Text.ToInt() * Edit2->Text.ToInt();
}

Notas:
Como se observa este componente Edit permite capturar datos por parte del usuario del programa.
Es ms sencillo considerar, estos componentes como variables normales y usarlos directamente.
Solo en problemas algebraicos usar propiedad Text con los mtodos ToInt() y ToDouble().
Acostumbrarse a usar solo estos dos tipos de datos, enteros y dobles, si se ocupa en algn
problema otro tipo de dato, entonces se tendrn que sacar de los componentes Edit, valores enteros
y valores dobles a variables normales del mismo tipo y despus usar el operador Cast en ellas.
Si se ocupan divisiones con un componente Edit entre otro componente Edit, recordar que al menos uno de
ellos sea double, porque de lo contrario se trunca la parte residual.
Respetar la ortografa en el ejemplo, sobre todo en las instrucciones (las que terminan con ;)
Si son muchas operaciones en un problema, el procedimiento es similar, solo resolverlo por partes
ya que una formula que contenga cuatro o cinco Edit, se convierte en un rengln de cdigo gigante.
De un componente Edit, solo salen Ints o Doubles nada ms, si se ocupa otro tipo de dato, entonces
es tiempo de practicar el operador Cast.

Message Boxes
Cajas de dialogo

Una caja de diialogo es una ventana que sirva para interaccion del usuario con el computador , tiene las
siguientes caractersticas:

______________
Introduccin a las Bases de Datos 53

1. Esta equipado con el botn Close de Windows 95 solo.

2. No puede ser minimizado, maximizado, o restaurado.


3. Es modal. El usuario no puede continuar hasta que se finaliza la caja de dialogo.
4. Proporciona un camino al usuario para cerrar el dialogo.
Message Boxes

Un message box es una caja de dialogo pequea usada para mostrar un mensaje y proporciona uno o ms
botones. Para su aplicacin se lo puede llamar desde cualquier lugar

La funcin ShowMessage( ) toma un argumento de cadena y no retorna ningn valor. Es usado para
mostrar mensajes, que se dan por enterados haciendo clic en el botn OK. La sintaxis de la funcin
ShowMessage( ) es
void __fastcall ShowMessage(const AnsiString Message);
Ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Por favor llene el formato \n este seguro de firmarlo");
}
//---
Presione F9 y obtendr el resultado de la derecha

La funcin MessageBox( ), la sintaxis es:

int __fastcall MessageBox(const char * Message, const char * Caption, int Flags);

toma tres argumentos. El primer argumento, Message, es una cadena terminada en null representando el
mensaje que el usuario leer, es una sentencia esttica, puede ser una combinacin de diferentes cadenas.

Se puede crear un sencillo message box similar al implementado usando la funcin ShowMessage( ) para
mostrar un simple mensaje con un botn OK button. En este caso solo deber proporcionar el argumento
del Mensaje, configure los otros arumentos como NULL. Aqu un ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBox( "Esta operacin puede ser \n llevada a cabo por el jefe", NULL, NULL);
}
//------

El segundo argumento, tambin una cadena es el ttulo que muestra la caja (Box). Si no tiene el caption se
puede configurar el valor de este argumento como NULL. En este caso el ttulo de la barra dir Error.
Para que esto no aparezca, se debe dar el argumento Caption por ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBox("Asegurese que la msica esta tocando", "CD PLayer Instrucciones", NULL);
}

_______________
54 C++ Builder Aplicado Ing. Ortiz
//---

El tercer argumento especifica los flags que desea mostrar en la caja de dialogo, uno o ms botones y una
fotografa opcional. Se puede crear una casilla de mensaje simple con OK como nico botn. En ese caso
configure el tercer argumento como MB_OK. Aqu un ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBox("Asegurese que la msica esta tocando", "CD PLayer Instrucciones", MB_OK);
}
//---
No muestra ms de un botn, usa una constante entera que
representa un grupo de los botones disponibles
A continuacin se muestra las constantes y sus botones:

Por ejemplo para crear una caja de mensaje que muestre botones Yes y No, deber escribir:

void __fastcall TForm1::Button1Click(TObject *Sender)


{
Application->MessageBox("Usted ahora escucha msica o cualquier sonido?", "CD PLayer Instrucciones",
MB_YESNO);
}
//----

Para dar nfasis a sus dilogos puede elegir un cono de la


definida constante entera Win32, debe usarlo segn el
mensaje.
Los valores e conos son:

Para combinar estas dos seales usar el |. Aqu un ejemplo:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBox("Usted ahora escucha msica o cualquier sonido?",

______________
Introduccin a las Bases de Datos 55

"CD Player Instrucciones",


MB_YESNOCANCEL | MB_ICONQUESTION);
}
//-----

Cuando se configura un message box para mostrar ms de un botn, se configura el sistema operativo para
decidir cual botn es por defecto. El botn por defecto tiene un borde ms grueso. Si se presiona Enter, es
como si se hubiese presionado el botn por defecto. Afortunadamente si el message box tiene ms de un
botn, se puede decidir cual ser el por defecto, usando alguna de las siguientes constantes:
Si el message box tiene ms de un botn, el
Valor
botn por defecto ser:
MB_DEFBUTTON1 El primer botn
MB_DEFBUTTON2 El segundo botn.
MB_DEFBUTTON3 El tercer botn.
MB_DEFBUTTON4 El cuarto botn.
Para especificar el botn por defecto, use el | para combinar la constante entera del botn por defecto con
la constante del botn y el cono, a continuacin un ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBox("Usted ahora escucha msica o cualquier sonido?",
"CD Player Instrucciones",
MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2);
}
//-----

No existe diferencia en como vayan las constantes,


lo que si importa es que vayan separadas por el
simbolo |

Despus de leer el mensaje en la caja de El MessageBox( ) retorna Si el usuario hizo click


dialogo, el usuario har clic en uno de los
botones y el dilogo se cerrar . cada uno IDOK OK o presion Enter
de los botones tiene un nimero constante IDCANCEL Cancel o presion Esc
entero que es asignado y reconocido por IDABORT Abort
el compilador. Se puede usar este
nmero para encontrar a que botn el IDRETRY Retry
usuario a hecho click. Esto significa que la IDIGNORE Ignore
funcin MessageBox( ) retorna un valor IDNO No
entero segn la siguiente tabla: IDYES Yes
IDCONTINUE Continue
IDTRYAGAIN Pruebe otra vez
Se puede usar uno de estos enteros para actuar dependiendo del botn que se hizo click:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if( Application->MessageBox(
"Usted ahora escucha msica o cualquier sonido?",
"CD Player Instrucciones",
MB_YESNOCANCEL | MB_ICONQUESTION) == IDNO )
Panel1->Caption = "detendremos este test ahora. "
"Deje que la mquina descanse!";
}
//-----

_______________
56 C++ Builder Aplicado Ing. Ortiz
En este ejemplo se corre el programa, se
presiona run aparece la caja de mensaje, se
presiona NO y aparece el mensaje en el Panel1

Ejemplo de uso de MessageBox


Muchos programas Windows preguntan si se esta seguro de Salir. Para esto se puede usar el evento
OnCloseQuery de la Form1 para incluir esta clase de confirmacin:
Se hace doble click en el evento OnCloseQuery y entre los corchetes se escribe lo siguiente (lo que esta en
negrita)
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
CanClose = (MessageBox(Handle, "Est seguro de Salir?", "Confirmacin", MB_YESNOCANCEL) == IDYES);
}
//------

[MessageBox es una function que retorna que botn se ha sido presionado. Sus 04 parmetros son:
1) La ventana Handle
2) El mensaje, se ha puesto Est seguro de Salir?.
3) La caja con el tipo de mensaje {Confirmation, Warning, Error, and Information} [Esto aparece en el ttulo
de la ventana],
4) La clase de botn a incluir {Yes, No, Ok, Cancel, and Help}. El
comando MB y los botones
Ensayar el programa presionando el botn Salir, tambin puede
salir presionando el casillero marcado con X de la ventana de
ejecucin. Experimente con otros MessageBox..

La funcin MessageDlg( ) es una buena alternativa a la funcin Win32 MessageBox( ).

La sintaxis es:
int __fastcall MessageDlg(const AnsiString Message, TMsgDlgType IconType,
TMsgDlgButtons Buttons, int HelpContext);

El primer argumento, Message, es el mensaje direccionado Value Icon


al usuario. Puede ser una sentencia esttica simple, un
prrafo o una combinacin de cadenas. mtWarning

El IconType es un cono usado para resaltar la caja de mtError


dialogo. El cono es configurado usando una constante
entera como sigue:
mtInformation

mtConfirmation

mtCustom None
El argumento del Botn es usado para especificar el tipo(s) de botn(es) para mostrar en la caja de dialogo.

______________
Introduccin a las Bases de Datos 57

Los botones son definidos usando el conjunto TMsgDlgButtons segn se muestra:

El ltimo argumento es usado si hau


un archivo help disponible, en cuyo
caso se debe especificar el index
particular relativo a este message box,
que usa el nombre del proyecto en su
Caption

void __fastcall TForm1::Button1Click(TObject *Sender)


{
MessageDlg("el archivo " + AnsiString("\"") +
Edit1->Text + AnsiString("\"") + " que est tratando de cargar "
"ya existe en el servidor.\n"
"si continua, reemplazar la ltima versin "
"de archivos en el servidor.\n"
"Desea subir de todas formas?",
mtConfirmation, TMsgDlgButtons() << mbNoToAll
<< mbNo << mbYes << mbYesToAll, 0);
}
//----------

La funcin MessageDlgPos( )

La funcin MessageDlgPos( ) brinda posibilidades extra al programador, funciona exactamente igual a la


funcin MessageDlg( ) , pero adems permite especificar las coordenadas del lugar donde mostrar el cuadro
de dilogo, usa la sintaxis:
int __fastcall MessageDlgPos(const AnsiString Msg, TMsgDlgType DlgType,
TMsgDlgButtons Buttons, int HelpCtx, int X, int Y);
Ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MessageDlgPos("el archivo " + AnsiString("\"") +
Edit1->Text + AnsiString("\"") +
" que est tratando de cargar "
"ya existe en el servidor.\n"
"si continua, reemplazar la ltima versin "
"de archivos en el servidor.\n"
"Desea subir de todas formas?",
mtConfirmation, TMsgDlgButtons() << mbNoToAll
<< mbNo << mbYes << mbYesToAll, 0,20,120);
}
//--------
Ubica la caja de mensaje en el lado superior izquierdo.

_______________
58 C++ Builder Aplicado Ing. Ortiz
El Input Dialog Box

InputBox( ) permite mostrar un cuadro de mensaje que requiere informacin del usuario. El message box
est equipado con un Edit box y dos Botones. El Edit box acepta una cadena por parte del usuario.
Cuando el usuario hace click en OK, el Input Box retorna el contenido de su Edit box. Si se presiona
Cancel o Esc, el contenido del Edit box se ignora.
La sintaxis de la funcin InputBox( ) es:
AnsiString __fastcall InputBox(const AnsiString Caption,
const AnsiString Prompt, const AnsiString Default);
El argumento Caption especifica la cadena que mostrar en la barra de ttulo del cuadro de dilogo. El
Prompt es una sentencia que mostrar que tipear en el Edit box. El argumento por defecto es un valor
sugerido que puede mostrar en el Edit box para guiar al usuario acerca del valor esperado. Si no desea
especificar un valor por defecto, puede configurar la cadena con un valor vaco. A continuacin un ejemplo:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
InputBox( "Conversin de Temperatura", "Escriba la temperatura en Celsius:", "");
}
Aunque el argumento por defecto es una cadena, se
puede inicializar con cualquier valor de la clase
AnsiString. Esto quiere decir que el valor por
defecto puede ser un carcter, un nmero flotante o
un entero:
void __fastcall
TForm1::Button1Click(TObject *Sender)
{
InputBox( "Conversin de Temperatura",
"Escriba la temperatura en Celsius:", "102");
}
//-----------
Si se va a capturar el valor que se ingresa y efectuar operaciones con el:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text =InputBox( "Conversin de Temperatura",
"Escriba la temperatura en Celsius:", 120).ToDouble();
}
//----

La funcin InputQuery( )
Al igual que la funcin InputBox( ) la funcin InputQuery( ) se usa para mostrar un cuadro de dialogo que
espera respuesta. La sisntaxis es::

bool __fastcall InputQuery(const AnsiString Caption, const AnsiString Prompt, AnsiString &Value);

Considera 3 cadenas: el argumento Caption es una cadena que se muestra en la barra de ttulo del cuadro
de dialogo. El argumento Prompt es la sentencia que indica al usuario que tipear en el edit box.

Al igual que en la funcin InputBox( ) el argumento Value


proporciona un valor por defecto, y tambin el usuario puede
tipear un nuevo valor. A continuacin un ejemplo de uso de la
funcin InputQuery( ):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
InputQuery("Exiting Application",
" Are you sure you want to exist (y=Yes/n=No)?", 'n');
}
//----

Al igual que la funcin InputBox( ) retorna una cadena, la funcin InputQuery( ) retorna dos valores. Por
su declaracin, esta funcin retorna un valor Booleano de true o false. Si el usuario clicks OK o presiona
Enter la funcin retorna true. Si el usuario presiona Esc o clicks Cancel, la funcin retorna false.

______________
Introduccin a las Bases de Datos 59

Se puede validar el valor retornado por Value escribiendo una sentencia condicional que examina si el
usuario ha hecho clic en OK o Cancel. En el ejemplo si se hace click en OK se muestra en valor en el
Edit1:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Answer = 'Y';
if( InputQuery("Exiting Application",
"Are you sure you want to exit (Y=Yes/Y=No)?", Answer) == True ) Edit1->Text = Answer;
}

Se presiona el Button1 y aparece el cuadro de


mensaje con un valor por defecto, si se presiona
OK, entonces aparece el valor por defecto en el
Edit1, si se presiona Cancel no sucede nada

PROBLEMA Ejemplo:
El torque trasmitido por un eje de trasmisin que produce una cantidad de caballos de fuerza, a una
velocidad rotacional constante, se da por medio de la frmula:

(HP)(63 000) 16 T
T y para calcular el tamao del eje: D3
N S
Donde: T = momento de torsin, lb-pulg
HP = caballos de fuerza.
N = velocidad rotacional, rev/min.
S = esfuerzo cortante, en lb/pulg2.
D = dimetro del eje, en pulg.
= 3.14
Escriba un programa, para determinar el momento de torsin, considerando un
motor de 600 HP N = 1800 y S del material = 6 000.

Solucin

1.- Selecciones File New Application del Main Menu para crer un nuevo proyecto en blanco.
Seleccione File Save Project As y guarde el proyecto como Torque
2.- En Form1 disee como se muestra y luego aada las
propiedades y la configuracin que se muestra en la tabla

COMPONENTES PROPIEDADES CONFIGURACION


Label1 Caption Calculo de torsion y eje
Label2 Caption Caballos de fuera
Label3 Caption Velocidad rotacion rev/min
Label4 Caption Esfuerzo corte, lb/pulg2
Label5 Caption Momento torsion lb-pulg
Label6 Caption Diametro eje pulg
Button1 Caption RUN
Button2 Caption CERRAR

3.- Hacer doble click en Button1 ahora RUN y escribir el siguiente programa:

_______________
60 C++ Builder Aplicado Ing. Ortiz

void __fastcall TForm1::Button1Click(TObject *Sender)


{
double HP, N, Torsion, S, raiz, D, PI=3.14;
HP = Edit1->Text.ToDouble();
N = Edit2->Text.ToDouble();
Torsion = HP *63000/N;
S = Edit3->Text.ToDouble();
raiz=16*Torsion/(PI*S);
D = pow(raiz,1/3.0); // colocar el divisor como decimal para que no lo considere entero.
// Impresin de resultados
Edit4->Text= Torsion;
Edit5->Text = D;
}
//------
4.- Hacer doble click en Button2 ahora llamado CERRAR y escribir entre las llaves:

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}

5.- Se utiliza la funcin matemtica pow por tanto se debe incluir en el encabezado: #include<math.h>
#include <vcl.h>
#pragma hdrstop
#include<math.h>
#include "torque.h"
//--------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------
6.- Despues de correr el programa aparece as:

PROBLEMA
Problema sencillo de suma de dos nmeros: Elaboramos el formato:

Estando en Form1, hacemos doble clic en Button1 y


escribimos el siguiente cdigo que aparece en
negrita:

//-----------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=Edit1->Text.ToDouble() + Edit2->Text.ToDouble();
}
//-----------------------

______________
Introduccin a las Bases de Datos 61

Al correr el programa, se ingresa el valor de los nmeros a


sumar, se presiona el Button1 y se obtiene el resultado como se
muestra a continuacin
Si queremos hacer algo ms elaborado veamos los siguientes
ejemplos

Ejemplo: Conversin de datos o variables numricas a Texto de un componente Edit.


Para resolver este problema, donde se tiene una variable numrica cargada, con un resultado o dato
numrico y se pretende mandarla a un componente Edit o Label para su despliegue, existen dos manera
sencillas, estas son;

Usando la clase AnsiString, por principio de cuentas AnsiString


puede recibir como argumentos o parmetros una variable de
tipo entera o double y convertirla directamente a una string, que
es el tipo de dato que espera el componente Edit o el
componente Label para su despliegue, Por ejemplo
diseamos nuestra Forma considerando el ingreso de dos
numeros y al presionar un Botn se muestra la salida tanto en
un Label como en una caja Edit. El diseo ser algo parecido
al mostrado lneas abajo:ej.;
se hace doble clic en el Button1 al que hemos puesto Caption = OK
y entre las llaves se coloca el siguiente programa:

void __fastcall TForm1::Button1Click(TObject *Sender)


{
// rea de declaracin
int alfa;
double beta;
// rea de captura
alfa = Edit1->Text.ToInt();
beta = Edit2->Text.ToDouble();
// rea de operaciones
alfa = alfa+3;
beta = beta *5.1;
// rea de despliegue y conversin de nmeros a strings o Edits
Label2->Caption = AnsiString(alfa);
Edit3->Text = AnsiString(beta);
}

Como se observa se puede transferir variables numricas tanto a


Label como a Edit va la clase AnsiString. Si corremos se ver:

En salir se hizo doble clic y se insert entre las llaves: Close();

sin embargo es mas sencillo usar el mtodo que se usa en el programa dado de ejemplo para la
multiplicacin, es decir considerar los componentes Edit como variables normales, y usar:

Edit1->Text = Edit5->Text.ToInt(() * Edit2 . . . etc - Edit50 . . . etc

Recordar que es mas correcto usar propiedad Text y mtodos ToInt( ) y ToDouble( ), y cargar directamente
el componente Edit resultado.

De nuevo, Edit->Text o Label->Caption permiten que se igualen a una variable, un dato, o una
expresin, es decir es valido;
int y = 20;
Edit1->Text= 50;
Edit2->Text = " gato ";

_______________
62 C++ Builder Aplicado Ing. Ortiz
Edit3->Text= 30 * 80;
Edit4->Text= y - 3;
Edit5->Text= -5 * y + Edit3->Text.ToDouble();
Edit6->Text= 15 * Edit3->Text.ToInt() -
Edit8->Text.ToDouble();

Uso de FormatFloat
Para el caso de resultados decimales , la salida incluye todo el conjunto de decimales asociados a un tipo
double(muchos ceros), para resolver este problema se pueden usar directamente algunos de los mtodos
asociados a la clase AnsiString , por ejemplo uno de esos mtodos es;

FormatFloat("string de formato", var double);

La string de formato contiene una serie de simbolos literales que se utilizan para darle el formato de salida
deseado, esto simbolos o constantes literales son;
Const. Lit. Significado

0 (cero) Rellena con 0(ceros) todas las posiciones indicadas, ejemplo "0000.00" para el numer 23.4 la
string de salida seria 0023.40
# Constante muy usada para formato de valores numricos, esta constante solo despliega el valor
numrico normal.

. Se utiliza para separar la parte entera de la parte decimal.

, (coma) Se utiliza para separar el valor numrico en unidades de millar.

E+, E-, e+, e- Se utilizan para convertir a notacin cientfica exponencial el valor de salida.
Por ejemplo tenemos:
Alfa = Beta/3.1416;
Edit1->Text= FormatFloat(###,###.##, alfa);

Notas;

El valor de salida es redondeado a tantos decimales como 0s, o #s, existan en la string de formato.

Si la string de formato no incluye un punto decimal, entonces el resultado es redondeado al valor entero ms
cercano.

Ejemplo: programa para hallar el rea de un tringulo

1.- Selecciones File New Application del Main Menu para crer un nuevo proyecto en blanco.
Seleccione File Save Project As y guarde el proyecto como Torque

2.- Diseamos la forma: con 3 Label, 3


Edit y 2 Button:
3.- doble clic en OK e insertamos el
cdigo o miniprograma ( es
miniprograma porque no se tiene
que programar mucho de la
pantalla), solo disearla, y dentro
del evento OnClick del componente
Button, queda as;

void __fastcall TForm1::Button1Click(TObject *Sender)


{
// PROGRAMA QUE CALCULA AREA DE TRIANGULOS
Edit3->Text=FormatFloat("###.##",Edit1->Text.ToDouble() * Edit2->Text.ToDouble()/ 2 );

______________
Introduccin a las Bases de Datos 63

4.- Hacer doble click en Button2 ahora llamado Salir y escribir entre las llaves:

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}

5.- Para correr el programa ir a la barra de men Run -> Run o presionar la tecla F9. Se escribe un valor
para la Base y otro para la altura, se presiona el Botn OK y aparece el resultado.

Es vlido y mas correcto; usar FormatFloat( ) con lo visto en Edit, es decir

Edit5->Text= FormatFloat("###.##", Edit3->Text.ToInt() * 3.1416);

En resumen, este componente Edit, es el componente mas importante y elemental en todo problema que
involucre el procesamiento de datos en ambientes visuales, se debe acostumbrar a considerarse como un
elemento importante en cualquier problema visual, y acostumbrarse a procesarlo como si fuese una variable
normal cualesquiera.

Recordar que cuando se capturen los datos de base y altura, no dejar espacios en blanco antes del primer
nmero o se darn problemas y errores de conversin a valores numricos.

Para resolver mejor este problema de formatos mas adecuados para captura de datos, se usarn nuevos
componentes que se analizan mas adelante.

Problema Colocando valores por defecto


Muchos programas necesitan hacer clculos matemticos, en el curso de este tutorial efectuaremos
programas muy simples que aadirn dos o ms cifras usando componentes Tedit y mostrarn la respuesta
en un Tlabel o en su caso en un Tedit.

Tcnica

La frmula es para sumar dos nmeros, y se cambia despus para sumar ms numeros

Pasos

1 Arranque C++Builder elija del menu principal File New Application para tener una forma en blanco y
un nuevo programa.
2.- De la paleta de componentes en la hoja Stndard seleccione 2 objetos lnea de edicin haciendo doble

clic en el objeto ( ), aparecer Edit1 en la forma (Form1) nuevamente doble clic en la paleta de
componentes y aparecer Edit2, y acomdelos como se muestra en la figura, o tambin se puede hacer

un click en el objeto ( ), y otro en el lugar que se desee aparezca en la forma (Form1),


3.- De la misma manera que en el
paso anterior coloque un
componente Button que aparece
como Button1, y un Label que
aparece como Label1, en Form1
4.- Coloque un componente Edit
aparece como Edit3, un Label
aparece en la forma como Label2,
por ltimo un Button que aparece
como Button2. Quedando como
se muestra en la figura
5.- Configure las propiedades segn la tabla:

_______________
64 C++ Builder Aplicado Ing. Ortiz

Componente Propiedades Configuracin


Button1 Caption Calcular
Label2 Caption Respuesta
Button2 Caption Cerrar
Quedando de la siguiente forma (figura derecha):
6.- Necesitamos una codificacin bsica C++ para las
operaciones matemticas de este programa:
a. Necesitamos hacer click en la pestaa Unit1.cpp y antes de __fastcall TForm1::TForm1
(TComponent* Owner colocar las variables que se van a usar, puesto que van a aparecer en varios
lugares de programa:
float Numero1,Numero2,Suma;

b. Haga clic en Form1 y vaya a la seccin events del object inspector, haga doble clic en OnShow, y el
cursor aparecer en el editor de cdigos listo para que se tipee el cdigo del evento OnShow
Edit1->Text=FormatFloat("0.0",Numero1); //Formato de numero
Edit2->Text=FormatFloat("0.0",Numero2);
Edit3->Text=FormatFloat("0.0",Suma);
Se puede omitir si no se desea que aparezca un formato inicial.

7.- Necesitamos configurar valores por defecto (o valores iniciales de la suma):


a. Regresamos a la Form1, de nuevo en la seccin Events del inspector de objetos, hacer doble clic en
la propiedad OnCreate, ser automticamente transferido a Unit1.cpp el cursor en:
void __fastcall TForm1::FormCreate(TObject *Sender y listo para aadir el cdigo, escribir:
Numero1=1;
Numero2=1;
La respuesta es nuestro resultado final, as no necesitamos aadir un valor por defecto. Notamos
que aqu falta inicializar la variable Suma, porque tambin es suficiente con que fijemos en el
formato (paso 6) su valor y los decimales que debe tener, pero si deseramos darle otro valor
tambin podemos aadirlo en este paso 7.

8.- Ahora nos concentraremos en la operacin matemtica y el lado C++ de nuestro programa
a. Otra vez ir a Form1, doble clic en el componente Button1, esto nos lleva por defecto al evento OnClick
del Button1, tipear el siguiente cdigo:
Numero1=Edit1->Text.ToDouble();
Numero2=Edit2->Text.ToDouble();
Suma=(Numero1 + Numero2);
Label1->Caption=FormatFloat("0.0",Suma);
Edit3->Text=FormatFloat("0.0",Suma);

b. Ahora compile y corra el programa, ingrese dos cifras


en los casilleros Edit y presione el Button1 y la
respuesta se mostrar en el componente Label y en el
casillero Edit3

El cdigo completo en Unit1.cpp se ve como se muestra:


//-------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "suma1.h"
//-------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float Numero1,Numero2,Suma; //Estas variables se usan en partes diferentes
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

______________
Introduccin a las Bases de Datos 65

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

void __fastcall TForm1::FormShow(TObject *Sender)


{
Edit1->Text=FormatFloat("0.0",Numero1); //Formato de numero
Edit2->Text=FormatFloat("0.0",Numero2);
Edit3->Text=FormatFloat("0.0",Suma);
}
//-------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Numero1=1; //Especifica valores iniciales
Numero2=1; //Puede ser suficiente especificar como se ha hecho con Suma
}
//-------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Numero1=Edit1->Text.ToDouble();
Numero2=Edit2->Text.ToDouble();
Suma=(Numero1 + Numero2);
Label1->Caption=FormatFloat("0.0",Suma);
Edit3->Text=FormatFloat("0.0",Suma);
}
//-------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//-----------------------------------------------------------
Como trabaja
En cada paso se ha ido explicando la apariencia de los botones, etiquetas y ventanas de edicin, que usted
puede hacer por si mismo; si se requiere que la respuesta tenga ms de un decimal, cambiaremos el
FormatFloat(0.0,??) a nuestra necesidad, por ejemplo con dos decimales: FormatFloat(0.00,??)

Comentarios
Ahora tenemos un programa matemtico sencillo, el cual podemos guardar haciendo clic en File del menu
luego en SaveAll y especificando primero un nombre para el archivo cpp y otro para el archivo bpr. En el
paso 8 se puede colocar la respuesta en el Label como en el Edit segn se aprecia, adems la sentencia:

Numero1=Edit1->Text.ToDouble(); tambin puede escribirse su equivalente:

Numero1=StrToFloat(Edit1->Text); //String To Float = convierte cadena a flotante


Igual para la variable Numero2

Variaciones del programa bsico de Suma


Problema
Deseamos sumar n cantidad de nmeros
Tcnica
En un casillero colocar todos los numeros que se desee sumar (en este caso los valores los vamos a
ingresar por el Edit1), luego presionando un botn se muestra el resultado en otro casillero, luego se puede
iniciar otra suma en la misma ventana o se cierra regresando al programa

Pasos

_______________
66 C++ Builder Aplicado Ing. Ortiz

1.- Elija del men principal File New Application para


tener una forma en blanco y un nuevo programa Unit1.cpp;
de la paleta de componentes en la hoja Standard
seleccionar 2 objetos lnea de edicin (Edit) haciendo doble

clic en el objeto ( ), aparecer Edit1 en la forma


(Form1) nuevamente doble clic y aparecer Edit2, y
acomdelos como se muestra en la figura, o tambin se

puede hacer un click en el objeto ( ), y otro en el


lugar que se desee aparezca en la forma (Form1),

2.- De la misma forma que en el paso anterior coloque tres componentes Button que aparece como Button1,
Button2 y Button3, y dos Label que aparecen como Label1 y Label2, en Form1, quedando como se
muestra en la figura:

3.- Configure las propiedades segn la tabla:


Componente Propiedades Configuracin
Label1 Caption Entrada de datos
Button1 Caption OK
Label2 Caption Resultado
Button2 Caption Limpiar
Button3 Caption Cerrar

Quedando de la siguiente forma:

4.- Necesitamos una codificacin bsica C++ para las operaciones matemticas de este programa:

a. Necesitamos hacer click en la pestaa Unit1.cpp y antes de __fastcall TForm1::TForm1


(TComponent* Owner colocar las variables que se van a usar:
float Suma = 0; // Podemos usar la forma aprendida antes

b. Haga clic en Form1 luego en Edit1 (quedando sealada) y vaya a la seccin events del object
inspector, haga doble clic en OnKeyPress, y el cursor aparecer en el editor de cdigos que
muestra:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)


{
}
Debiendo escribir entre las llaves, el cdigo en C++ siguiente:
float s;
if(Key==13) //Si la tecla presionada es igual a return, entonces
{
s= StrToFloat(Edit1->Text); //convierte datos de texto a flotante
suma=suma+s; //Suma los valores
Edit1->Text=""; //Blanquea la casilla 1
}
Incluso despus de obtener el resultado, se puede seguir sumando ms nmeros y el resultado se ir
acumulando

5.- Ahora nos concentraremos en la ejecucin de la operacin, el blanqueo del casillero Edit1 de ingreso de
datos, Cerrar la corrida del programa y efectuar un cambio en el color del Edit2
a. Otra vez ir a Form1, doble clic en el componente Button1 (ahora OK), esto nos lleva por defecto al
evento OnClick del Button1, Entre llas llaves escribimos el texto que aparece en negrita:

void __fastcall TForm1::Button1Click(TObject *Sender)


{
Edit2->Text=String(suma); //Probar en su lugar a escribir lo siguiente:
// ShowMessage("la suma es "+String(suma)); aparece un cuadro
}

______________
Introduccin a las Bases de Datos 67

b. Otra vez ir a Form1, doble clic en el componente Button2 (ahora Limpiar), esto nos lleva por defecto al
evento OnClick del Button2, Entre las llaves escribimos el texto que aparece en negrita:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Text=""; //Blanquea la casilla uno (Edit1)
Edit2->Text=""; // Blanquea la casilla Edit2
Edit2->Color=clRed; //Cambia color de casilla Edit2 a rojo
suma=0; //Vuelve a cero el valor de suma
Edit1->SetFocus(); //Coloca el cursos en la casilla Edit1
}

c. Otra vez ir a Form1, doble clic en el componente Button3 (ahora Cerrar), esto nos lleva por defecto al
evento OnClick del Button3, escribimos el texto que aparece en negrita:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}

6.- Ahora compile y corra el programa, ingrese las cifras a sumar en el casilleros Edit1 y presione Enter,
ingresando los datos a sumar, cuando termine presione el Botn OK (Button1), mostrndose el resultado
en el Edit2. Si desea efectuar otra suma presionar el Button2 (llamado limpiar) y para salir presione el
Button3 (Cerrar);

El programa completo en Unit1.cpp queda como se muestra a continuacin:


//-------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//-------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float suma=0;
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
float s;
if(Key==13)
{
s= StrToFloat(Edit1->Text);
suma=suma+s;
Edit1->Text="";
}
}
//--------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text=String(suma);
// ShowMessage("la suma es "+String(suma)); aparece un cuadro
}
//--------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
Edit2->Color=clRed;
suma=0;
Edit1->SetFocus();
}
//-------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{

_______________
68 C++ Builder Aplicado Ing. Ortiz
Close();
}
//-------------------------------------------------------------

Como trabaja
En cada paso se ha ido explicando la variacin de la suma de n nmeros y a los cuales se puede aadir lo
aprendido anteriormente
Comentarios
Al ingresar los datos y dar enter, se activa el lazo, blanqueando el casillero Edit1 y aceptando nueva cifra,
hasta que se de el OK, ahora tenemos un programa matemtico sencillo, el cual podemos guardar
haciendo clic en File del men luego en SaveAll.

Problema mostrando valores por defecto.


Para el tajo Santa Agueda se recomend los cargadores frontales sobre llantas: el tamao del cargador
frontal se calcul con la frmula:

t m x produccion
Cc
60 x F x E x S f
Donde: Cc = Capacidad de la cuchara en yardas cbicas.
E = factor de eficiencia (eficiencia de tiempo).
F = factor de carguo (eficiencia de la cuchara) o eficiencia de carguo.
Sf = factor de expansin del material.
tm = tiempo del ciclo de operacin en minutos.
Produccin = produccin por hora de la mina en yardas cbicas/h
60 = factor cuando el tiempo del ciclo es en muntos, si fuera en segundos, el factor cambia a 3600
La produccin por hora de la mina se calcula en 102 yardas cbicas/h de acuerdo a la produccin mensual
fijada en 12500 t de mineral y 75000 t de desmonte, en 384 h de trabajo (16 h/da y 24 dias/mes). La
eficiencia de carguo (F) se considera 0.70 osea el 70% de la capacidad de la cuchara se llena por cada
ciclo de carguo. La efiCiencia ( E ), es el factor de utilizacin de tiempo calculada en 0.68, osea en una
hora solo 41 minutos son efectivos de trabajo.

El factor de expansin de material roto, la caliza se consider: Sf = 0.60

El ciclo de carguo se fijo en un minuto. Seleccionar el tamao del cargador frontal

Tcnica

Se considera todos los factores y se calcula la capacidad de cuchara del cargador, si no existe en el
mercado esa capacidad se puede adquiri unidades ms pequeas cuyas capacidades sumen lo que se
necesita.

Pasos

1 Arranque C++Builder elija del menu principal File New Application del Main Menu para tener una
forma en blanco y un nuevo programa. Seleccione File Save Project As y guarde el proyecto como
Cuchara

______________
Introduccin a las Bases de Datos 69

2.- De la paleta de componentes en la


hoja Stndard seleccione 6 objetos
Edit colocndolos en la forma
(Form1) y acomdelos como se
muestra en la figura.

3.- De la misma manera que en el paso


anterior coloque 02 componente
Button, y 06 Label, en Form1

4.- Coloque un componente Edit


aparece como Edit3, un Label
aparece en la forma como Label2,
por ltimo un Button que aparece
como Button2. Quedando como se
muestra en la figura derecha:

5.- Configure las propiedades segn la tabla:


Componente Propiedades Configuracin
Label1 Caption Capacidad de cuchara en yd3
Label2 Caption Eficiencia de cargui
Label3 Caption Eficiencia de tiempo
Label4 Caption Factor de expansion del material
Label5 Caption Tiempo del ciclo carguio, min
Label6 Caption Proudccion/h en yd3/h
Label7 Caption Respuesta en yd3
Button1 Caption Run
Button2 Caption Cerrar
6.- Necesitamos configurar valores por defecto (o valores iniciales para calcular la capacidad de cuchara),
hacer click en Form1, en la seccin Events del inspector de objetos, hacer doble clic en la propiedad
OnCreate, ser automticamente transferido a Unit1.cpp el cursor en:

void __fastcall TForm1::FormCreate(TObject *Sender y listo para aadir el cdigo, escribir:


{
Edit1->Text= 0.70; //valor de F
Edit2->Text= 0.68; //valor de E
Edit3->Text= 0.60; //valor de Sf
Edit4->Text= 1.0; //valor de tm
Edit5->Text= 102; //valor de produccion
}

Aade los valores por defecto cuando se corra el programa, se presiona Run y se obtiene la respuesta. :

7.- Ahora nos concentraremos en la operacin matemtica y el lado C++ de nuestro programa
Otra vez ir a Form1, doble clic en el componente Button1, esto nos lleva por defecto al evento OnClick del
Button1, tipear el siguiente cdigo:

void __fastcall TForm1::Button1Click(TObject *Sender)


{
double Cc, F,E,Sf,tm,produccion;
F = Edit1->Text.ToDouble();
E = Edit2->Text.ToDouble();
Sf= Edit3->Text.ToDouble();
tm= Edit4->Text.ToDouble();
produccion = Edit5->Text.ToDouble();
Cc = (tm*produccion)/(60*F*E*Sf);
//Se imprime el resultado= capacidad de cuchara en yardas cubicas
Edit6->Text = FormatFloat("###.##",Cc);
}
//--------

8.- Otra vez ir a Form1, doble clic en el componente Button2 (ahora Cerrar), esto nos lleva por defecto al
evento OnClick del Button3, escribir el texto que aparece en negrita:

_______________
70 C++ Builder Aplicado Ing. Ortiz
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}

9.- Ahora compile y corra el programa, ya tiene cifras


por defecto, ingrese las cifras de su problema en los
casilleros Edit y presione el Button1 y la respuesta
se mostrar en el casillero Edit6
Como trabaja
Se ha cambiado para que de la respuesta con dos
decimales, nos muestra valores por defecto que a su
vez sirven de muestra como debe introducirse los
valores, se presiona RUN e inmediatamente ya da una
respuesta, ahora se escribe los valores del problema a
resolver, y nos dar una nueva respuesta al presionar
RUN.

Comentarios
Ahora tenemos un programa matemtico sencillo, que muestra valores del problema por defecto

COMPONENTE MaskEdit (Adicional)


Este componente es muy similar en su uso al componente Edit, excepto que proporciona una mscara
especializada para el formato de datos, es decir se puede usar para que el usuario proporcione datos con
formatos bien definidos, como son valores numricos que incluyan puntos y comas por ejemplo 3,345.87, o
que incluyan smbolos como el de $, o para el caso de fechas que lleven su propio separador como por
ejemplo 02/28/97.

Tambin se puede usar, para


asegurarse que el dato proporcionado
por el usuario, solo incluya nmeros, o
solo contenga letras, etc.

Para darle formato al dato que el


usuario debe proporcionar solo hacer
dobleclick a un lado de la propiedad
EditMask en el Inspector de Objetos
y esto
nos da el siguiente minieditor de datos:

Observar en la ventana derecha, algunos ejemplos de "mascaras de edicin".


Es en la ventanilla arriba a la izquierda donde se colocan los caracteres especiales de edicin ( en
el ejemplo se estn usando, $, #, puntos y comas).
Es en la ventanilla abajo a la izquierda donde se pueden proporcionar algunos datos de prueba,
para probar el formato diseado.
Recordar que este formato es para capturas, no para despliegues, puesto que para este caso
(despliegue) se usa FormatFloat().
No olvide usar el botn OK, cuando se termine de construir la mascara de edicin.
Los principales caracteres especiales de edicin son:

carcter significado

! Caracteres opcionales se despliegan en blanco


> Caracteres que siguen deben ser maysculas
< Caracteres que siguen deben ser minsculas

______________
Introduccin a las Bases de Datos 71

L Requiere una letra en esta posicin


l Permite una letra es esta posicin pero no la requiere
A Requiere un alfanumrico en esta posicin
a Permite un alfanumrico pero no lo requiere
0 Requiere un numero en esta posicin
9 Permite un numero pero no lo requiere
# Permite un numero y tambin signos mas y menos
: Separa horas:minutos:segundos
/ Separa meses/das/aos
; Se utiliza para separar los tres campos o partes de una mascara
_ Inserta espacios en blanco en el texto

Cualquier otro carcter que no aparezca en la tabla anterior, puede aparecer en una mascara, pero solo se
tomara en cuenta como una literal cualesquiera, es decir son insertados automticamente y el cursor los
brinca.

El segundo campo o parte de una mascara es un carcter simple que indica que carcter literal debe ser
incluido como parte del texto del componente MaskEdit, por ejemplo (000)_000-0000;0;*,

Un 0 en el segundo campo indica que solo deben capturarse los diez dgitos marcados con O, en lugar de
los 14 que tiene la mascara.

El tercer campo de la mascara, es el carcter que se quiera que aparezca en lugar de espacios en blancos.

PROBLEMA salida por Label de un mensaje compuesto por letras y nmeros, usando MaskEdit
Utilizando este componente MaskEdit vamos a calcular el capital que se recibir por un depsito de ahorros
a una tasa de inters fijada. Fijamos el depsito de $1000 en una cuenta de ahorro a un inters de 10%
anual.

Escribir un programa que


imprima el capital final de la
cuenta al cabo de 1 mes.
Imprimir en un Label indicando
las condiciones y cuanto se
recibir.

Solucin

1.- Selecciones File New


Application del Main Menu
para crer un nuevo proyecto
en blanco. Seleccione File
Save Project As y guarde el
proyecto como Inters

2.- En Form1 disee como se muestra y luego aada las propiedades y la configuracin que se muestra en
la tabla

COMPONENTES PROPIEDADES CONFIGURACION


Form1 BorderStyle bsDialog
Caption Ahorros Acumulados
Height 240
Position poScreenCenter
Width 550
Button1 Caption RUN
Button2 Caption CERRAR
Label2 Caption Tasa de inters

_______________
72 C++ Builder Aplicado Ing. Ortiz

MaskEdit1 EditMask 99 %;0;_


Label3 Caption Depsito mensual
MaskEdit2 EditMask $ 9999;0;
Label4 Caption Aos de ahorro
MaskEdit3 EditMask 99;1;_ Si usted ahorra $250cada mes
invertido al 10% despus de 20
Label4 AutoSize false aos usted recibir 189.842,21
Height 115
Left 130
Top 15
Width 180
WordWrap (ajuste de texto) True

3.- Hacer doble click en Button1 ahora RUN y escribir el siguiente programa:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double interes= MaskEdit1->Text.ToDouble()/100.00/12.0; //
int tiempo = MaskEdit3->Text.ToInt() * 12 ;
double ahorro = MaskEdit2->Text.ToDouble() ;

double valor = ahorro * (1+interes); // o tambin: valor *= (1+interes) ;


Label1->Caption = "Si usted ahorra $" + String (MaskEdit2->Text) + " invertido al " + MaskEdit1-
>Text + "% despus de " + MaskEdit3->Text + " mes usted recibir "+
FormatFloat("###,###.##",valor) + " $";
}
//--------------------------------------------------------------

4.- Hacer doble click en Button2 ahora llamado CERRAR y escribir entre las llaves:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
5.- Despus de correr el programa aparece as:

6.- En lugar de lo escrito en Label1, se puede


escribir tambin de la forma: Label1->Caption
= "Si usted ahorra $" + String (MaskEdit2-
>Text) + " invertido al " + MaskEdit1->Text +
"% despus de " + MaskEdit3->Text + " mes
usted recibir" + String::FloatToStrF (value,
String::sffCurrency, 20, 2) + $;

FloatToStrF, convierte un valor en punto flotante a AnsiString, usando un formato especifico: ffCurrency

USO DEL COMPONENTE LISTBOX .


El componente ListBox muestra una lista de artculos (items) de los que se puede elegir, puede elegir uno o
varios, no permite editar (no por esta ventana, por otros medios si), lo que permite que el usuario solo
seleccione de entre las opciones que presenta este componente. Este componente puede contener hasta
32 000 artculos de los que el usuario puede escoger. Si la lista es muy larga, por lo que se provee un scroll
bar que permite navegar arriba y abajo y acceder a la lista.

Propiedades

El fundamental y obvio aspecto es ListBox es poder mostrar una lista de items, que es un objeto Tstrings.
Hay dos maneras de crear esta Lista de items: Crear una lista cuando se esta elaborando el programa, en
el Object Inspector, se hace click la propiedad Items y luego click en los 3 puntitos que aparecen en el lado

______________
Introduccin a las Bases de Datos 73

derecho para llamar al String List Editor, escribir los itemes deseados en cada lnea, presionando Enter:

Para aadir items cuando se esta corriendo el programa se usa el mtodo TStrings::Add(). Si la lista
estuviera vaca, los nuevos items se aadirn a la lista. Si la lista ya contiene uno o ms items, el nuevo
items ser aadido, por defecto al final de la lista existente. A continuacin un ejemplo de creacin de una
lista o aadir a una ya existente:
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListBox1->Items->Add("Chad");
ListBox1->Items->Add("Equatorial Guinea");
ListBox1->Items->Add("Egypt");
ListBox1->Items->Add("Madagascar");
}
//---------------------------------------------------------------------------

Como ya se dijo, el usuario interactua con el ListBox seleccionando un item. En cualquier tiempo se puede
encontrar un item en particular que ha sido seleccionado, usando la propiedad Booleana
TCustomListBox::Selected.

Cuadro de algunas propiedades del ListBox

su fondo entero aparecera con el color que se le de a


continuacin del =. Por ejemplo clBlue o clYellow

Por defecto, el valor de las Columnas se pone a 0, si tenemos


muchos artculos podemos poner las columnas igual a otro
nmero.

Por defecto, el usuario puede seleccionar slo un artculo en la


lista. Si usted quiere seleccionar ms de un artculo, debe
poner la propiedad de MultiSelect igual a true. Despus de
haber seleccionado ms de un artculo, se puede usar el
TCustomList::SelCount para averiguar el nmero de artculos
que el usuario habra seleccionado.

El ItemIndex es una propiedad que identifica qu artculo se


selecciona en un ListBox. Los artculos en un ListBox van de 0
el primer artculo, luego 1, 2 . . . , puede identificarse como
ListBox1->ItemIndex = 0. Si ningn artculo se selecciona en
la lista, el TCustomListBox::ItemIndex tiene un valor de 1;

Seguido del operador y Add( ) aade lo indicado entre los


parntesis

Si se pone = true ordena alfabeticamente o en orden


ascendente, si = false se desactiva.

Limpia de items el ListBox indicado.

Cuando aparece el Items de un list box en orden alfabtico, se dice que ha sido ordenado (sorted). Por
defecto los items no estn ordenados. Para arreglarlos en orden ascendente, configurar la propiedad
Sorted a true. Como un dato de tipo Booleano, desde programa se puede realizar el ordenamineto, como
se muestra:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Sorted = True; //tambin se usa true
}
//---------------------------------------------------------------------------

Ejemplo Uso del ListBox.

_______________
74 C++ Builder Aplicado Ing. Ortiz
Para comprender mejor esta opcin vea el siguiente programa:

1.- Elija del men principal File New Application.


2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.
3.- Seleccione un objeto ListBox

( ) de la paleta
de componentes Standard

4.- En la propiedad Items haga


doble click en los 3 puntos que
aparecen; se despliega una
ventana de edicin, en ella;
teclee una lista de datos como
la que se muestra en la figura

5.- Cuando finalices selecciona


Ok. Con el mouse. FIG Editor de lneas para un ListBox.

6.- Seleccione un objeto etiqueta ( ), de la paleta de componentes Standard y colcalo en la


forma de manera que su forma se luzca as:
7.- Selecciona el objeto ListBox de tu forma con un clic del mouse;
posteriormente dar doble click y en el editor de cdigo en su funcin teclea
el siguiente cdigo:

void __fastcall TForm1::ListBox1Click(TObject *Sender)


{
Label1->Caption= ListBox1->Items->Strings[ListBox1->ItemIndex];
}
//--------------------
FIG Componente ListBox
Editado.

8.- Ejecute su programa y vea que al seleccionar una opcin de la


lista se presenta ese texto en la etiqueta.

FIG Componente ListBox Editado.

PROBLEMA
Construir un sencillo programa donde se escriban nombres en un componente
de edicin y se aadan los nombres a un ListBox (casillero de listado). Tambin
se tiene la opcin de ordenar o limpiar el ListBox.

1.- Selecciones File New Application del Main Menu para crer un nuevo
proyecto en blanco. Seleccione File Save Project As y guarde el proyecto
como como listform.cpp y listdemo.bpr.

2. En Form1 disee como se muestra: 3 Buttons, 1 Edit y 1 ListBox.

3.- Alinear los tres buttons (enlazar los 3 buttons, esto se hace manteniendo presionada la tecla Shift, hacer
clic en cada Button, luego presione el botn derecho del mouse, seleccione Position Align b Horizontal

______________
Introduccin a las Bases de Datos 75

escoger "Left sides" ), luego aada las propiedades y la configuracin que se muestra en la tabla.

COMPONENTES PROPIEDADES CONFIGURACION


Form1 Caption List box demo
Edit1 Text
Button1 Caption &Aadir, Si usted ahorra $250cada mes
invertido al 10% despus de 20
Default true (ahora podemos usar en aos usted recibir 189.842,21
enter para ingresar los datos)
Button2 Caption &Ordenar
Button3 Caption &Limpiar

4. Hacer doble click en Button1 ahora AADIR y escribir el siguiente programa:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Items->Add(Edit1->Text);
Edit1->Text = "";
}
//-------------------------------------------

5. Hacer doble click en Button2 ahora llamado ORDENAR y escribir entre las llaves:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ListBox1->Sorted = true;
}
//------------------------------------------
6. Hacer doble click en Button3 ahora llamado LIMPIAR y escribir entre las llaves:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
ListBox1->Clear();
ListBox1->Sorted = false;
}
7. Despus de correr el programa aparece as:

Como trabaja
Escribir un nombre y apellido en el Edit1 y presionar Enter o click en
Aadir o la tecla A, y asi otros nombres y apellidos, luego en Ordenar y
finalmente en Limpiar y para volver al programa Alt+F4 (equivaldra a
presionar un boton Salir osea con instruccin Close( ) )

El programa queda de la siguiente manera:

Problema Guardar en un archivo los datos ingresados.

Expandir el proyecto anterior escribiendo un programa C++ Builder que permita al usuario ingresar una lista
de nombres, ordenarlos por orden alfabtico y guardar a un file.

Se necesita aadir un Button4 que llamaremos Guardar y otro Button5 cuyo Caption se cambiar a Cerrar
para finalizar el programa:
8. Hacer doble click en Button4 ahora GUARDAR y escribir el siguiente programa:
void __fastcall TForm1::Button4Click(TObject *Sender)
{
ListBox1->Items->SaveToFile("d:\\temp.dat"); // Para que guarde en el disco D, caso contrario lo
pondr en el directorio por defecto
}
//------------------------------------

_______________
76 C++ Builder Aplicado Ing. Ortiz

9. Hacer doble click en Button5 ahora llamado CERRAR y escribir entre


las llaves:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//------------------------------------------
10.- Ensaye el programa ingresando una relacin de nombres,
ordenndola y archivando
Documente la unidad insertando comentarios con su nombre, la fecha y
una breve descripcin en la parte superior de unit.

Si vuelve a correr el programa sobreescribir los datos. Guarda en el mismo lugar que el programa
automticamente

11. Probemos a aadir el siguiente codigo en un nuevo botn


void __fastcall TForm1::Button6Click(TObject *Sender)
{
if (Color != clPurple)
Color = clPurple;
else
Color = clSilver;
}
//-------

COMPONENTE ComboBox(Standard)
El componente ComboBox combina las ventajas de EditBox y ListBox. Este componente ofrece a sus
usuarios una seleccin de cajas de edicin de manera que no ocupen mucho espacio en su forma.
En la propiedad Style se puede elegir los tipos de ComboBox; generalmente es el DropDown o Drop
DownList
Presenta 3 tipos de ComboBox.
Simple DropDown DropDownList

FIG Tipos del Componente ComboBox.


Usted ver en su aplicacin slo una lnea de edicin, pero podr desplegarla al momento de seleccionar
su opcin

Existen muchas ocasiones en donde el usuario del programa tiene que proporcionar datos que provienen
de un conjunto finito y muy pequeo de posibles respuestas, esto significa que cada vez que se ejecute el
programa, el usuario estar proporcionando las mismas respuestas.

Ejemplo de esta clase de datos, son por ejemplos Municipios en Tacna, las posibles respuestas solo son
(Alto Alianza, Ciudad Nueva, Bolognesi, Natividad, Gregorio Albarracin,), otro ejemplo es Sexo (Hombre,
Mujer), etc.

Para situaciones como esta, existen componentes que permiten programar por adelantado las posibles
respuestas, y el usuario solo debe seleccionar la respuesta
apropiada, en lugar de tener que escribirla.

Este componente ComboBox nos permite definir en primera


instancia un conjunto de datos o valores respuestas asociados a
una caja de edicin cualesquiera, as ahora el usuario tendr la

______________
Introduccin a las Bases de Datos 77

oportunidad de seleccionar un dato del conjunto de datos respuestas ya predefinido.

Este componente ComboBox tiene dos partes, una parte de


encabezado, para poner el nombre del grupo de respuestas
(por ejemplo municipalidades, sexo, etc.), que se carga
usando la propiedad Text del componente.

La segunda parte es la lista de opciones o respuestas que


se debe cargar al tiempo de diseo de la ventana, en el
momento de poner el componente ComboBox1, solo hacer
dobleclick a un lado de la propiedad Items en el Inspector
de objetos y sale el siguiente editor de strings en el que hay
que escribir las alternativas a seleccionar, finalmente dar OK
:

Al momento de ejecucin del programa, toda la lista de respuestas, estarn a la vista del usuario, para
que este ltimo la seleccione.

Recordar que el usuario al momento de ejecucin del programa,


solo vera el encabezado, para seleccionar su respuesta deber
apretar la flechita que esta a un lado del encabezado.

Para procesar este componente:

Usar su popiedad Text de manera normal, es decir si la


respuesta se ocupa en string,

Solo usar ComboBox1->Text, o si la respuesta se quiere numerica solo convertir Text a

ToInt() o ToDouble(), ej, ComboBox1->Text.ToDouble().

Podemos en un edit mostrar el contenido sealado: Edit1->Text = ComboBox1->Text

Ejemplo Lo que se escribe en el Edit aparece en el comboBox

Experimente siguiendo los siguientes pasos:

1.- Elija del men principal File New Application.

2.- Si no esta presente el inspector de objetos presione la tecla


de funcin F11.

3.- Elija de la barra de componentes el botn de caja de edicin ( ). y colquelo en la forma.


4.- Elija de la barra de componentes el botn de ComboBox ( ). y colquelo en la forma. Cambie
la propiedad de Style de este objeto con el inspector de objetos a la propiedad csDropDown.

5.- En la hoja de eventos haga doble clic en el evento onDropDown e introduzca el siguiente cdigo.
ComboBox1->Items->Add(Edit1->Text);
6.- En la hoja de eventos del inspector de objetos seleccione para este mismo objeto el evento OnDblClick
y teclee el siguiente cdigo:
ComboBox1->Items->Clear();
7.- Ejecute su programa y teclee cualquier palabra en la caja de edicin y luego con el mouse seleccione la
flecha hacia debajo de la caja de seleccin y ver que la palabra que tecle en la caja de edicin se
copiar en la caja de seleccin. Si hace doble click en el ComboBox se borra lo que esta escrito.

USO DEL COMPONENTE SCROLLBAR .


_______________
78 C++ Builder Aplicado Ing. Ortiz
El componente ScrollBar se usa la mayor parte de las veces combinado con otros controles. Las
propiedades mas importantes de este componente son:
Permite dos opciones para la barra, vertical u horizontal.
Kind
Nmero mnimo o mximo de pasos en los que est dividida la barra (en una
Max - Min.
posicin relativa).
Toma el valor actual del numero de pasos de la barra segn se modifique por medio
Position
de sus botones de incremento y decremento..
Determina la distancia que la barra se mover cuando el usuario mueva sus
Large Change
controles.
Numero de movimientos que har del extremo de la barra (nmero que se defini en
SmallChange
Min.) al otro extremo de la barra hasta llegar al nmero que se defini en Max.

Siga esta nueva aplicacin para ejemplificar su uso.


1.- Elija del men principal File New application.
2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.

3.- Seleccione ScrollBarr de la paleta de componentes Standard ( ) y colquela en la Forma.

4.- Cambie las siguientes propiedades de la barra con el inspector de objetos.


Propiedad Valor
Large Change 32
Max 255
SmallChange 16
5.- Copie la barra de la siguiente forma seleccione del men principal Edit Copy.

6.- Seleccione la forma haciendo clic en ella.

7.- Pegue en su forma 2 copias de la barra que captur en el paso 5 de la siguiente manera:

Edit Paste. Edit Paste.

8.- Seleccione de la paleta de componentes un objeto panel ( ) y colquelo en la forma. Borre el


nombre de Panel1 en la propiedad Caption.
9.- Seleccione de la paleta de componentes un

objeto Label ( ) y colquelo en la


forma, haga tres copias de ella, cmbiele
nombres(Label1 = Azul, Label2 = Verde, Label3
= Rojo) y acomdelos de la siguiente manera.
10.- Seleccione las tres barras oprimiendo la tecla
Shift y haciendo clic en las tres barras sin soltar
la tecla Shift.
11.- En la hoja de eventos del inspector de objetos
haga doble clic en el evento OnChange y escriba FIG Acomodo de los componentes ScrollBar para
el siguiente cdigo. una aplicacin de color.

Panel1->Color = RGB(ScrollBar1 -> Position,


ScrollBar2 -> Position,
ScrollBar3 -> Position );

Label1->Caption = IntToStr(ScrollBar1 -> Position);


Label2->Caption = IntToStr(ScrollBar2 -> Position);
Label3->Caption = IntToStr(ScrollBar3 -> Position);

12.- Ejecute su programa y juegue con los controles.

______________
Introduccin a las Bases de Datos 79

TrackBar en la paleta Win32


Es una barra que muestra un rango y un indicador que muestra el valor actual y que permite modificarlo. Es
til para ajustar propiedades como el color, volumen y brillo. El usuario mueve el indicador delizable, o
haciendo click dentro de la barra. Puede configurar valores enteros en un rango continuo.
Usar las propiedades Max y Min para configurar los rangos superior e inferior del TrackBar.
Use SelEnd y SelStart para iluminar un rango.
La propiedad Orientation determina si el track bar es vertical u horizontal.
Por defecto, un track bar tiene una fila de marcas a lo largo de su base. Use la propiedad TickMarks para
cambiar su localizacin. Para controlar los intervalos entre marcas, use la propiedad TickStyle y el mtodo
SetTick.
Position configure una posicin por defecto del track bar. Por defecto el usuario puede moverse una marca
arriba o abajo presionando las teclas de flechas up y down. Configure LineSize para cambiar ese
incremento.
Configure PageSize paraq determiner el nmero de marcasque se mueve cuando el usuario presiona
Page Up y Page Down.

Ejemplo
El mismo caso anterior pero usando TrackBar
Pasos
1.- Elija del men principal File New Application.
2.- En la hoja Win32 de la paleta de componentes, seleccione los
objetos TrackBar y colocarlos en el Form1, y de la hoja Standard
seleccione el objeto Panel y colocarlo conforme se muestra en la
figura derecha. Asimismo 3 Labels cambiando el Caption para
que indiquen los colores Rojo, Verde y Azul.
3.- Seleccione los tres TrackBar, presionando la tecla Shift y
haciendo clic en cada uno de ellos mientras se presiona la tecla
(aparecen los 3 marcados); con el inspector de objetos haga
doble clic en el evento OnChange e introduzca el siguiente
cdigo.

void __fastcall TForm1::TrackBar1Change(TObject *Sender)


{
Panel1->Color = RGB(TrackBar1->Position, TrackBar2->Position,TrackBar3->Position);
}
//----

4.- Modifique las propiedades de los trackBar, las modificaciones van


para los 3: .

Propiedad Valor 5.-


Frecuency 16 Max/Frecuencia da N de divisiones
en la barra
Max 255 Abarca amplia gama del color
Ejecute el programa y juegue con los controles.

USO DEL COMPONENTE BITBTN. (paleta additional)

Usar el componente BitBtn provee de una mejor apariencia a sus aplicaciones, para anexar una imagen a
sus botones, no tiene que dibujar nada, amenos que lo desee, ya que C++ Builder proporciona un biblioteca
_______________
80 C++ Builder Aplicado Ing. Ortiz
de imgenes en el directorio cbuilder\images\buttons.

La forma de poner una imagen en un botn se muestra en el siguiente ejemplo.


1.- Elija del men principal File New Application.

2.- En la hoja Additional de la paleta de componentes, seleccione el objeto BitBtn ( ) y colquelo


en su forma.
3.- Con el inspector de objetos haga doble clic en la
propiedad Glyph, y aparecer el (Picture Editor) editor
de imgenes en el que podr seleccionar la imagen
que desee en su botn.

4.- Haga clic en el botn Load, para seleccionar una


imagen, si no se encuentra en ese directorio puede
buscarla en esta misma opcin, directorio Archivos de
programa/Borland/CBuilder6 /Examples/ MFCen
diferentes directorios.
FIG Interfase de Imgenes del componente
BitBtn.
5.- Seleccione la imagen deseada y oprima el botn Open. Y en el editor de imgenes el botn OK.

FIG. Uso de imgenes en componentes


BitBtn.

Puede repetir esta accin y poner varios


BitBtn en su aplicacin.

FIG. Directorio de Imgenes de C++ Builder.

USO DE BOTONES ACELERADORES (Speed Button). En la paleta Additional.

Los botones aceleradores proveen al usuario de una forma alternativa de ejecutar acciones que pueden de
otra manera ser accesados por la barra de mens. Muchas aplicaciones Windows hacen uso de botones
aceleradores.
Siga los siguientes pasos para ver un ejemplo.
1.- Elija del men principal File New Application.

2.- Seleccione de la paleta de componentes, en la hoja additional, el objeto SpeedButton ( ) y


colquelo en la forma.

3.- Repita la accin 3 veces mas.

4.- Utilice el inspector de objetos para colocar un titulo ( en Caption,


para el primer acelerador ponga <<, para el segundo <, para el
tercero > y para el cuarto >> ) en lo botones aceleradores,
quedando como se muestra en la figura.

5.- Y en la propiedad GroupIndex coloque el nmero 1. Lo que


indicar que los botones trabajarn como grupo y cuando uno FIG. Botones aceleradores.
sea seleccionado permanecer presionado hasta que otro botn
del grupo sea seleccionado, presentando una eleccin exclusiva

______________
Introduccin a las Bases de Datos 81

para el usuario.

6.- Ejecute su aplicacin y vea como trabajan los botones


aceleradores.
FIG. Ejecucin del programa
Botones aceleradores.

COMPONENTES DE AGRUPAMIENTO

Como ya se empieza a notar en las aplicaciones construidas, la cantidad de datos e informacin empiezan a
amontonarse en la ventana simple que se ha venido construyendo.

Para resolver este problema, se tienen dos mtodos, el primero de ellos consiste de una serie de
componentes que permiten agrupar datos o informacin(resultados) de una manera mas lgica y esttica.

El segundo mtodo consiste de construir y trabajar con dos o mas ventanas a la vez.

Se empieza por el primero mtodo , es decir componentes de agrupamiento.

COMPONENTE PANEL(Standard y atrs flecha negra)


Es el componente mas sencillo y comn de agrupamiento, se utiliza para poner un panel o un cuadro o
marco dentro de una ventana.

El componente Panel1 puede contener una toda una serie lgica de otros componentes.

Solo se deber recordar colocar primero todos los paneles en la forma y encima de ellos los componentes
que contendrn.

Este componente tambin tiene una serie de propiedades que le dan una mejor presentacin usando las
propiedades BevelInner, BevelOuter, BevelWidth, y BorderWidth.

Es decir se puede dividir una sola ventana en varias partes, por ejemplo en un panel se ponen los
componentes donde se capturan los datos de un problema junto con el botn de OK, y en otro panel se
construye la salida, por ejemplo se crea un panel para capturar los datos de un empleado incluyendo sueldo
diario y das trabajados y un segundo panel contiene su cheque semanal de pago (problema sugerido
tambin ).

Para modificar programas construidos sin paneles, el procedimiento para agregarlos es:
1.- Mover todos los componentes abajo en la ventana.
2.- Colocar el panel en su posicion.
3.- Click en Componente a relocalizar.
4.- DobleClick, Copy
5.- DobleClick, Cut
6.- Click dentro del panel, donde se quiere el componente
7.- DobleClick, Paste

COMPONENTE GroupBox(Standard)
Este componente es otra forma standard de agrupamiento de componentes de programas en Windows, se
usa para agrupar componentes relacionados dentro de una forma.

Tambin se utiliza para separar reas lgicas dentro de una ventana de Windows.

El texto que identifica el propsito general del grupo se escribe dentro de la propiedad Caption en el
Inspector de Objetos, teniendo seleccionado este componente GroupBox.

Adems de sus propiedades, mtodos y eventos propios, como todos los componentes de este tipo, tiene o
hereda las propiedades, mtodos y eventos de todos los controles generales de tipo Windows.

_______________
82 C++ Builder Aplicado Ing. Ortiz
Es muy similar al componente panel, excepto que incluye una pestaa que permite dejar mas claro, el
proposito del grupo.

Problemas propuestos

1.- Escribir proposiciones en C++ Builder para llevar a cabo los siguientes clculos:
Conversin en la escala de temperatura:
La frmula para convertir grados Farenheit a centigrados

C = 5 (F 32)/9

A grados Rankine y a grados Kelvin

R = F + 460

GK = C + 273
donde
C = Temperatura en escala Celsius, C
F = Temperatura en escala Fahrenheit, F
R = grados Rankine.
GK = temperatura en grados Kelvin.

2.- Hallar el rea de un trapezoide, usando la frmula


A = 1/2 (b 1 + b 2)
donde
A = rea, en pul'
h = altura, en pul
b1 = base, en pul
b2= lado paralelo a la base, en pul

3.- Elaborar un programa para en contrar el desplazamiento acelerado uniformemente, a partir de la


frmula:
S = Vo t + 1/2 a t2
donde
S = desplazamiento, en pulg.
V 0 = velocidad inicial, en pulg/seg
a = aceleracin, en pulg/seg'
t = tiempo, en seg

4.- La ley de Stefan-Boltzmann es


Eb = aT4
Donde:
E b = energa radiada para un cuerpo desconocido, Btu/h-p 2
T = temperatura absoluta, R
a = 0,1714 x 10 -8
Escriba un programa en C++ Builder que lea la temperatura en grados Fahrenheit e imprima
la energa radiada (vea el problema 1 para la frmula de conversin de temperatura).

Da to s p a ra u sa r com o eje mp lo
Grupo F
1 200
2 60
3 600
5.- La ley de Stokes describe la resistencia al movimiento de una esfera a travs de un fluido, en la
regin de flujo laminar:
D=3Vdu

______________
Introduccin a las Bases de Datos 83

donde
D = resistencia al movimiento, lb-p
V = velocidad, p/seg
d = dimetro de la esfera, p
u = viscosidad, lb-seg/p 2
Escriba un programa en C++ Builder que lea los valores de V, d y u . e imprima la resistencia al
movimiento D.
Datos para usar como ejemplo
Grupo V d u
1 0.1 0.1 0.02 (glicerina @ 65F)
2 0.1 0.5 2.2 X 10 -5 (agua @ 65F)
3 0.1 0.25 3.2 X 10 -5 (mercurio @ 65F)

6.- La ecuacin del movimiento uniformemente acelerado del problema 3 se puede modificar
para incluir el efecto :e un desplazamiento inicial, como sigue:
s = so + volt + 1/2at 2
donde:
s = desplazamiento en un tiempo t, pulg.
so = desplazamiento inicial, pulg.
vo = velocidad inicial, pulg/seg
a = aceleracin, pulg/seg 2.'
t = tiempo, seg.

Escriba un programa de computador que lea los valores de s o, vo, a y t e imprima el valor de s.

7.- Escriba un programa que encuentre la media aritmetica de 100 nmeros que se llern a razn de uno
por lnea.

8.- Cada lnea de un archivo de datos contiene un nmero real positivo (menor que 1000). Si el archivo
tiene como ltima lnea una lnea de delimitacin (un nmero negativo para indicar el fin de los datos:
a) Escriba un programa que encuentre el nmero mayor en el archivo.
b) Escriba un programa que encuentre el nmero menor en el archivo.
c) Escriba un programa que encuentre el segundo nmero mayor en el archivo. (suponga que el archivo
tiene ms de un nmero.

9.- Escribir un programa para calcular con la frmula del inters compuesto:
nm
i
A = P 1 +
m
Donde:
A = cantidad, en $
P = prstamo principal, en $
i = tasa de inters, en % (en decimal)
m = nmero de veces al ao durante las cuales se carga el inters
n = nmero de aos

10.- escribir un programa que calcule el valor de calentamiento de un combustible slido:


HV = 145(C) + 620(H - O/8) + 40(S)

donde

HV = valor de calentamiento, en Btu/Ib


C = contenido de carbono, en %
H = contenido de hidrgeno, en %
O = contenido de oxgeno, en %
S = contenido de sulfuro, en %

11.- elaborar un programa para calcular el nmero de Grashof:

_______________
84 C++ Builder Aplicado Ing. Ortiz

2 g L3 (TS - T f )
GR =
2
donde
GR = nmero de Grashof
= densidad, en lb-m/p3
= coeficiente de expansin termal, I /F
L = longitud caracterstica, en p
g = aceleracin gravitacional, en p/seg2
Ts = temperatura de superficie, en F
Tf = temperatura del fluido, en F
= viscosidad, en lb-m/p-seg

12.- Escribir un programa para calcular la eficiencia del ciclo disel:


k -1
1 r2k - 1
Eff = 1 -
r1 k ( r2 - 1)
donde
Eff = eficiencia, % (en decimal)
r1 = relacin de compresin
r2 = relacin de terminacin
k = relacin de calor especfico (no entero)

13.- Elaborar un programa para determinar el flujo de agua a travs de un medidor venturi horizontal:

A1 A 2
Q =C 2 g (h1 - h 2 )
A12 - A 22
donde
Q = tasa de flujo, en p3/seg
C = coeficiente mtrico
A1 = rea de la seccin trasversal del tubo, en p2
A2 = rea de la seccin trasversal del cuello, en p2
h1 = presin del calor en el tubo, en p
h2 = presin del calor en el cuello, en p
g = aceleracin gravitacional, en p/seg2

14.- Elaborar un programa para calcular la oscilacin de un pndulo simple:


L
t =
g
Donde:
t = tiempo de oscilacin, en seg
L = longitud del pndulo, en pul
g = aceleracin gravitacional, en pul/seg 2

15.- Un problema comn en una planta manufacturadora, en donde las partes se fabrican en serie por
grandes cantidades, se almacenan y se usan de acuerdo con la necesidad de ensamblaje de un
producto, es determinar el tamao de la serie ms econmica. La siguiente expresin se usa para
calcular el nmero de piezas que deben fabricarse en un lote.
2SDU
X =
(T + R) C + 2 A (1 - U/P)
Donde
X = tamao del lote, nmero de piezas.
S = costo de montaje y desmontaje, $/lote
D = das de trabajo por ao
U = tasa de uso, piezas/da

______________
Introduccin a las Bases de Datos 85

P = tasa de produccin, piezas/da


T = impuestos y seguros, % (decimal)
R = tasa deseada de reingreso en la inversin, % (decimal)
C = costo de mano de obra y material, $/pieza
A = costo de almacenamiento anual, $/pieza
Escriba un programa C++ que lea los valores de los parmetros e imprima el tamao econmico del
lote.
Datos para usar como ejemplo
S = 400. T = 0.05
D = 243. R = 0.15
U = 300. C= 0.72
P = 1500. A = 0.25

16.- La frecuencia de resonancia paralela fp de un cristal de cuarzo es cerca del 0.3 por ciento por encima
de su frecuencia de resonancia en serie, fs. Las frmulas para fp y fs son:
P
fs =
LC

fp = P (1/ L)(1/ C + 1/C ' )


donde
P =1/2
L = inductancia del cristal, henrios
C = capacitancia del cristal, faradios
C' = capacitancia entre los electrodos, faradios
Escriba un programa para calcular e imprimir los valores de las frecuencias de resonancia.

Datos para usar como ejemplo


L = 130 henrios C = 0.025 pF C' = 3.2 pF

17.- El nmero de Grashof es un parmetro, sin unidades, que se usa para los clculos de trasferencia de
calor, en conveccin libre (vea el problema 11).
Escriba un programa C++ para evaluar e imprimir el nmero Grashof para la conveccin libre en un
conducto (donde el dimetro interior es la dimensin caracterstica), dadas las propiedades del fluido y
la temperatura de las paredes del conducto.

Datos para usar como ejemplo


Fluido = Aire
Temperatura del fluido = 250F
Densidad = 0.0489 lb-m/p'
Viscosidad = 1.669 x 10-5 lb-m/p-seg
Coeficiente de expansin = 0.00367, 1/F
Temperatura del conducto = 800F Dimetro = 1 p

18.- En el teodolito de un topgrafo se visualizan dos lneas de taquimetra que interceptan un segmento de
varilla por encima y por debajo de la lnea horizontal indicada por los marcadores de corte:

_______________
86 C++ Builder Aplicado Ing. Ortiz

Las distancias D y H se calculan por


medio de:
D = 100 S cos2a + C cos a
H =- 50 S sen 2a + C sen a
Escriba un programa C++ que tome
como entrada las medidas R, S y T en
pies, a en grados y minutos, y la
constante del instrumento C; como
salida el programa debe imprimir la
distancia horizontal entre los puntos A y
B tambin como su diferencia en
elevacin.
Datos para usar como ejemplo

SerieR S T a C
1 6.00 2.35 5.00 1023' 1.15
2 4.75 1.97 5.29 1439' 0.98

19.- Un capacitor variable se usa para proveer trasferencia de impedancia; por ejemplo, para acoplar un
circuito sintonizado a un amplificador de potencia. Las siguientes son las frmulas necesarias:

Donde
C = capacitancia requerida para producir resonancia paralela con una inductancia L a una frecuencia f, F
f = frecuencia de resonancia, hz
L = inductancia, henrios
Q = Q de inductancia L a una frecuencia f
Reff = resistencia en serle efectiva de la inductancia L, ohmios
Rpar = resistencia en paralelo de la inductancia L, ohmios
C1 = la parte superior de C por encima de la variacin, faradios
C2 = la parte inferior de C, la que est conectada al amplificador, faradios
Ramp = valor ptimo de la resistencia de carga del amplificador, ohmios
Escriba un programa que calcule e imprima los valores de C 1 y C2, para valores solicitados de f, L, Q,
Ramp y Ref
Datos para usar como ejemplo
f = 3300 hz
L = 0.0028 henrios
Q = 60
Ramp = 150 ohm
R ef = 0.91 ohm

20.- El tamao de un eje:


16 T
D= 3
S
donde
D = dimetro del eje, en pul

______________
Introduccin a las Bases de Datos 87

T = momento de torsin, en lb pul


S = esfuerzo cortante, en lb/pul2
Escribir un programa en C++ que calcule el dimetro del eje.

21.- El torque trasmitido por un eje de trasmisin que produce una cantidad de caballos de fuerza, a una
velocidad rotacional constante, se da por medio de la frmula:
( HP) (63 000)
T =
N
donde
T = momento de torsin, lb-pul
HP = caballos de fuerza
N = velocidad rotacional, rev/min
La frmula para seleccionar un eje de trasmisin de tamao apropiado se dio en el problema 20.
Escriba un programa que tome como datos de entrada los caballos de fuerza que se van a generar, la
velocidad del eje, y el esfuerzo de corte permitido por el material del eje: el programa debe imprimir el
dimetro del eje requerido.
Datos para usar como ejemplo
Grupo H P N S
1 600 85 6000
2 5 1800 6000
3 5 3600 6000

22.-. Modifique el programa escrito en el problema 21 de tal manera que los datos de salida incluyan,
adems del dimetro del eje, los datos de entrada, Use proposiciones de salida que provean nombres
apropiados para todos los valores de salida. (Esta tcnica de escribir los datos de entrada junto con los
datos de salida es una buena prctica de programacin.)

23.- La intensidad del campo magntico H en el centro de un cascarn esfrico es:

donde
H3 = intensidad magntica en el centro del cascarn, amp/m
Ho = intensidad magntica en el exterior del cascarn, amp/m
= permeabilidad del cascarn, h/m
o = permeabilidad del espacio, h/m
a = radio interior del cascarn, m
b = radio exterior del C++ Builder que lea los valores de las dos permeabilidades y la relacin de los
radios, e imprima el valor de la relacin H3/Ho.
Datos para usar como ejemplo
o = 4 x 10-7
= 500 o
a/b = 0.98

_______________

Você também pode gostar