Está en la página 1de 264

Estructura del C++ Builder

47

Captulo II
ESTRUCTURA DEL C++ BUILDER.

C++ tiene la reputacin de ser un lenguaje muy poderoso, pero con el


poder viene la responsabilidad, el programador debe de conocer una serie de
conceptos y reglas de uso. Esto requiere de suficiente experiencia, un gran
trato y conocimiento del lenguaje cuando est programando aplicaciones
windows complejas. El hecho es: C++ es un lenguaje complejo con
demasiadas reglas y terminos confusos, y el usuario tiene adems que
aprender tcnicas de programacin orientadas a objetos.
Productos como Borland Delphi y Microsoft Visual Bsic, viene a provocar
un cambio irreversible en la programacin visual, ya que usando esas
herramientas, los programadores pueden crear aplicaciones mucho mas fcil
y rpido de lo que lo hacan anteriormente, ahora los desarrolladores solo
tienen que mover los objetos que requieren usar, modificarlos de acuerdo a
sus necesidades (solo llenando las funciones vacias), y es todo, una
aplicacin ejecutable es creada.
C++ Builder trabaja sobre la misma lnea que Delphi y Visual Basic. Este
desarrollo Rapido de aplicaciones hacen mas fcil la construccin de sus
proyectos. Con estas herramientas de programacin usted tiene mas poder
con menos responsabilidad.
C++ Builder habilita y produce aplicaciones ejecutables bajo windows95 o
windows NT con soporte de 32 bits; El cdigo se ejecutar mucho ms
rpido.
Y puede ser que de otra manera C++ Builder lo haga un mejor programador.

2.1 EL C++ BUILDER.


Borland ofrece tres diferentes versiones de C++ Builder y cada versin ser de acuerdo a
sus necesidades.
C++ BUILDER STANDAR. Proporciona todas las herramientas que necesita para el
desarrollo de aplicaciones de bases de datos, sta versin ocupa aproximadamente 75 MB
de espacio en su disco duro.

Estructura del C++ Builder

48

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, esta versin ocupa cerca de 100 MB de espacio en su disco duro.
C++ BUILDER, SERIE CLIENTE/SERVIDOR. Estamos hablando de compatibilidad
con bases de datos gigantes, esta versin est equipada con desarrolladores profesionales
que necesitan enlazar con grandes corporaciones de Bases de Datos, tomando la
arquitectura cliente servidor. Esta versin ocupa cuando menos 130 MB de espacio en su
disco duro.

2.2 REQUERIMIENTOS DE HARDWARE.


Necesita una Pc con un procesador lo suficientemente poderoso y una amplia memoria.
Mientras ms poderosa sea su Pc, ms productiva puede ser. C++ Builder es un producto
bastante poderoso y como tal hace significantes demandas en su mquina.
Para una correcta ejecucin de sus aplicaciones, se recomienda un procesador 486 y
preferentemente uno basado en un procesador pentium, por lo menos 16 MB en RAM
aunque Borland recomienda 24 MB en RAM. Ya que el desarrollo en C++ Builder corre
en sistemas operativos de 32 bits, bajo Windows 95 o Windows NT; la capacidad del
disco duro depende de la versin de C++ Builder que est usando.

Estructura del C++ Builder

49

2.3 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, iniciando por las preferencias de instalacin del programa (Completa,
Compacta, Personalizada) y su propia informacin para registrar el producto, si no se tiene
suficiente espacio en disco duro, puedes instalar la versin mnima y tendr que tener el
CD en tu lector de disco compacto cada vez que quieras modificar una aplicacin.

Al final de las rutinas de instalacin, aparecer un nuevo grupo de


programas, podrs ejecutar la aplicacin haciendo doble click en el icono de
C++ Builder.

FIG 2.3.1 Icono de aplicacin de C++ Builder.

Estructura del C++ Builder

50

2.4 AMBIENTE DE DESARROLLO INTEGRADO.


Cuando usted inicia C++ Builder, espera ver una solo ventana para desarrollar sus
aplicaciones; pero C++ Builder le presenta un grupo de ventanas dispersas al rededor de su
ventana principal. Fig II.4.1 Al hacer doble click en el icono de C++ Builder.
Barra de
Herramientas

Inspector
de

Paleta de
Componentes

Ventana de
edicin.

Diseo de
la forma
FIG. 2.4.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 Ingles IDE). Cada parte en el ambiente de
desarrollo trabaja conjuntamente, diseos visuales y editor de cdigo donde la edicin es
similar a otros editores; solo que con el ambiente de dasarrollo integrado, usted puede
observar realmente lo que esta construyendo al momento de crearlo.

Estructura del C++ Builder

51

Idealmente se deseara trabajar con una resolucin de 800 x 600 o tal vez mayor en su
monitor, ya que estas resoluciones dan una sensacin de amplitud; pero recuerde que al
disear sus aplicaciones el usuario final puede trabajar con una resolucin diferente a la
suya, la manera mas sencilla de evitar problemas sera realizar sus aplicaciones para una
de 480 x 640.
2.4.1 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 de una manera rapida de ejecutar operaciones del programa con un
simple click con su mouse.

FIG. 2.4.1.1 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 de edicin
Borrar archivo del proyecto
Grabar archivo seleccionado
Abrir Archivo

FIG. 2.4.1.2 Barra de herramientas.

Estructura del C++ Builder

52

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 propiedades, tendr a su disposicin el editor de la barra de
herramientas 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.

FIG. 2.4.1.3

Editor de la barra de herramientas.

Si lo que desea es remover alguna propiedad de la barra de herramientas, solamente jlelo


con el mouse fuera del panel de la barra de herramientas y desaparecer.

2.4.2 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. Est dividida en pginas o grupos de
acuerdo a sus funciones. Para implantar uno de estos componentes en tu aplicacin, solo
tienes que seleccionarlo con el mouse haciendo un click en el objeto deseado y hacer click
en la forma principal (Forma de edicin, ventana punteada) para que ya puedas utilizar ese
objeto. C++ Builder soporta docenas de componentes.

FIG. 2.4.2.1

Paleta de componentes.

Estructura del C++ Builder

53

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.

FIG. 2.4.2.2

Paleta de componentes Standard.

Win95: Estos componentes permiten el acceso a los controles de usuario-interface de


Windows95. Uno de los principales es la vista del rbol de directorio, (conocido como
windows explorer), control de pgina, etc.

FIG. 2.4.2.3

Paleta de componentes Win95.

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. 2.4.2.4

Paleta de componentes Additional.

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.4.2.5

FIG. 2.4.2.6

Paleta de componentes Data Access.

Paleta de componentes Data Controls.

Estructura del C++ Builder

54

Win31: Muchos de los controles en Win31 tienen equivalentes en Win95 pero estas
pueden usarse para dar sentido a aplicaciones para windows V. 3.1 adems de
proporcionar un block de notas.

FIG. 2.4.2.7

Paleta de componentes Win 3.1.

Internet: Esta tabla dada por C++ Builder, comprende lo referente al grupo de
herramientas de internet.

FIG. 2.4.2.8

Paleta de componentes Internet.

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.4.2.9

Paleta de componentes Dialogs.

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

FIG. 2.4.2.10 Paleta de componentes System.

Qreport: (o Quick Reports) provee de componentes para que pueda fcilmente organizar
sus reportes y presenta la facilidad de una vista preliminar.

FIG. 2.4.2.11

Paleta de componentes Qreport.

Estructura del C++ Builder

55

ActiveX: Esta tabla de componentes, contiene un checador de ortografa as como objetos


grficos impresionantes.

FIG. 2.4.2.12

Paleta de componentes ActiveX.

Durante el desarrollo de este trabajo, solo presentar el uso de algunos de los


objetos de la tabla de componentes, pero la idea es la misma para todos los objetos de esta
paleta.

2.4.3 EL EDITOR DE LA FORMA.


Cuando comienzas a trabajar con C++ Builder, tu espacio de trabajo y resultados se
suple por la forma principal (Referida en la Fig. II.4.1 Como diseo de la forma).

FIG. 2.4.3.1

Editor de la forma.

Cada forma representa una ventana individual en tu aplicacin; en la forma puedes


disear, aadir, eliminar reconfigurar los componentes segn las necesidades de tu
aplicacin.

Estructura del C++ Builder

56

2.4.4 EL INSPECTOR DE OBJETOS.


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.
Propiedades: 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.
Eventos: La tabla de eventos despliega para cada objeto los eventos como son:
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.

FIG. 2.4.4.1

Inspector de objetos.

Estructura del C++ Builder

57

2.4.5 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 se desee para ese evento.

FIG. 2.4.5.1 Ventana de edicin de cdigo.

2.5 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, 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.

FIG. 2.5.1 Manejador de proyectos.

Estructura del C++ Builder

58

2.5.1 COMO AADIR ARCHIVOS A UN PROYECTO.

Para aadir archivos a un proyecto, seleccione del men principal: View Proyect
Manager
y al hacer doble click obtendr una caja con la informacin de los
componentes actuales del proyecto (FIG. II.5.1), haga click en el botn de integracin al
, y saldr una ventana de adicin Add to proyect, donde puede buscar
proyecto,
La ruta de acceso donde se encuentre el archivo a aadir, y haga click en el botn Ok para
cerrar la caja de dialogo y obtendr ya aadido a su proyecto el archivo seleccionado.

FIG. 2.5.1.1 Ventana de adicin al proyecto.

2.5.2 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
borrado de la lista. (no de su mquina, solo del proyecto).

y ser

2.6 OPCIONES DEL PROYECTO.


Puede accesar a detalles del ambiente de configuracin del proyecto actual eligiendo del
men principal Options Proyect.
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.

Estructura del C++ Builder

59

2.6.1 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.

FIG. 2.6.1.1 Opciones del proyecto, pgina de Formas.

2.6.2 LA PAGINA DE APLICACIONES.


La pgina de aplicaciones contiene 3 mascaras de configuracin:

FIG. 2.6.2.1 Opciones del proyecto, pgina de Aplicaciones.

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.

Estructura del C++ Builder

60

2.6.3 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.

FIG. 2.6.3.1 Opciones del proyecto, pgina de C++.

2.6.4 LA PAGINA PASCAL .


C++ Builder tiene un hermano mayor llamado Delphi que es una herramienta RAD. Y sus
aplicaciones se 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.

FIG. 2.6.4.1 Opciones del proyecto, pgina de Pascal.

Estructura del C++ Builder

61

2.6.5 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.

FIG. 2.6.5.1 Opciones del proyecto, pgina Linker.

2.6.6 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.

FIG. 2.6.6.1 Opciones del proyecto, pgina de directorios/Condicional.

Estructura del C++ Builder

62

2.7 ARCHIVOS FUENTE GENERADOS POR C++ BUILDER.


Cada una de las siguientes extenciones son vitales para cualquier proyecto de C++
Builder.
Los siguientes archivos contienen detalles del diseo de sus proyectos y formas, tenga
cuidado en no perder ninguno ya que puede utilizarlos si quisiera modificar alguna
aplicacin hecha.
Project1.mak: Este es el archivo principal de opciones del proyecto. Un archivo .mak 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, 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.

Estructura del C++ Builder

63

FIG. 2.7.1 Ver la forma como texto

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.
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.
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.

C++ Builder, un constructor de aplicaciones

63

Captulo III
Cmo Crear un Nuevo Proyecto
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 construccion 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, menus, ventanas de dialogo, barras de estado, la
presentacin de campos tipo memo, la visualizacin de directorios, la
presentacin de imagenes, secuencias de impresin, y muchas ms cosas
que comunmente 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.

3.1 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, como mencion
anteriormente; no presentar cada uno de ellos, pero lo que mostrar es 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.

C++ Builder, un constructor de aplicaciones

64

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. 3.1.1 Ejecucin de un programa sin cdigo en C++ Builder.

Usted ha hecho cambios a las propiedades de la forma usando el inspector de objetos.


A continuacin daremos 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, 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 halla 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

C++ Builder, un constructor de aplicaciones

65

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.

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 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.

C++ Builder, un constructor de aplicaciones

66

FIG. 3.1.2 Interfase Documento Mltiple.

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

BiSystemMenu

BiMinimize

BiMaximize

BiHelp

Que sucede cuando se selecciona la subpropiedad.


Cuando selecciones con un clic con el botn derecho del mouse
cualquier parte de la barra 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 momento de
ejecutarse.
Coloca en la barra de titulo un pequeo icono que permite
maximizar la forma con que se est trabajando al momento de
ejecutarse.
Coloca un botn "?" en la forma. Cuando el usuario hace clic
proporciona una pequea definicin del objeto en contexto
sensitivo.

C++ Builder, un constructor de aplicaciones

67

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.
Subpropiedad

BsNone
BsSingle.
BsDialog
BsSingle
BsSizeWin
BsToolWindow
BsSizeable

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 aplicacin ya
que esta opcin no muestra una barra de titulo..
Permite mover, minimizar o maximizar pero no escalar.
Solo permite mover, ni maximizar ni minimizar ni escalar.
Permite mover, minimizar o maximizar pero no escalar.
Solo permite mover y escalar, no permite ni maximizar ni
minimizar ni escalar.
Solo permite mover, ni maximizar ni minimizar ni escalar.
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 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:
cbuilder\images\icons. Y presenta un editor de iconos, puede experimentar con esta
herramienta seleccionando del men principal: Tools Image Editor.
LA PROPIEDAD POSITION. Determina donde ser desplegada la forma en la pantalla
de la computadora posicin (x,y).
Subpropiedad

Que sucede cuando se selecciona la subpropiedad.

C++ Builder, un constructor de aplicaciones

68

PoDesigned

Aparece la forma en la posicin en la que estaba al momento de


correr el programa.

PoScreenCenter

Si se escala se escalar de manera de quedar en el centro de la


pantalla.
Deja la forma en la posicin en que la coloque el usuario.

PoDefault
PoDefaultPosOnly
PoDefaultSizeOnly

Deja la forma en la posicin en que la coloque el usuario.


Deja la forma en la posicin en que la coloque el usuario.

LA PROPIEDAD WINDOWSTATE. Esta propiedad muestra las caractersticas de la


forma al momento de ejecutarse

WsNormal

La forma aparece de la manera en que se defini al momento de


crearse (dimensiones y posicin).

WsMinimized

Al momento de ejecutar la aplicacin, la forma aparecer


minimizada en su pantalla.

WsMaximized

Al momento de ejecutar la aplicacin, la forma abarcar la totalidad


de la pantalla.

3.2

COMO FUNCIONAN LOS EVENTOS.

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

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.

C++ Builder, un constructor de aplicaciones

69

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:

FIG. 3.2.1.1 Edicin de una lnea de cdigo en el evento OnClick de la Forma principal.

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


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

C++ Builder, un constructor de aplicaciones

70

FIG. 3.2.1.2 Resultado de ejecutar el programa OnClick.

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.
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.

C++ Builder, un constructor de aplicaciones

3.2.2

71

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.

3.2.3

EVENTOS DE SISTEMA.

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

Evento
OnActivate

Cuando ocurre
Cuando la forma se activa.

Mostrar la forma.

Despus de cerrar la forma.

Cierra la aplicacin libera los recursos


que fueron usados por la aplicacin.

OnClose
OnCloseQuery
OnCreate

Para que se usa.

Cuando se intenta cerrar la Checa que los datos se hallan grabado


forma.
antes de cerrar las bases de datos.
Cuando se crea la forma

Inicializar el cdigo.

OnDeactivate

Cuando se para la ejecucin Guarda informacin


de una aplicacin.
temporales.

OnDestroy

Al intentar
aplicacin.

cerrar

la Libera memoria
aplicacin.

en

utilizada

variables
en

la

C++ Builder, un constructor de aplicaciones

OnPaint
OnResize

72

Cuando la forma necesita Redibuja y muestra datos en el rea que


ser redibujada.
se redibuj.
Cuando cambia el tamao Mover o escalar la forma.
de la forma

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.

3.3 EXPLORANDO LA PALETA DE COMPONENTES.


Usted puede seleccionar cualquier cantidad de objetos de la paleta de componentes y
colocarlos en su forma, primero seleccionando con doble clic del mouse en el componente
deseado y aparecer en algn lugar de su forma, acomdelos donde usted quiera que
aparezcan al momento de ejecutar la aplicacin.

C++ Builder, un constructor de aplicaciones

3.3.1

73

USO DE PANELES, ETIQUETAS, LINEAS DE EDICION,


Y BOTONES DE SELECCION.

1.- Elija del men principal File New Application.


2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11.
3.- De la paleta de componentes en la hoja Standard seleccione 2 objetos Panel haciendo
doble clic en el objeto

)y acomdelos de la siguiente manera:

FIG. 3.3.1.1 Acomodo de dos componentes Panel en la Forma para una aplicacin particular.

4.- De la paleta de componentes en la hoja Standard seleccione 2 objetos Etiqueta(Label)


haciendo doble clic en el objeto
(
), con el inspector de objetos cambie el titulo a
la Label1 por el siguiente Etiqueta en panel1 y acomdelos de la siguiente manera:

C++ Builder, un constructor de aplicaciones

74

FIG. 3.3.1.2 Acomodo de dos componentes Label en la Forma para una aplicacin particular.

5.- De la paleta de componentes en la hoja Standard seleccione 2 objetos Lnea de Edicin


(
), con el inspector de objetos cambie el titulo (en
haciendo doble clic en el objeto
la propiedad Text) a Edit1 por el siguiente Lnea de edicin en panel1 y acomdelos de
la siguiente manera:

FIG. 3.3.1.3 Acomodo de dos componentes Edit en la Forma para una aplicacin particular.

6.- De la paleta de componentes en la hoja Standard seleccione 2 objetos Botn haciendo


(
), con el inspector de objetos cambie el titulo a Botton1
doble clic en el objeto
por el siguiente Copia a Panel2 y botton2 por el siguiente: Salir y acomdelos de la
siguiente manera:

C++ Builder, un constructor de aplicaciones

FIG. 3.3.1.4 Acomodo de dos componentes Button en la Forma para una aplicacin particular.

7.- Haga doble clic sobre el botn Copia a Panel2 Para obtener su funcin.
8.- Repita la accin pero ahora en el botn Salir.
9.- Teclee el siguiente Cdigo en la Funcin. Button1Click (Copia a Panel2):
Label2->Color=clOlive;
Label2->Caption = Label1->Caption;
Edit2->Color=clTeal;
Edit2->Text = Edit1->Text;
10.- Teclee el siguiente Cdigo en la Funcin. Button2Click (Salir):
exit(0;)
11.- Presione la tecla de funcin F9 para ejecutar el programa.
Y oprime el botn de copia.

75

C++ Builder, un constructor de aplicaciones

76

FIG. 3.3.1.5 Resultado de la ejecucin de sta aplicacin particular.

Y si oprime el Botn salir se destruir la forma.

3.3.2

USO DE COMPONENTES MEMO.

El componente Memo sirve para presentar varias y grandes lneas de texto.


1.- Elija del men principal File New Application.
2.- Si no esta presente el inspector de objetos presione la tecla de funcin F11. Seleccione
del inspector de objetos el evento OnCreate haciendo doble clic y escriba el siguiente
cdigo.Memo1->Lines->LoadFromFile(Unit1.cpp);
3.- De la paleta de componentes en la hoja Standard seleccione 1 objeto Panel haciendo
doble clic en el objeto

)y acomdelo de manera que abarque toda la forma:

C++ Builder, un constructor de aplicaciones

77

FIG. 3.3.2.1 Acomodo de un componente Panel en la Forma para una aplicacin particular.

4.- Seleccione de la paleta de componentes Standard, el objeto Memo


extindalo sobre el panel de la siguiente manera:

), y

FIG. 3.3.2.2 Acomodo de un componente Memo en la Forma para una aplicacin particular.

(
), y
5.- Seleccione de la paleta de componentes Standard, el 3 objetos Botn
acomdelos sobre el panel, cambie el titulo de cada botn (Grabar, Limpiar, Salir), de la
siguiente manera:

C++ Builder, un constructor de aplicaciones

78

FIG. 3.3.2.3 Acomodo de tres componentes Button en la Forma para una aplicacin particular.

6.- De la paleta de componentes en la hoja Win95 seleccione el objeto de barra de progreso


(

) y colquelo de la siguiente manera:

FIG. 3.3.2.4 Acomodo de un componente ProgressBar en la Forma para una aplicacin particular.

7.- Con el inspector de objetos, modifique la propiedad Visible a False y la propiedad Max
a 40 y la propiedad step en 10.
8.- Haga doble clic en el botn Grabar y teclee el siguiente cdigo:
Memo1->Lines->SaveToFile("Unidad1.txt");
ProgressBar1->Visible=true;
for(ProgressBar1->Position=0;ProgressBar1->Position<=ProgressBar1->
Max;ProgressBar1->Position+=10)
{ Application->ProcessMessages();
sleep(1); }
ProgressBar1->Visible=false;

C++ Builder, un constructor de aplicaciones

79

9.- Haga doble clic en el botn Limpiar y teclee el siguiente cdigo:


Form1->Invalidate();
10.- Haga doble clic en el botn Salir y teclee el siguiente cdigo:
exit(0);
11.- Salve su proyecto en el directorio raz de c:\ Con los nombres que por default da el
C++ Builder.
12.- Incluya el archivo de cabecera #include <dos.h>,y presione la tecla de funcin F9 para
ejecutar su aplicacin. Y al correr su programa obtendr el siguiente resultado.

FIG. 3.3.2.5 Resultado de la ejecucin de sta aplicacin particular.

Y al oprimir el botn de grabar se ver lo siguiente:

FIG. 3.3.2.6 Resultado de la ejecucin de sta aplicacin particular en la opcin Grabar.

C++ Builder, un constructor de aplicaciones

3.3.3

80

USO DEL COMPONENTE LISTBOX.

El componente ListBox muestra una lista de opciones de las que se puede elegir, puede
elegir una o varias, 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.
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 Standadrd.

4.- En la propiedad Items haga doble clic; aparecer una ventana de edicin, en ella; teclee
una lista de datos como la que se muestra en la figura.

FIG 3.3.3.1 Editor de lneas para un ListBox.

5.- Cuando finalices selecciona Ok. Con el mouse.


(
), de la paleta de componentes Standard y
6.- Seleccione un objeto etiqueta
colcalo en la forma de manera que su forma se luzca as:

C++ Builder, un constructor de aplicaciones

81

FIG 3.3.3.2 Componente ListBox Editado.

7.- Selecciona el objeto ListBox de tu forma con un clic del mouse; posteriormente con el
inspector de objetos en la hoja de eventos haz doble clic y en el editor de cdigo en su
funcin teclea el siguiente cdigo:
Label1->Caption = ListBox1->Items->Strings[ListBox1->ItemIndex];
8.- Ejecute su programa y vea que al seleccionar una opcin de la lista se presenta ese texto
en la etiqueta.

FIG 3.3.3.3 Componente ListBox Editado.

3.3.4

USO DEL COMPONENTE COMBOBOX.

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.
Presenta 3 tipos de ComboBox.

C++ Builder, un constructor de aplicaciones

82

Simple
DropDown

DropDownList
FIG 3.3.4.1 Tipos del Componente ComboBox.

Usted ver en su aplicacin slo una lnea de edicin, pero podr desplegarla al momento
de seleccionar su opcin. Y se ver de la siguiente manera:

FIG 3.3.3.2 Componente 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


en la forma.

). y colquelo

C++ Builder, un constructor de aplicaciones

83

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.

3.3.5

USO DEL COMPONENTE SCROLLBAR.

El componente ScrollBar se usa la mayor parte de las veces combinado con otros controles.
Las propiedades mas importantes de este componente son:
Kind
Max - Min.

Position

Large Change
SmallChange

Permite dos opciones para la barra, vertical u horizontal.


Nmero mnimo o mximo de pasos en los que est dividida
la barra (en una posicin relativa).
Toma el valor actual del numero de pasos de la barra segn se
modifique por medio de sus botones de incremento y
decremento.
.
Determina la distancia que la barra se mover cuando el
usuario mueva sus controles.
Numero de movimientos que har del extremo de la barra
(nmero que se defini en 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.

C++ Builder, un constructor de aplicaciones

84

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


)y colquela

3.- Seleccione ScrollBarr de la paleta de componentes Standard (


en la Forma.
4.- Cambie las siguientes propiedades de la barra con el inspector de objetos.
Propiedad
Large Change
Max
SmallChange

Valor
32
255
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 (
forma. Borre el nombre de Panel1 en la propiedad Caption.

) y colquelo en la

) y colquelo en la
9.- Seleccione de la paleta de componentes un objeto Label (
forma, haga tres copias de ella, cmbiele nombres(Label1 = Azul, Label2 = Verde, Label3
= Rojo) y acomdelos de la siguiente manera.

FIG 3.3.5.1 Acomodo de los componentes ScrollBar para una aplicacin de color.

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 el siguiente cdigo.
Panel1->Color = RGB(ScrollBar1 -> Position,
ScrollBar2 -> Position,
ScrollBar3 -> Position );

C++ Builder, un constructor de aplicaciones

85

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


Label2->Caption = IntToStr(ScrollBar2 -> Position);
Label3->Caption = IntToStr(ScrollBar3 -> Position);
12.- Ejecute su programa y juegue con los controles.

FIG 3.3.5.1 Resultado de la ejecucin de la aplicacin de color.

3.3.6

USO DEL COMPONENTE BITBTN.

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 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 un editor
de imgenes en el que podr seleccionar la imagen que desee en su botn.

FIG 3.3.6.1 Interfase de Imgenes del componente BitBtn.

C++ Builder, un constructor de aplicaciones

86

4.- Haga clic en el botn Load, para seleccionar una imagen, si no se encuentra en ese
directorio puede buscarla en esta misma opcin.

FIG. 3.3.6.2 Directorio de Imgenes de C++ Builder.

5.- Seleccione la imagen deseada y oprima el botn Open. Y en el editor de imgenes el


botn OK.
Puede repetir esta accin y poner barios BitBtn en su aplicacin.

FIG. 3.3.6.3 Uso de imgenes en componentes BitBtn.

3.3.7

USO DE BOTONES ACELERADORES.

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.

C++ Builder, un constructor de aplicaciones

87

4.- Utilice el inspector de objetos para colocar un titulo ( Caption ) en lo botones


aceleradores como se muestra en la figura.

FIG. 3.3.7.1 Botones aceleradores.

5.- Y en la propiedad GroupIndex coloque el nmero 1. Lo que indicar que los botones
trabajarn como grupo y cuando uno sea seleccionado permanecer presionado hasta que
otro botn del grupo sea seleccionado, presentando una eleccin exclusiva para el usuario.
6.- Ejecute su aplicacin y vea como trabajan los botones aceleradores.

FIG. 3.3.7.2 Ejecucin del programa Botones aceleradores.

3.3.8

USO DE CAJAS DE VERIFICACION.

Cuando dentro de sus aplicaciones necesite verificar de entre varias opciones; las cajas de
verificacin son un componente que puede ofrecerle grandes ventajas y una excelente
presentacin. Las cajas de seleccin las puede usar cuando necesite seleccionar entre varias
opciones un grupo de ellas o su totalidad.
Usted puede seleccionar este componente de la paleta de componentes Standard, su uso
comnmente se combina con botones, as que como ejemplo puede utilizar el programa que
construy en la seccin de botones aceleradores e incluirle los siguientes pasos.
1.- Seleccione de la hoja Standard de componentes el objeto CheckBox (
coloque 4 copias de este objeto en su forma.

)y

2.- Con el inspector de objetos cambie los ttulos de las cajas como se muestra en la figura:

C++ Builder, un constructor de aplicaciones

88

FIG. 3.3.8.1 Botones aceleradores y cajas de verificacin.

3.- Haga doble clic en cada un de los botones aceleradores e incluya el siguiente cdigo en
cada funcin como se muestra:
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
CheckBox2->Checked = true;
CheckBox1->Checked = false;
CheckBox3->Checked = false;
CheckBox4->Checked = false;
}
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
CheckBox3->Checked = true;
CheckBox1->Checked = false;
CheckBox2->Checked = false;
CheckBox4->Checked = false;
}
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
CheckBox4->Checked = true;
CheckBox1->Checked = false;
CheckBox2->Checked = false;
CheckBox3->Checked = false;
}
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
CheckBox1->Checked = true;
CheckBox2->Checked = false;
CheckBox3->Checked = false;
CheckBox4->Checked = false;
}
4.- Ejecute su programa y oprima los botones aceleradores, y observe su accin sobre las
cajas de verificacin.

C++ Builder, un constructor de aplicaciones

89

FIG. 3.3.8.2 Ejecucin del programa verificacin acelerada.

3.3.9

USO DE BOTONES CIRCULARES (RADIO BUTTON).

Los botones circulares trabajan semejante a las cajas de verificacin, solo que en estos solo
puedes tener una sola seleccin y en las cajas de verificacin puedes tener todas las cajas
seleccionadas.
Para ejemplificar su uso siga los siguientes pasos donde tambin utilizar el componente
RadioGroup de la hoja Standard de componentes, ya que su uso es prcticamente igual, la
diferencia estriba en que el RadioButton es un solo componente, y el Radiogroup pueden
ser varios.
1.- Elija del men principal File New Application.
2.- Seleccione de la paleta de componentes, en la hoja Standard, el objeto RadioButton
(

), y haga 5 copias de el en la forma.

3.- Con el inspector de objetos cambie la propiedad de titulo (Caption), como se muestra a
continuacin.

FIG. 3.3.9.1 Acomodo de componentes RadioButton.

4.- Seleccione de la paleta de componentes, en la hoja Standard, el objeto RadioGroup


(
), y colquelo en la forma. Cambie el Titulo a Auto Detallado con el
inspector de objetos en la propiedad Caption.

C++ Builder, un constructor de aplicaciones

90

FIG. 3.3.9.2 Acomodo del componente RadioGroup.

5.- En el inspector de objetos para este componente, seleccione la propiedad Items y haga
doble clic, en ese momento aparecer una ventana de edicin; en ella teclee los mismos
nombres que en los RadioButtons como se muestra en la Figura.

FIG. 3.3.9.3 Editor para el componente RadioGroup.

6.- Seleccione el botn Ok. Para cerrar esta ventana de edicin y obtendr el siguiente
resultado:

FIG. 3.3.9.4 Acomodo de componentes RadioButton y RadioGroup.

7.- Presione la tecla de funcin F9 para ejecutar su aplicacin y observe los resultados.

C++ Builder, un constructor de aplicaciones

3.3.10

91

USO DE MASCARAS EN LA EDICIN (MASKEDIT).

Este componente es usado para evitar que el usuario introduzca datos distintos a lo validos,
ya que solo el tipo de dato y en la forma en que se indique, es lo que el usuario podr
introducir en este componente.
Para observar mejor su uso, siga los siguientes pasos:
1.- Elija del men principal File New Application.

2.- En la hoja Additional de la paleta de componentes, seleccione el objeto MaskEdit


(

), y colquelo en la forma.

3.- Con el inspector de objetos, seleccione la propiedad EditMask haciendo doble clic, en
ese instante aparecer un editor de tipos en el que existe una variedad de tipos de datos
definidos de los que puede seleccionar posteriormente..

FIG. 3.3.10.1

Editor de mascaras.

4.- En la caja de dialogo(Input Mask) introduzca el siguiente cdigo:


LLLLL00000 y seleccione el botn OK.
5.- Ejecute su programa y trate de introducir texto y nmeros, observe que pasa.
Usted puede elaborar su propia mascara o secuencia de caracteres siguiendo las
indicaciones de la siguiente tabla:

C++ Builder, un constructor de aplicaciones

Caractr

92

Usado para enmascarar...


Permite introducir letras o nmeros (ejemplo A Z, a z, 0 9)

Permite introducir letras (ejemplo A Z, a z)

Permite caracteres numricos solamente

Permite introducir caracteres numricos signados (+) y (-)

#
_(Guin Bajo)

Inserta un espacio en esa posicin.

>

Convierte todos los caracteres a Mayscula hasta que encuentra el


signo <.

<

Convierte todos los caracteres a Minscula hasta que encuentra el


signo >.

3.3.11

Remueve los caracteres iniciales en blanco (espacios) que se encuentre


en la mascara. Ejm.
12345. Remueve los espacios iniciales y
queda as 12345.

USO DE COMPONENTE DE APARIENCIA (SHAPE).

El componente Shape por si solo no es muy til, pero combinado con otros componentes y
mucho ingenio, se pueden lograr resultados excelentes.
Este componente se encuentra en la hoja Additional de la paleta de componentes.
Vea el uso de sus propiedades con el inspector de objetos de este componente.

3.3.11.1

LA PROPIEDAD SHAPE.

Esta propiedad determina cual ser la configuracin o forma del objeto, usted tiene para
elegir entre 6 formas que puede tomar su objeto.
Seleccione de la paleta de componentes Additional un componente Shape (
colquelo en su forma para observar como funciona esta propiedad.

)y

C++ Builder, un constructor de aplicaciones

93

FIG. 3.3.11.1 Objeto Shape en sus seis distintas formas.

3.3.11.2

LAS PROPIEDADES HEIGHT Y WIDTH.

Estas propiedades sirven para ajustar el tamao exacto de las figuras, o simplemente jale
con su mouse la caja de contorno de su figura para ajustarla a su preferencia.
3.3.11.3

LAS PROPIEDADES PEN Y BRUSH.

Con estas propiedades usted determina la forma en que estarn dibujados los objetos shape
que ha seleccionado.
Con la propiedad Pen determina la lnea exterior del objeto.
Width determina la densidad de la lnea exterior.
Color determina el color de la lnea.
Style incluye un rango de valores para inicializar, lnea slida, punteada etc.
Con la propiedad Brush determina el interior del rea del objeto.
Style indica como ser el arrea interior, si slida o achurada en alguna forma.
Color Ser el color que lleve el relleno.

C++ Builder, un constructor de aplicaciones

3.3.12

94

USO DE COMPONENTE IMAGE.

Donde quiera desplegar una imagen o un grfico en su forma, lo puede hacer por medio de
el componente Image.
Para ver como funciona este componente siga los siguientes pasos:
1.- De la paleta de componentes en la hoja Additional, seleccione el componente Image
y colquelo en su forma.
2.- Seleccione la propiedad Picture en el inspector de objetos de la Imagen haciendo doble
clic para obtener la caja de dilogo del componente imagen.
3.- Seleccione el botn LOAD para buscar una imagen de algn directorio.
4.- Seleccione la imagen deseada y oprima el botn Ok.
Si selecciona del inspector de objetos la propiedad stretch = true, la imagen se adaptar al
tamao que tiene su objeto Image ya sea mayor o menor.

3.3.13

USO DEL COMPONENTE STRINGGRID.

El componente StringGrid al igual que DrawGrid, se utilizan para mostrar artculos del
mismo tipo en un formato compacto de renglones y columnas.
StringGrid es como poner varios DrawGrid juntos, por lo que StringGrid es mucho mas
potente, por lo que mostrar el uso de este componente y pocas son las variaciones que
hacer para utilizar DrawGrid.
Siga los siguientes pasos para conocer su funcionamiento.
1.- Abra una nueva aplicacin.
2.- Coloque un objeto panel de la paleta de componentes Standard en su forma, con el
inspector de objetos, en la propiedad Align, seleccione alLeft y remueva el ttulo Panel1 de
la propiedad Caption..
3.- Con el objeto panel seleccionado elija de la paleta de componentes Standard un objeto
Botn y colquelo sobre el panel; modifique el ttulo de Button a Cargar.

4.- En la paleta de componentes System seleccione un objeto DirectoryListBox


colquelo en el panel.

C++ Builder, un constructor de aplicaciones

95

5.- En la paleta de componentes Additional seleccione un objeto StringGrid


y
colquelo en la forma principal, con el inspector de objetos cambie la propiedad align por
alClient.
Y las siguientes propiedades segn se muestra en la siguiente tabla.
PROPIEDAD
ColCount

VALOR
10

DefaultColWidth
DefaultRowHeight
FixedCols
FixedRows
RowCount

80
40
0
0
10

Con el inspector de objetos en la hoja de eventos haga doble clic en el evento OnDrawCell
E introduzca el siguiente cdigo.
if( StringGrid1 -> Objects [ Col ] [ Row ] != 0 )
{
StringGrid1 -> Canvas -> Draw (Rect.Left + 10, Rect.Top + 20, ( Graphics :: TGraphic* )
StringGrid1 -> Objects [ Col ] [ Row ] );
}
6.- Haga doble clic en el objeto botn y coloque el siguiente cdigo:
int Col, Row;
ffblk fbFileData;
TPicture *picThis;
String strPath = DirectoryListBox1->Directory + "\\";
String strWildCard = "*.bmp";
String strTemp = strPath + strWildCard;
findfirst(strTemp.c_str(),&fbFileData, 0);
strTemp = strPath;
strTemp += fbFileData.ff_name;
for(Row=0; Row<16; Row++)
{
for(Col=0;Col<16; Col++)

C++ Builder, un constructor de aplicaciones

96

{
StringGrid1->Cells[Col][Row] = fbFileData.ff_name;
picThis = new TPicture;
picThis->LoadFromFile(strTemp);
StringGrid1->Objects[Col][Row] = (TObject*) picThis->Graphic;
findnext(&fbFileData);
strTemp = strPath;
strTemp = fbFileData.ff_name;
}
}
7.- Incluya las siguientes libreras de cabecera antes de #pragma.
#include <dir.h>
#include <dos.h>
8.- Ejecute su aplicacin y ver el siguiente resultado.

FIG. 3.3.13.1

Uso del componente stringgrid.

Esta forma muestra cada una de los archivos de imagen que se pueden usar en los BtnBits
antes visto.

C++ Builder, un constructor de aplicaciones

3.3.14

97

USO DEL COMPONENTE MAIN MENU.

Los mens proveen de una forma rpida y esttica de hacer cosas complicadas, evitando
elaborar botones para ejecutar algunas cosas.
Los mens, se sitan en la barra de ttulo de la forma que generalmente hemos visto en la
mayora de los paquetes en que trabajamos.
Siga los siguientes pasos para ver como trabaja el Main Men.
1.- Cree una nueva aplicacin.

2.- En la paleta de componentes Standard seleccione un objeto Main Men


colquelo en la forma.

3.- Haga doble clic en este objeto y se abrir el diseador de mens que tiene la siguiente
apariencia.

FIG. 3.3.14.1 llamada al diseador de mens.

4.- Con el inspector de objetos ponga los ttulos del men modificando la propiedad caption
de la siguiente manera.

FIG. 3.3.14.2 Diseador de mens aadiendo identificadores.

C++ Builder, un constructor de aplicaciones

98

FIG. 3.3.14.3 Inspector de objetos en la creacin de mens.

Y al hacer un clic bajo esta opcin de men que colocamos, podemos anexar mas opciones,
ya sea como otra opcin del men (haciendo clic a la derecha) o como submen (haciendo
el clic hacia abajo).

FIG. 3.3.14.4 Creacin de mens.

5.- Cuando ya no necesite mas opciones en su men, cierre el diseador de mens.

C++ Builder, un constructor de aplicaciones

3.3.14.1

99

AADIENDO ACCION A LOS MENUS.

Para que alguna opcin del men tenga su efecto necesita introducir el cdigo de lo que
debe realizar al seleccionar esa opcin.
Haga doble clic en la opcin, para tener acceso a su funcin OnClick, lo que
inmediatamente llamar al editor de cdigo y podr teclear el cdigo que tenga para esa
accin.

FIG. 3.3.14.1 Aadiendo accin a los mens.

3.3.14.2

AADIENDO TECLAS RAPIDAS Y ACCESOS DIRECTOS.

Las teclas rpidas se implantan de manera sencilla en un men principal, solo hay que
aadir un ampersand (&) antes de la palabra que ser el identificador de la accin (esto en
la propiedad caption del inspector de objetos).
Al hacer esto, tenemos implantada una llamada rpida a esa accin solo oprimiendo la tecla
que esta subrayada.
Para implantar atajos (ShortCuts) es igualmente sencillo, si quisiera aadir un shortcut a la
accin cerrar del men anterior, solo tengo que seleccionar la accin cerrar, y con el
inspector de objetos en la propiedad ShortCut escoger la combinacin de teclas que mas
convenga para la accin, en este caso podra poner la combinacin Ctrl + E.

C++ Builder, un constructor de aplicaciones

FIG. 3.3.14.2

3.3.14.3

100

Aadiendo teclas rpidas y Accesos directos.

CREANDO MENUS CON FORMATOS PREDEFINIDOS.

El formato predefinido, es una forma de estandarizar los mens, y es una forma muy rpida
de tener mens completos en un instante, siga los pasos que se muestran para observar su
accin.
1.- Cree una nueva aplicacin.

2.- En la paleta de componentes Standard seleccione un objeto Main Men


colquelo en la forma.

3.- Haga doble clic en este objeto y se abrir el diseador de mens, haga clic derecho en el
diseador y ver un men de opciones,

FIG. 3.3.14.3.1 Men de opciones del diseador de mens.

C++ Builder, un constructor de aplicaciones

101

seleccione Insert From Template y seleccione la opcin que sea til para su aplicacin.

FIG. 3.3.14.3.2 Men de formatos predeterminados.

la forma estandard para la opcin File Men es:

FIG. 3.3.14.3.3 Men File de formatos predeterminados.

Para crear un men para formato predefinido, primero disee su men con las
caractersticas que usted quiera, cuando halla concluido, haga clic con el botn derecho del
mouse y seleccione Save As Template introduzca el nuevo nombre, y tendr listo un
modelo para sus mens.
Como ejemplo mostrar el anterior pero con las palabras en espaol.

C++ Builder, un constructor de aplicaciones

102

FIG. 3.3.14.3.4 Creacin de formatos predefinidos.

FIG. 3.3.14.3.5 Creacin de formatos predefinidos.

3.3.15

USO DE BARRAS DE PROGRESO EN SUS APLICACIONES.


(PROGRESSBAR)

El uso de este componente es muy importante, ya que muestra que efectivamente se est
realizando una accin. Muchas veces el usuario al correr un programa no sabe si esta
ejecutando o si ha ocurrido algn error y su equipo se encuentra bloqueado; con las barras
de progreso, esta duda desaparece, ya que las barras de progreso muestran un avance
determinado en la ejecucin de alguna parte del programa. Esto lo mostramos sin mayor
explicacin en el ejemplo de la seccin III.3.2.
Generalmente este componente se utiliza para: Cargar archivos, Grabar archivos, ejecutar
clculos, o procesos largos que no muestren resultados continuos.
Como otro ejemplo de este componente, siga los siguientes pasos.

C++ Builder, un constructor de aplicaciones

103

1.- Cree una nueva aplicacin.

2.- En la paleta de componentes Win95 seleccione un objeto ProgressBar


en su forma.

y colquelo

3.- En la paleta de componentes Standard seleccione un objeto Label y colquelo en la


forma.
4.- En la paleta de componentes Standard seleccione un objeto Button y colquelo en la
forma, con el inspector de objetos modifique la propiedad Caption a AVANCE,

FIG. 3.3.15.1

Uso de barras de progreso en sus aplicaciones.

en la hoja de eventos haga doble clic en el evento OnClick e introduzca el siguiente cdigo.
for(ProgressBar1->Position=0; ProgressBar1->Position=0< ProgressBar1->Max;
ProgressBar1->Position++)
{
Label1->Caption=string(ProgressBar1->Position) + %;
Application->ProcessMessages();
Sleep(50);
}
Sleep(250);
ProgressBar1->Position=0;
Label1->Caption=String(ProgressBar1->Position) + "%";
5.- Presione la tecla de funcin F9 para ejecutar su programa, presione el botn avance y
tendr el siguiente resultado.

C++ Builder, un constructor de aplicaciones

FIG. 3.3.15.2

3.3.16

104

Uso de barras de progreso en sus aplicaciones.

USO DE BARRAS DE ESTADO EN SUS APLICACIONES.


(STATUSBAR)

Las barras de estado proveen al usuario de informacin de la aplicacin que se est


ejecutando. Usted puede crear mensajes separados y repartirlos en una misma barra de
estado.
Complemente el programa anterior con los siguientes pasos:

1.- En la paleta de componentes Win95 seleccione un objeto StatusBar


y colquelo
en la forma, con el inspector de objetos haga doble clic en la propiedad Panels y
automticamente obtendr la caja de dialogo editor de panels que tiene la siguiente
apariencia.

FIG. 3.3.16.1

Editor de panels de la barra de estado.

2.- Seleccione haciendo clic en el botn New para aadir un panel a la barra de estado.
3.- Escriba el siguiente texto.

C++ Builder, un constructor de aplicaciones

QUE TAL HOY ES :


100
Lowered
oprima el botn Apply.

105

en la ventana Text.
en la ventana Width.
en la ventana Bevel.

4.- Seleccione haciendo clic en el botn New para aadir otro panel a la barra de estado.
5.- Escriba el siguiente texto.
MM/DD/YY
65
Raised
Y oprima el botn Apply.

en la ventana Text.
en la ventana Width.
en la ventana Bevel.

6.- Seleccione haciendo clic en el botn New para aadir otro panel a la barra de estado.
7.- Escriba el siguiente texto.
SON LAS :
100
Lowered
Y oprima el botn Apply.

en la ventana Text.
en la ventana Width.
en la ventana Bevel.

8.- Seleccione haciendo clic en el botn New para aadir otro panel a la barra de estado.
9.- Escriba el siguiente texto.
HH:MM:SS
en la ventana Text.
65
en la ventana Width.
Raised
en la ventana Bevel.
Oprima el botn Apply y el botn Ok.

10.- En la paleta de componentes System seleccione un objeto Timer


inspector de objetos y tendr su forma de la siguiente manera.

, con el

C++ Builder, un constructor de aplicaciones

FIG. 3.3.16.2

106

Textos seleccionados y distribuidos en la barra de estado.

seleccione haciendo doble clic el evento OnTimer e introduzca el siguiente cdigo.


StatusBar1->Panels->Items[3]->Text = Now().TimeString();
StatusBar1->Panels->Items[1]->Text = Now().DateString();
11.- Presione la Tecla F9 para ejecutar su programa.
Y obtendr el siguiente resultado

FIG. 3.3.16.3

3.3.17

Ejecucin del programa de ejemplo de barras de progreso y estado..

USO DEL COMPONENTE RICHEDIT.

Con este componente se da al usuario acceso a todos los archivos de texto y en ellos podr
realizar modificaciones en el estilo del texto, adems de poderlo imprimir.
Con los siguientes pasos podr dotar su aplicacin de un procesador de texto.
1.- Seleccione del men principal File New, y obtendr una caja de dilogo, seleccione
en la hoja de proyectos (projects ) el icono de aplicacin SDI y seleccione con un clic el
botn Ok.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.17.1

107

Nuevos componentes.

2.- Haga clic en el botn Ok para dejar el directorio que marca por omisin, o seleccione un
directorio en el que desee que guarde los archivos que generar este proyecto.

FIG.

3.3.17.2

Caja de dialogo para tomar un directorio destino.

3.- Despus de esto obtendr la siguiente forma:

FIG.

3.3.17.3

Aplicacin SDI, componentes ya integrados en este tipo de aplicacin.

C++ Builder, un constructor de aplicaciones

108

4.- De la paleta de componentes Win95 seleccione el objeto RichEdit


y colquelo en
la forma, con el inspector de objetos modifique la propiedad Align, ponga en ella alClient.
5.- De la paleta de componentes Additional seleccione un objeto SpeedButton y colquelo
en el panel en la parte superior de la forma, repita esta accin seis veces mas.
6.- Usando el inspector de objetos coloque los siguientes valores en las respectivas
propiedades en cada uno de los 7 botones.
Propiedad Name
BtnBold
BtnUnderline
BtnItalic
BtnLeftJust
BtnCenter
BtnRightJust
BtnPrint

GroupIndex
1
2
3
4
4
4
0

Caption
N
S
I
|<
=
>|
Imprime

AllowAllUp settig
true
true
true
false
false
false
false

7.- Seleccione los tres primeros Botones (btnBold , btnUnderline, btnItalic), presionando la
tecla Shift y haciendo clic en cada uno de ellos mientras se presiona la tecla; con el
inspector de objetos haga doble clic en el evento OnClick e introduzca el siguiente cdigo.
TFontStyles fsThis;
if(btnBold->Down)
fsThis<<fsBold;
if(btnUnderline->Down)
fsThis<<fsUnderline;
if(btnItalic->Down)
fsThis<<fsItalic;
RichEdit1->SelAttributes->Style = TFontStyles(fsThis);
8.- Seleccione los siguientes tres botones (btnLeftJust, btnCenter, btnRightJust) de igual
manera que los anteriores, con el inspector de objetos, en la hoja de eventos haga doble clic
en el evento OnClick e introduzca el siguiente cdigo.
TAlignment taThis;
if(btnLeftJust->Down)
taThis = taLeftJustify;
if(btnCenter->Down)
taThis = taCenter;
if(btnRightJust->Down)
taThis = taRightJustify;
RichEdit1->Paragraph->Alignment = TAlignment(taThis);

C++ Builder, un constructor de aplicaciones

109

9.- Seleccione el componente RichEdit y con el inspector de objetos en la hoja de eventos


seleccione el evento OnSelectionChange e introduzca el siguiente cdigo.
btnBold->Down = RichEdit1->SelAttributes->Style.Contains(fsBold);
btnUnderline->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline);
btnItalic->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic);
switch(RichEdit1->Paragraph->Alignment)
{
case taLeftJustify :
btnLeftJust->Down = true;break;
case taCenter :
btnCenter->Down = true;break;
case taRightJustify :
btnRightJust->Down = true;break;
}
10.- Seleccione el ltimo botn imprime haciendo doble clic en l e introduce el siguiente
cdigo.
RichEdit1->Print(Caption);
11.- Del men principal de la forma, seleccione con doble clic Archivo
introduzca el siguiente cdigo:

Abrir e

OpenDialog->Execute();
if(OpenDialog->FileName != "")
RichEdit1->Lines->LoadFromFile(OpenDialog->FileName);
12.- Del men principal de la forma, seleccione con doble clic Archivo Grabar e
introduzca el siguiente cdigo:
SaveDialog->Execute();
if(SaveDialog->FileName != "")
RichEdit1->Lines->SaveToFile(SaveDialog->FileName);
13.- Presione F9 para correr su programa.
3.3.18

USO DEL COMPONENTE IMAGELIST.

Como su nombre lo indica, el componente ImageList agrupa una coleccin de imgenes


todas ellas del mismo tamao, este componente no es visual, lo que quiere decir que usted
no podr ver las imgenes una vez agrupadas (Por lo menos no directamente con este
componente).
Con los siguientes pasos podr utilizar este componente.

C++ Builder, un constructor de aplicaciones

110

1.- De la paleta de componentes en la hoja Win95 seleccione un objeto ImageList


colquelo en su forma.

2.- Haga clic con el botn derecho del mouse y obtendr un men de opciones elija la
opcin ImageList Edito y aparecer la caja de dialogo llamada ImegeList Editor.

FIG.

3.3.18.1

Uso del componente imagelist.

3.- Seleccione el botn Add para aadir una imagen a la lista de imgenes.
Obtendr una caja de dialogo para buscar el directorio donde estn almacenados los
archivos de las imgenes.

FIG.

3.3.18.2

Imgenes a seleccionar para tener en un arreglo de imgenes.

4.- Seleccione la imagen y oprima el botn Open; puede seleccionar cualquiera de las tres
opciones que presenta para cada imagen. Crop (Cortar), Stretch (Ajustar), Center (Centrar),
5.- Puede repetir los pasos 3 y 4 cuantas veces quiera para tener una lista de imgenes
disponibles en su ImageList.

C++ Builder, un constructor de aplicaciones

3.3.19

111

USO DEL COMPONENTE LISTVIEW.

Este componente le da al usuario una manera de mostrar artculos del mismo tipo; como
ejemplo, puede mostrar el grupo de imgenes que anteriormente guard usando el
componente ImageList y presentndolas con este componente.
Con los siguientes pasos podr utilizar este componente.
1.- Inicie un nuevo proyecto.
2.- Utilice los pasos anteriores para tener una lista de imgenes.

y colquelo
3.- De la paleta de componentes Win95 seleccione un objeto ListView
en su forma, Con el inspector de objetos modifique la propiedad SmallImages colocando
en ella ImageList1, Tambin modifique la propiedad ViewStyle escogiendo de la lista
disponible vsList.
4.- De la paleta de componentes Standard seleccione un objeto Panel y colquelo en su
forma, con el inspector de objetos modifique la propiedad Align escogiendo de la lista
disponible alBotton.
5.- Seleccione el objeto ListView y con el inspector de objetos haga doble clic en la
propiedad Items para abrir la caja de dialogo Items Editor.
6.- oprima el botn New, y escriba el texto que quiera que acompae a la imagen guardada,
oprima el numero de imagen a la se le asignar ese nombre.
7.- Repita los pasos 5 y 6 para cada una de las imgenes que halla almacenado.

FIG.

3.3.19.1

Editor de artculos del objeto ListView.

8.- Seleccione el objeto ListView y oprima las teclas Ctrl + C, para hacer una copia de este
objeto.

C++ Builder, un constructor de aplicaciones

112

9.- Haga clic en cualquier parte de la forma y oprima las teclas Ctrl + V para pegar la copia
hecha al objeto ListView, Repita esta accin una vez mas de manera que tenga en su forma
3 objetos ListView; acomdelos a lo largo de la forma.

FIG.

3.3.19.2

Tres objetos ListView con diferentes parmetros en sus propiedades.

10.- Seleccione el componente que se encuentra en la parte central y con el inspector de


objetos modifique la propiedad ViewStyle por la opcin vsReport, en la propiedad
columns haga doble clic para que aparezca el editor de columnas del componente
ListView; oprima el botn New y escriba en la caja Caption la palabra Artculos,
seleccione tambin el botn circular de nombre Header Widt, para colocar el ttulo en la
parte superior de la caja; Oprima el botn Ok para cerrar esta caja de dialogo.

FIG.

3.3.19.3

Editor de columnas del objeto ListView.

11.- Seleccione el objeto ListView de la derecha y con el inspector de objetos modifique la


propiedad ViewStyle por la opcin vsIcon, Tambin modifique la propiedad LargeImages y
coloque en ella el texto ImageList1.
12.- Seleccione los tres componentes ListView oprimiendo la tecla Shift y haciendo clic en
cada uno de ellos, con el inspector de objetos en la hoja de eventos haga doble clic en el
evento OnChange y coloque el siguiente cdigo.
Panel1->Caption = Item->Caption;

C++ Builder, un constructor de aplicaciones

113

13.- Presione la tecla F9 para ejecutar su programa, obtendr un resultado parecido al


siguiente:

FIG.

3.3.20

3.3.19.4

Resultado de la ejecucin del ejemplo del uso del componente ListView.

USO DEL COMPONENTE PAGECONTROL.

Este componente proporciona de una manera de tener mltiples hojas de trabajo y puede
cambiar de hoja haciendo un simple clic en la cejilla de la hoja a la que se quiera accesar.
Con los siguientes pasos podr ver un sencillo ejemplo del uso de PageControl.
1.- Abra una nueva aplicacin.
; al
2.- En la paleta de componentes Win95 seleccione un objeto PageControl
colocarlo en la forma lucir como un panel; con el inspector de objetos modifique la
propiedad Align por la opcin alClient.
3.- Haga clic con el botn derecho del mouse y seleccione la opcin New Page y una cejilla
con la leyenda TabSheet1 aparecer; con el inspector de objetos cambie la propiedad
Caption por el texto Hoja 1, y repita la accin 2 veces.
4.- Seleccione la Hoja 1 y coloque en ella un objeto Label de la paleta de componentes
Standard y colquelo en la hoja, cambie la propiedad Caption por el texto En la hoja 1.
5.- Coloque un Objeto Button de la paleta de componentes Standard en la hoja Cambie la
porpiedad Caption por el texto Boton 1 ; haga doble clic en el botn e introduzca el
siguiente cdigo:
Label1->Caption = Ya se oprimi el botn en la primer hoja .;

C++ Builder, un constructor de aplicaciones

FIG.

3.3.20.1

114

Uso del componente pagecontrol.

6.- Seleccione la Hoja 2 y coloque en ella un objeto Editl de la paleta de componentes


Standard y colquelo en la hoja, cambie la propiedad text por el texto Lnea de copia.
7.- Coloque un Objeto Button de la paleta de componentes Standard en la hoja Cambie la
porpiedad Caption por el texto Boton 2 ; haga doble clic en el botn e introduzca el
siguiente cdigo:
Edit1->Text = Label1->Caption;

FIG.

3.3.20.2

Uso del componente pagecontrol.

8.- Presione la tecla F9 para ejecutar su programa.

C++ Builder, un constructor de aplicaciones

3.3.21

115

USO DEL COMPONENTE OPENDIALOG.

La mayora de la aplicaciones windows usan un estandar para abrir archivos, C++ Builder
le ofrece una manera sencilla de apegarse a estos estandares.
Con los siguientes pasos podr aadir una forma sencilla de abrir archivos.
1.- Seleccione un objeto Panel de la paleta de componentes Standard y elimine el texto que
tiene en Caption para eliminar el titulo.

de la paleta de componentes Dialogs y


2.- Seleccione un objeto OpenDialog
colquelo en el panel, Modifique la propiedad DefaultExt a la opcin txt, en la propiedad
Filter, ponga.

FIG. 3.3.21.1

Editor de archivos del componente OpenDialog.

3.- De la paleta de componentes Standard seleccione un objeto Memo y colquelo en la


forma, modifique la propiedad Align y seleccione alClient.
4.- De la paleta de componentes Standard seleccione un objeto Button y colquelo en el
panel, modifique la propiedad Caption poniendo el texto Abrir, en la hoja de eventos
haga doble clic en el evento OnClick e introduzca el siguiente cdigo.
if(OpenDialog1->Execute())
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

C++ Builder, un constructor de aplicaciones

FIG.

3.3.21.2

116

Aplicacin OpenDialog.

5.- Presione la tecla F9 para ejecutar su aplicacin, presione el botn abrir para ver la
accin de este componente.

FIG.

3.3.21.3

3.3.22

Busqueda de archivos *.txt.

FIG. 3.3.21.4

Muestra del archivo seleccionado.

USO DEL COMPONENTE SAVEDIALOG.

El componente SaveDialog casi siempre es el compaero del componente anterior, esto


quiere decir que la mayor parte de las veces que se abra un archivo, se querrn guardar o
salvar los cambios hechos en ese archivo.
Con los siguientes pasos usted podr complementar el ejemplo anterior en el que se abre
un archivo de texto; ahora, se podr guardar con otro nombre, con el mismo, en el mismo
directorio, o en otro que se seleccione.

C++ Builder, un constructor de aplicaciones

117

1.- De la paleta de componentes en la hoja Dialogs, seleccione el componente SaveDialog


, colquelo en el panel del ejemplo anterior; usando el inspector de objetos cambie las
propiedades de la siguiente forma:
Propiedad
DefaultExt
Filter
Options ofOverwrite Prompt
Title

Setting
Txt
Text Files, *.txt
True
Grabar archivo.

2.- De la paleta de componentes Standard; seleccione un objeto Button, y colquelo en el


panel, con el inspector de objetos cambie la propiedad Caption por el texto Grabar. En la
hoja de eventos seleccione con doble clic el evento OnClick e introduzca el siguiente
cdigo.
If(SaveDialog->Execute())
Memo1->Lines->SaveToFile(SaveDialog1->Filename);

FIG.

3.3.22.1

Uso del componente SaveDialog.

3.- Presione F9 para ejecutar su programa; tendr el resultado anterior, podr abrir
cualquier archivo de texto de cualquier directorio y adems podr grabar el archivo abierto
con el mismo nombre, en el mismo directorio o con diferente nombre y en diferente
directorio.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.23

3.3.22.1

118

Aplicacin del componente SaveDialog.

USO DEL COMPONENTE FONTDIALOG.

Otro componente que vendr a enriquecer nuestras aplicacines es FontDialog, este


componente da al usuario la facilidad de escoger entre las fuentes (Tipos de Letras)
disponibles en su particular instalacin de Windows.
Use los siguientes pasos para ver el uso de este componente.
Abra una nueva aplicacin.
1.- De la paleta de componentes Dialogs, seleccione un objeto FontDialog, y colquelo en
la forma, Cambie la propiedad Options haciendo doble clic en ella y cambiando a true las
opciones fdApply y fdEffects, el la hoja de eventos haga doble clic en el evento OnApply e
introduzca el siguiente cdigo:
Panel1->Font = FontDialog->Font;
2.- De la paleta de componentes Standard, seleccione un objeto Panel, y colquelo en la
forma, cambie la propiedad Caption por el texto Prueba de cambio de letra, modifique la
propiedad Align por la opcion alTop.
3.- De la paleta de componentes Standard, seleccione un objeto Button, y colquelo en la
forma, Cambie la propiedad Caption por el texto Tipo de letra y el la hoja de eventos,
seleccione haciendo doble clic el evento OnClick e introduzca el siguiente cdigo:
if(FontDialog1->Execute())
Panel1->Font = FontDialog1->Font;
4.- Presione la tecla F9 para ejecutar su aplicacin, que tendr los siguientes efectos:

C++ Builder, un constructor de aplicaciones

FIG.

3.3.23.1

119

Uso del componente fontdialog.

y al seleccionar el botn T. Aparecer la siguiente caja de dialogo:

FIG.

3.3.23.2

Caja de dialogo para seleccionar tipos de letras.

y podr seleccionar el tipo de letra que quiera.

FIG.

3.3.23.3

Uso del componente fontdialog

C++ Builder, un constructor de aplicaciones

3.3.24

120

USO DEL COMPONENTE COLORDIALOG.

El uso de este componente le da visibilidad, presentacin y estilo a sus aplicaciones, ya que


puede cambiar la caracterstica del color mediante este componente.
El componente ColorDialog no tiene eventos, nicamente propiedades a modificar
mediante el inspector de objetos.
La propiedad Color tiene los colores principales.
La propiedad Options tiene las siguientes subpropiedades.
Subpropiedad
CdFullOpen
CdPreventFullOpen
CdShowHelp

Descripcin
Da acceso a la paleta de colores extendida.
Restringe el uso de colores a la paleta de colores actual.
Aade un botn de ayuda al componente ColorDialog.

Pero con los siguientes pasos podr conocer su uso:


1.- Abra una nueva aplicacin.
2.- De la paleta de componentes standard seleccione un objeto Panel, un objeto Memo y un
objeto Button colocndolos en la forma.
3.- Seleccione el objeto Memo; con el inspector de objetos cambie la propiedad ScrollBars
a la opcin ssVertical.
y
4.- Seleccione de la paleta de componentes Dialogs un objeto ColorDialog
colquelo en la forma, con el inspector de objetos en la propiedad Options seleccione la
surpopiedad cdFullOpen en true.
5.- Seleccione el objeto Panel y modifique la propiedad Align a la opcin alTop, y borre el
titulo en la propiedad Caption.
6.- Seleccione el objeto Memo y modifique la propiedad Align a la opcin alTop.
7.- Seleccione el objeto Button cambiando la propiedad Caption al titulo Inicializar color,
en la hoja de eventos haga doble clic en el evento OnClick, en el editor de cdigo
introduzca el siguiente cdigo:
if(ColorDialog1->Execute())
{
Panel1->Color=ColorDialog1->Color;
Memo1->Lines->Assign(ColorDialog1->CustomColors);
}

C++ Builder, un constructor de aplicaciones

121

8.- Presione la tecla F9 para ejecutar su programa. Ver que al escoger el botn inicializar
color, podr seleccionar cualquier color y su codificacin hexadecimal se editar en el
objeto Memo.

FIG.

FIG.

3.3.25

3.3.24.1

3.3.24.2

Uso del componente colordialog.

Componente colordialog en colores verdaderos.

USO DEL COMPONENTE PRINTDIALOG.

El componente PrintDialog, complementa todos los componentes vistos anteriormente, ya


que despus de dejar la edicin con las caractersticas deseadas, podemos presentarlos en
Papel.
Veamos los siguientes pasos para conocer mejor su uso.
1.- Seleccione una nueva aplicacin.
2.-De la paleta de componentes Standard seleccione un objeto Panel y colquelo en la
forma.

C++ Builder, un constructor de aplicaciones

122

3.-De la paleta de componentes Additional seleccione un objeto SpeedButton y colquelo


en la forma dos veces.

4.- De la paleta de componentes Dialogs seleccione un objeto PrinterSetupDialog


colquelo en la forma.

5.- De la paleta de componentes Dialogs seleccione un objeto PrintDialog


colquelo en la forma.

6.- Seleccione un Botn acelerador haciendo doble clic e introduzca el siguiente cdigo.
PrinterSetupDialog1->Execute();
7.- Seleccione el otro Botn acelerador haciendo doble clic e introduzca el siguiente
cdigo:
PrintDialog1->Execute();
Puede poner imagenes en los botones aceleradores usando la propiedad Glyph.

FIG.

3.3.25.1 Uso de Componentes PrinterSetupDialog y PrintDialog.

8.- Presione la tecla F9 para ejecutar su aplicacin.

FIG.

3.3.25.2 Ejemplo de uso de Componentes PrinterSetupDialog y PrintDialog.

C++ Builder, un constructor de aplicaciones

3.3.26

123

USANDO EL EXPLORADOR DE BASES DE DATOS

Para explorar de una forma sencilla cualquier base de datos, podemos usar el DataBase
Explorer, complete los siguientes pasos:
1.- En la barra de men principal en la seccin DataBase elija la opcin Explorer, obtendr
una ventana como la siguiente:

FIG.

3.3.26.1 Explorador de Bases de Datos.

2.- Seleccione las bases de datos de ejemplo (BCDEMOS) y seleccione la tabla


BIOLIFE.DB en la parte derecha del explorador, podr observar los detalles de dicha tabla.

FIG.

3.3.26.2 Explorador de Bases de Datos.

C++ Builder, un constructor de aplicaciones

124

3.- Si algn campo es Memo o Grfico, se puede conocer su contenido haciendo doble clic
en ese rengln.

FIG.

3.3.26.3 Explorador de Bases de Datos.

4.- Al hacer doble clic aparecer otra ventana con la informacin de ese campo.

FIG.

3.3.26.4 Explorador de Bases de Datos.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.27

125

3.3.26.5 Explorador de Bases de Datos.

USANDO EL DATABASE FORM WIZARD

C++ Builder viene equipado con una herramienta llamada Wizards, que facilita la creacin
de bases de datos, y nos ahorra en la edicin de mascaras para la presentacin de ellos.
Con los siguientes pasos podr conocer un poco de su uso, ya que se combina con otros
componentes para hacerlos ms poderosos.
1.- Abra una nueva aplicacin.
2.- Del men principal elija DataBase Form Wizard y aparecer una ventana como la
siguiente.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.27.1

126

Usando el DataBase Form Wizard.

3.- Seleccione el botn Next para continuar.


4.- Seleccione en el subdirectorio de Ejemplos Data, seleccione la tabla de datos
llamada BIOLIFE.DB como lo muestra la figura.

FIG.

3.3.27.2

Cargando una tabla de datos.

C++ Builder, un constructor de aplicaciones

127

5.- Oprima el botn Next.


6.- Seleccione el botn >> para aadir todas los campos de la tabla a visualizacin.

FIG.

3.3.27.3

Anexando campos para visualizacin.

7.- Seleccione el botn Next, y luego otra vez Next.


8.- Seleccione el botn Finish.
9.- Del men principal elija Project
clic en el botn Ok.

Remove From Project y seleccione Form1 y haga

10.- Presione F9 para ejecutar la aplicacin.


Se ha creado la primera aplicacin de Bases de Datos.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.28

3.3.27.4

128

Presentacin en pantalla de los datos seleccionados.

USANDO EL COMPONENTE TABLE

Este componente se encuentra en la hoja Data Access de la paleta de componentes.


El componente Tabla representa una simple tabla de datos con la que podr visualizar los
campos de la base de datos seleccionada.
Con los siguientes pasos puede ver la forma en que se maneja el componente tabla.
1.- Abra una nueva aplicacin.
y
2.- De la hoja de componentes Data Access seleccione el componente Table
colquelo en la forma, con el inspector de objetos modifique la propiedad DatabaseName y
coloque en ella el valor BCDEMOS, la propiedad TableName modifiquela por el valor
CUSTOMER.DB y la propiedad Active modifiquela a true, para activar la tabla
seleccionada, mientras este valor se encuentre en fase, la tabla estar desactivada.
3.- De la hoja de componentes Standard seleccione el componente Memo y colquelo en la
forma.
4.- De la hoja de componentes Standard seleccione el componente Button y colquelo en la
forma con tres copias mas, alineandolos en la parte superior de su forma, modifique con el
ispector de objetos la propiedad Caption de la siguiente manera.

C++ Builder, un constructor de aplicaciones

FIG. 3.3.28.1

129

Acomodo de componentes.

5.- Haga doble clic en el botn |< e introduzca el siguiente cdigo:


Table1->First();
LoadMemo();
6.- Haga doble clic en el botn < e introduzca el siguiente cdigo:
Table1->Prior();
if(Table1->Bof)
ShowMessage("Es el inicio de la tabla ");
LoadMemo();
7.- Haga doble clic en el botn > e introduzca el siguiente cdigo:
Table1->Next();
if(Table1->Eof)
ShowMessage("Final de la tabla ");
LoadMemo();
8.- Haga doble clic en el botn > e introduzca el siguiente cdigo:
Table1->Last();
LoadMemo();
9.- Al final en el editor de cdigo anexe la funcin siguiete:
void TForm1::LoadMemo()
{
Memo1->Clear();
for(int i=0;i<Table1->FieldCount-1;i++)
Memo1->Lines->Add(Table1->Fields[i]->FieldName + " : " + Table1->Fields[i]>Text);
}

C++ Builder, un constructor de aplicaciones

130

10.- Con el botn derecho del Mouse haga clic en el editor de cdigo y seleccione la opcin
Open Source/Header File y anexe la siguiente lnea en posicin.
private:
// User declarations
void LoadMemo();
public:
// User declarations
11.- Presione F9 para correr su programa y obtendr el siguiente resultado:

FIG.

3.3.29

3.3.28.2

Uso del componente Table.

USANDO EL COMPONENTE DBGRIDY DATA SOURCE

El componente DataSource es un componente no visual, la funcin que realiza es enlazar la


base de datos a los objetos visuales.
El componente DBGrid nos proporciona de una poderosa herramienta para capturar y
observar los datos de una tabla, veamos como funciona.
1.- Cree una nueva aplicacin.
y
2.- De la hoja de componentes Data Access seleccione el componente Table
colquelo en la forma, con el inspector de objetos modifique la propiedad DatabaseName y
coloque en ella el valor BCDEMOS, la propiedad TableName modifquela por el valor
CUSTOMER.DB y la propiedad Active modifquela a true, para activar la tabla
seleccionada, mientras este valor se encuentre en fase, la tabla estar desactivada.

C++ Builder, un constructor de aplicaciones

131

3.- De la hoja de componentes Data Access seleccione el componente DataSource


y
colquelo en la forma, con el inspector de objetos modifique la propiedad DataSet
colocando en ella Tabla1.
y
4.- De la hoja de componentes Data Controls seleccione el componente DBGrid
colquelo en la forma, modifique la propiedad DataSource a la opcin DataSource1, si la
propiedad Auto Edit esta en true podr editar los datos de la tabla.
y
5.- De la hoja de componentes Data Access seleccione el componente DataSource
colquelo en la forma, con el inspector de objetos modifique la propiedad DataSet
colocando en ella Tabla1.
6.- Presione F9 para ejecutar su programa.

FIG.

3.3.28.1

Usando el componente DBGrid.

Si usted quisiera solamente visualizar algunas columnas de datos y ocultar las dems,
Puede utilizar los siguientes pasos:
1.- Seleccione el componente DBGrid que ya tiene en su forma y en la propiedad Columns
haga doble clic y aparecer una caja de dialogo como la siguiente:

C++ Builder, un constructor de aplicaciones

FIG. 3.3.28.2

132

Editor de Columnas DBGrid.

2.- Seleccione el botn Add All Fields para tener todos los campos de la tabla
seleccionada.
3.- Con los campos en la ventana de edicin puede borrar los campos que no desea que
sean mostrados, y al finalizar de borrarlos de la edicin; seleccione el botn Ok.
4.- Presione F9 y vea sus datos seleccionados.

FIG.

3.3.28.3

Columnas seleccionadas para visualizacin.

C++ Builder, un constructor de aplicaciones

3.3.30

133

USANDO EL COMPONENTE DBTEXT

El componente DBText es utilizado como un campo variante, que puede tomar los valores
de un campo de la tabla que se active, para conectar este objeto a la tabla deseada solo se
tiene que poner en la propiedad DataSource cual es la tabla que se le asociar.
1.- Cree una nueva aplicacin.
y
2.- De la hoja de componentes Data Access seleccione el componente Table
colquelo en la forma, con el inspector de objetos modifique la propiedad DatabaseName y
coloque en ella el valor BCDEMOS, la propiedad TableName modifquela por el valor
CUSTOMER.DB y la propiedad Active modifquela a true, para activar la tabla
seleccionada, mientras este valor se encuentre en fase, la tabla estar desactivada.
3.- De la hoja de componentes Data Access seleccione el componente DataSource
y
colquelo en la forma, con el inspector de objetos modifique la propiedad DataSet
colocando en ella Tabla1.
y
4.- De la hoja de componentes Data Controls seleccione el componente DBGrid
colquelo en la forma, modifique la propiedad DataSource a la opcin DataSource1, si la
propiedad Auto Edit esta en true podr editar los datos de la tabla.
y
5.- De la hoja de componentes Data Controls seleccione el componente DBText
colquelo en la forma, y modifique la propiedad DataSource a la opcin DataSource1, y
seleccione cual es el nombre del campo que quiere que se muestre en el componente
DBText (Como por ejemplo Addr1).

FIG.

3.3.29.1

Usando el componente DBText.

C++ Builder, un constructor de aplicaciones

134

6.- Presione F9 para ejecutar su programa y cada vez que recorra un campo de la tabla
aparecer la direccin del campo activo.

FIG.

3.3.31

3.3.29.2

Usando el componente DBText en al aplicacin.

USANDO EL COMPONENTE DBEDIT

El uso de este componente es igual que el componente Edit de la paleta de componentes


Standard, pero con la ventaja de poderla asociar a una tabla de base de datos.
Al ejercicio anterior anxele los siguientes pasos:
y
1.- De la hoja de componentes Data Controls seleccione un objeto DBEdit
colquelo en la forma, con el inspector de objetos modifique la propiedad DataSource al
valor DataSource1, y en la propiedad DataField seleccione otro campo que quiera ser
visualizado al igual que en DBText.
2.- Presione F9 para ver el resultado de la aplicacin.

C++ Builder, un constructor de aplicaciones

FIG.

3.3.32

3.3.30.1

135

Usando el componente DBEdit

USANDO EL COMPONENTE DBMEMO Y DBIMAGE

Como el componente DBEdit no puede presentar mas de una lnea a la vez, se provee de
este campo DBMemo, para presentar campos que contengan ms de una lnea.
El campo DBImage presenta la imagen almacenada en un campo de la base de datos.
Para ver el uso de este componente siga las instrucciones:
1.- Seleccione Nueva Aplicacin.
y
2.- De la hoja de componentes Data Access seleccione el componente Table
colquelo en la forma, con el inspector de objetos modifique la propiedad DatabaseName y
coloque en ella el valor BCDEMOS, la propiedad TableName modifquela por el valor
BIOLIFE.DB y la propiedad Active modifquela a true, para activar la tabla seleccionada,
mientras este valor se encuentre en fase, la tabla estar desactivada.
3.- De la hoja de componentes Data Access seleccione el componente DataSource
y
colquelo en la forma, con el inspector de objetos modifique la propiedad DataSet
colocando en ella Tabla1.
y
4.- De la hoja de componentes Data Controls seleccione el componente DBGrid
colquelo en la forma, modifique la propiedad DataSource a la opcin DataSource1, si la
propiedad Auto Edit esta en true podr editar los datos de la tabla.

C++ Builder, un constructor de aplicaciones

136

5.- De la hoja de componentes Data Controls seleccione el componente DBMemo


y
colquelo en la forma, modifique la propiedad DataSource a la opcin DataSource1, y la
propiedad DataField en la opcin Notes.

y
6.- De la hoja de componentes Data Controls seleccione el componente DBImage
colquelo en la forma, modifique la propiedad DataSource a la opcin DataSource1, y la
propiedad DataField en la opcin Image.
7.- Presione la tecla F9 para observar los resultados.

FIG.

3.3.33

3.3.31.1

Usando el componente DBMemo y DBImage

USANDO EL COMPONENTE DBNAVIGATOR

se usan tablas para navegar a travs de los registros de la base de datos, el componente
DBNavigator le proporciona una forma de controlar y editar los campos por medio de
botones, vea el siguiente ejemplo para conocer su funcionamiento.
Utilice el programa anterior y anexe los siguientes pasos:
1.- De la hoja de Componentes Data Controls seleccione un objeto DBNavigetor y
colquelo en la forma, en la propiedad DataSource seleccione la opcin DataSource1, y la
propiedad ShowHint a true.

C++ Builder, un constructor de aplicaciones

137

Y obtendr el siguiente resultado.

FIG.

3.3.34

3.3.32.1

Usando el componente DBNavigator

USANDO EL COMPONENTE QUERY

El componente Query, sirve para filtrar datos segn el valor que se desee de algn campo.
Siga el ejemplo para ver su uso.
1.- Seleccione nuevo proyecto.

y
2.- En la paleta de componentes Data Access seleccione el objeto Query
colquelo en la forma, en la propiedad DataBaseName seleccione BCDEMOS, haga doble
clic en la porpiedad SQL para que introduzca el siguiente cdigo en editor de lneas:
SELECT * FROM EVENTS WHERE VENUENO = 5;
Y haga clic en el botn Ok. Modifique la propiedad Active a true.

3.- En la paleta de componentes Data Access seleccione el objeto DataSource


colquelo en la forma, en la propiedad DataSet elija la opcin Query1.

C++ Builder, un constructor de aplicaciones

138

4.- En la paleta de componentes Data Controls seleccione el objeto DBGrid


y
colquelo en la forma, en la propiedad DataSource elija la opcin DataSource1 y la
propiedad Align en alBottom.
5.- Presione F9 para observar el resultado.

FIG.

3.3.33.1

Usando el componente query

La idea para la utilizacin del resto de los componentes es la misma, se han presentado solo
algunos de los ms comunes en la programacin.

Desarrollo de Herramientas Grfias

138

Captulo IV
Desarrollo de un Laboratorio Virtual
Al comenzar a trabajar con el DR. Jos Luis Marroqun Zaleta comentamos sobre la
posibilidad de realizar una aplicacin matemtica enfocada a la enseanza de un tema
particular de la geometra analtica a nivel bachillerato que es: la recta. Se penso que
fuera de una manera sencilla pero que cubriera la mayora de los puntos vistos en la
preparatoria sobre el tema y que integrara un mdulo de ayuda sensible al contexto
(Hipertexto).
Despus de varias recomendaciones, el proyecto se dise de la siguiente manera:
Comenzar con una pantalla de seleccin en la que se tendrn los temas por ver; en esa
pantalla estarn los logotipos de las instituciones participantes en el proyecto:
El Centro de Investigacin en Matemticas (CIMAT)
representado por el DR. Jos Luis Marroqun Zaleta, como asesor del proyecto.
El Instituto Tecnolgico de Morelia (ITM)
representado por el MC. Cristobal Villegas Santoyo, como asesor del proyecto y Juan
Carlos Cruz Vega como realizador del proyecto.
Esta pantalla estar controlada por un men de opciones, en este men de opciones se
encontrar el mdulo de consulta de Hipertexto.
Al seleccionar cualquiera de las opciones que presenta la pantalla inicial se llamar a otro
mdulo que contiene la aplicacin, cada una de ellas tiene su funcionalidad particular y
tambin tienen su propio mdulo de consulta de Hipertexto todo esto controlado tambin
por su men particular, la funcionalidad y manejo de cada mdulo se describe a
continuacin:

Desarrollo de Herramientas Grfias

139

4.1 PRIMER MODULO INTERACTIVO


(Programa Punto.Cpp)
Objetivo: Presentacin grfica de coordenadas en el sistema coordenado cartesiano,
habilidad para reconocer posiciones en un sistema coordenado.
Estrategia: Elaboracin de un mdulo en el cual el usuario mediante el mouse coloque
puntos aleatorios en el sistema coordenado, y el programa muestre segn el
punto marcado la coordenada de ese punto.
Presentacin del texto relacionado al tema mediante un Hipertexto asociado
a la aplicacin final.
Para la elaboracin del primer mdulo se disea una mscara que presenta:
1.- Una ventana de dilogo que tenga las instrucciones de manejo del programa.
2.- Una ventana de dilogo que contenga informacin del mdulo.
3.- Un men de opciones que contenga:
a) Un Campo Opciones.
&Salir

&Limpiar

b) Un Campo Ayuda
&Uso

&Acerca de
c) Un Campo Base Terica.

Para finalizar el programa.


Para limpiar la ventana de trabajo.
Informacin del manejo del mdulo.
Informacin de la elaboracin del mdulo.
Hipertexto de lo esencial del tema.

Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:
1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight
c) La propiedad ClientWidth
d) La propiedad Color
e) La propiedad Icon
f) La propiedad Left

Valor o Texto
Sistema Coordenado .
721

1024
clBack
BildCim.ico
0

Desarrollo de Herramientas Grfias

140

g) La propiedad Top

Y lo que veremos ser la ventana en la cual tendremos el control del programa:

FIG.

4.1.1

Ventana de trabajo mdulo No. 1.

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
4.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
265

553
clBtnFace
208
144

y colquelo

Desarrollo de Herramientas Grfias

141

5.- De la paleta de componentes Standard seleccione un objeto Button


en el Panel.

y colquelo

6.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Continuar.
89

129

392
96

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.


Panel1->Visible=false;

7.- De la paleta de componentes Standard seleccione un objeto Memo


en el Panel.
8.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
241
377

16

Doble clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.

y colquelo

Desarrollo de Herramientas Grfias

142

FIG. 4.1.2 Editor de Lneas

En el se teclear el siguiente Texto.


INDICACIONES
a).- Con el botn izquierdo del mouse selecciona en el sistema
coordenado cartesiano, un punto, al seleccionarlo, obtendrs
las coordenadas del punto que elegiste.
b).- Puedes elegir una infinidad de puntos.
c).- En el momento en que lo desees, puedes limpiar tu
ventana o salir del modulo de puntos en el Sistema Coordenado
Cartesiano, por medio del men de opciones que se encuentra
en la parte superior izquierda de tu pantalla.
9.- Selecciona el botn Ok para cerrar la ventana de dialogo.

10.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
11.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
169

153

clTeal
840
16

y colquelo

Desarrollo de Herramientas Grfias

143

12.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel2.
13.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

Valor o Texto
73

57

48

True
Doble clic

FIG. 4.1.3 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

Desarrollo de Herramientas Grfias

144

FIG. 4.1.4 Seleccin de Imgenes.

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.1.5 Seleccin de Imgenes.

Oprima el botn Ok.


14.- De la paleta de componentes Standard seleccione un objeto Button
colquelo en el Panel2.
15.- Modifiquemos los siguientes atributos:
Propiedad

Valor o Texto

Desarrollo de Herramientas Grfias

a) La propiedad Caption
b) El evento OnClick

145

&Continuar
Panel2->Visible=false;

16.- De la paleta de componentes Standard seleccione un Label


Panel2 con otras dos copias.
17.- Modifiquemos los siguientes atributos:
Label1.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
Geometra Parte 1.
24

179

clGray
16

120
Bold Italic
16

Label2.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
JUAN CARLOS CRUZ VEGA
13

167

clGray
16

144

Bold Italic
9

Label3.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left

Valor o Texto
FEBRERO DE 1998
13

118

clGray
32

y colquelo en el

Desarrollo de Herramientas Grfias

146

160
Bold Italic
9

f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

18.- De la paleta de componentes Standard seleccione un objeto Main Menu


colquelo en la forma.

19.- haga doble clic en este componente y obtendr el diseador de menus:


20.- Con el inspector de objetos cambie las propiedades:
Propiedad
a) La propiedad Caption
b) La propiedad Caption
c) La propiedad Caption

Valor o Texto

&Opciones
+ Enter
&Ayuda
+ Enter
&Base terica + Enter

21.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Base Terica;
Evento OnClick

Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();

FIG. 4.1.6 Diseador de mens.

22.- En el sub menu Opciones anexar 2 campos mas.


Propiedad

Valor o Texto

Desarrollo de Herramientas Grfias

147

a) La propiedad Caption
a) La propiedad Caption

&Limpiar
&Salir

De manera que tenga el siguiente resultado:

FIG.

4.1.7 Opciones de Sub men.

23.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Opcin
Evento
Opcin
Evento

Componente
&Limpiar;
OnClick
&Salir;
OnClick

Cdigo
Invalidate();
Close();
Exit(1);

24.- En el sub men Ayuda anexar 2 campos mas.


Propiedad
a) La propiedad Caption
a) La propiedad Caption

Valor o Texto

De manera que se vea de la siguiente forma:

&Uso
a&Cerca de

Desarrollo de Herramientas Grfias

FIG.

148

4.1.8 Opciones de Sub men.

25.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Opcin
Evento
Opcin
Evento

Componente
&Uso;
OnClick
a&Cerca de
OnClick

Cdigo
Panel1->Visible=true;
Invalidate();
Panel2->Visible=true;

26.- Seleccione la forma haciendo un clic en ella, con el inspector de objetos en la hoja de
eventos haga doble clic en el evento que se marca e introduzca el cdigo asociado.
Componente
Form1

Evento
OnMouseDown

Form1

Evento

Cdigo

Accin

Canvas->MoveTo(X,Y);
Canvas->Pen->Color=clAqua;
Canvas->Ellipse(X,Y,X,Y);
Canvas->Ellipse(X,Y,X+1,Y+1);
Canvas->Ellipse(X,Y,X+2,Y+2);
Canvas->Ellipse(X,Y,X+3,Y+3);
Canvas->Ellipse(X,Y,X+4,Y+4);
old_x=X;
old_y=Y;
Pinta_Coordenada(old_x,old_y);

Se selecciona un punto en la
pantalla y se remarca de manera
que no se vea un solo pixel, sino
un grupo de pixeles.

Float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
Sprintf(text,"
",X1,Y1);

Se obtienen los valores de la


posicin del mouse mientras este
se esta moviendo.

Se hace una llamada a la funcin


que
pintar
los
valores
numricos de la coordenada.

Se realizan los clculos en base

Desarrollo de Herramientas Grfias

149

OnMouseMove

Canvas->TextOut(5,5,text);
al valor en pixeles de la pantalla
Canvas->TextOut(0,0,text);
visual en la que se esta
Canvas->TextOut(5,10,text);
trabajando, se cambia de valor
Canvas->Font->Color=clAqua;
de pixeles a valor de unidades de
Sprintf(text,"X= %2.1f
Y= %2.1f medida.
",X1,Y1);
Canvas->TextOut(5,5,text);
Canvas->Font->Color=clWhite;
Los valores obtenidos en las
operaciones
anteriores son
desplegados en la pantalla
visual.

Form1

Ejes();

Se realiza una llamada a la


funcin
que
marca
las
graduaciones
de
las
coordenadas.

Invalidate();

Borra lo que se tenia para el


ajuste de tamao.

Evento
OnPaint

Form1
Evento
OnReSize

Hasta ahora tenemos integrado nuestro modulo con la siguiente presentacin:

Desarrollo de Herramientas Grfias

FIG.

150

4.1.9 Conformacin del mdulo No. 1.

Pero aun falta por anexar a nuestro mdulo para que funcione como lo planeamos, por lo
que lo complementaremos con lo siguiente:
Nota: La elaboracin y detalles del Hipertexto asociado a cada mdulo se presentar mas
adelante en este captulo.

27.- Seleccione el editor de cdigo y al final de la funciones ya capturadas introduzca las


siguientes funciones con las que complementar el modulo de programa.

Desarrollo de Herramientas Grfias

151

//---------------------------------------------------------------------------------------------------------//Funcin:
Ejes();
//Parmetros: Ninguno.
//Objetivo:
Pintar los ejes coordenados y sus graduaciones en la ventana visual.
//---------------------------------------------------------------------------------------------------------void __fastcall TForm1::Ejes()
{
int i,j,k;
int Ex=30;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(ClientWidth/2,0,ClientWidth/2,ClientHeight);
LINEA(0,ClientHeight/2,ClientWidth,ClientHeight/2);
k=0;
for(i=1,j=0;i<=13,j<17;i++,j++)
{
LINEA((ClientWidth/2)+1,(ClientHeight/2)+k,(ClientWidth/2)+5,(ClientHeight/2)+k);
LINEA((ClientWidth/2)+1,(ClientHeight/2)-k,(ClientWidth/2)+5,(ClientHeight/2)-k);
LINEA((ClientWidth/2)+k,(ClientHeight/2)+1,(ClientWidth/2)+k,(ClientHeight/2)+5);
LINEA((ClientWidth/2)-k,(ClientHeight/2)+1,(ClientWidth/2)-k,(ClientHeight/2)+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clWhite;
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)-30)-k,i);
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
Canvas->TextOut((ClientWidth/2)+k,(ClientHeight/2)+5,j);
// Numeracin en X
Canvas->TextOut((ClientWidth/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;
}
for(i=2;i<ClientWidth;i+=30)
for(j=0;j<ClientHeight;j+=30)
{
Canvas->Pen->Color=clTeal;
LINEA(i,j,i,j);
LINEA(i,j,i+1,j+1);
LINEA(i,j,i-1,j-1);
}
}
//----------------------------------------------------------------------------------------------------------

Desarrollo de Herramientas Grfias

152

//---------------------------------------------------------------------------------------------------------//Funcin:
Pinta_Coordenada(ina A, int B);
//Parmetros: (int A, int B) Valor en pixeles de la direccin en que se marc el punto.
//Objetivo:
Pintar los valores numricos de la coordenada en la ventana visual.
//---------------------------------------------------------------------------------------------------------void __fastcall TForm1::Pinta_Coordenada(int A,int B)
{
int W=15;
float X1,Y1;
X1=(float(A-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-B)/30.0);
Canvas->Pen->Style=psDashDot;//InsideFrame;//
Canvas->Pen->Color=clFuchsia;
LINEA(A,B,A,(ClientHeight/2));
LINEA(A,B,(ClientWidth/2),B);
Canvas->Pen->Color=clWhite;
sprintf(text,"(%.1f ,%.1f )",X1,Y1);
sign =(B>(ClientHeight/2)+1 ? 1 : -1 );
Canvas->TextOut(A+(W*sign),B+(W*sign),text);
}
/*--------------------------------------------------------------------------------------------------------Funcin:
LINEA(int P1,int P2,int P3,int P4);
Parmetros:
(int P1,int P2,int P3,int P4)
Valor en pixeles de la direccin en que se marc el punto.
Objetivo:
Pintar un pixel o una serie de ellos en la ventana visual segn los
parmetros recibidos.
--------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::LINEA(int P1,int P2,int P3,int P4)
{
Canvas->MoveTo(P1,P2);
Canvas->LineTo(P3,P4);
}
//-----------------------------------------------------------------------------28.- Seleccione el editor de cdigo con el botn derecho del mouse para obtener el men
de utilidades, seleccione la opcin Open Source/Header File para obtener la hoja *.h de
nuestra aplicacin, en ella anexaremos las lneas siguientes:
private:
// User declarations
void __fastcall Ejes();
void __fastcall Pinta_Coordenada(int X,int Y);
void __fastcall LINEA(int P1,int P2,int P3,int P4);
char text[70];
int old_x,old_y,sign;
public:
// User declarations

Desarrollo de Herramientas Grfias

153

29.- Seleccione File Save Project As y obtendr una ventana de dialogo en la que
podr darle nombre a la aplicacin.

FIG.

4.1.10 Almacenamiento en disco de un mdulo.

En esta parte se almacenan los mdulos .cpp .h y .dmf

FIG.

4.1.11 Almacenamiento en disco de un proyecto.

En esta parte se almacenan los mdulos .mak, .cpp del project manager, y .res
30.- Ahora puede presionar la tecla de funcin F9 para ejecutar la aplicacin.

Desarrollo de Herramientas Grfias

154

FIG.

4.1.12

Ejecucin del mdulo No. 1.

FIG.

4.1.13

Ejecucin del mdulo No. 1.

Desarrollo de Herramientas Grfias

155

4.2 SEGUNDO MODULO INTERACTIVO


(Programa Xotra.Cpp)
Objetivo: Conociendo el uso de los puntos en las coordenadas cartesianas, el paso
siguiente es conocer la distancia que existe entre dos puntos; as que me
apoyare en ese conocimiento para este mdulo en el que presentar la
distancia existente entre dos puntos.
Estrategia: Elaboracin de un mdulo en el cual el usuario mediante el mouse coloque
2 puntos aleatorios en el sistema coordenado, y el programa muestre segn
los puntos marcados las coordenadas de los puntos as como la distancia que
existe entre ellos.
Presentacin del texto relacionado al tema mediante un Hipertexto asociado
a la aplicacin final.
Para la elaboracin del segundo mdulo se disea una mscara que presenta:
1.- Una ventana de dilogo que tenga las instrucciones de manejo del programa.
2.- Una ventana de dilogo que contenga informacin del modulo.
3.- Un men de opciones que contenga:
a) Un Campo Opciones.

&Salir

Para finalizar el programa.

&Limpiar

Para limpiar la ventana de trabajo.


b) Un Campo
&Acerca de
Informacin de la elaboracin del mdulo.
c) Un Campo Base Terica. Hipertexto de lo esencial del tema.
Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:
1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight
c) La propiedad ClientWidth
d) La propiedad Color

Valor o Texto
Ejes Coordenados .
721

1024
clBack

Desarrollo de Herramientas Grfias

156

BildCim.ico
0

e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top

Y lo que veremos ser la ventana en la cual tendremos el control del programa:

FIG.

4.2.1

Ventana de trabajo modulo No. 1.

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
4.- Modificamos sus propiedades de la siguiente manera:

Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
161

417
clBtnFace
264
8

y colquelo

Desarrollo de Herramientas Grfias

157

5.- De la paleta de componentes Standard seleccione un objeto Button


en el Panel.

y colquelo

6.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Continuar.
57

59

352
48

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.


Panel1->Visible=false;

7.- De la paleta de componentes Standard seleccione un objeto Memo


en el panel.
8.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
145
337

Doble clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Distancia
Con el botn izquierdo del mouse puedes seleccionar
arbitrariamente dos puntos. de los cuales se calcular
su distancia siguiendo la frmula
d = Raiz Cuadrada [ (Y2 - Y1)2 + (X2 - X1) 2 ]
Podrs trazar el nmero de rectas que desees.

y colquelo

Desarrollo de Herramientas Grfias

FIG.

4.2.2

158

Editor de lneas para componentes Memo.

9.- Selecciona el botn Ok para cerrar la ventana de dialogo.

10.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

11.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
169

153

clTeal
840
16

12.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel2.
13.- Modificamos sus propiedades de la siguiente manera:

Desarrollo de Herramientas Grfias

Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

159

Valor o Texto
73

57

48

True
Doble clic

FIG. 4.2.3 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

FIG. 4.2.4 Seleccin de Imgenes.

Desarrollo de Herramientas Grfias

160

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.2.5 Seleccin de Imgenes.

Oprima el botn Ok.


14.- De la paleta de componentes Standard seleccione un objeto Button
colquelo en el Panel2.

15.- Modifiquemos los siguientes atributos:


Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Continuar
Panel2->Visible=false;

16.- De la paleta de componentes Standard seleccione un Label


Panel2 con otras dos copias.
17.- Modifiquemos los siguientes atributos:
Label1.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left

Valor o Texto
Geometra Parte 1.
16

110

clTeal
32

y colquelo en el

Desarrollo de Herramientas Grfias

f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

161

80

Bold Italic
10

Label2.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
FEBRERO DE 1998
16

80

clTeal
40

96

Bold Italic
10

Label3.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
JUAN CARLOS CRUZ VEGA
11

128

clTeal
24

120
Bold Italic
7

18.- De la paleta de componentes Standard seleccione un objeto Main Menu


colquelo en la forma.
19.- haga doble clic en este componente y obtendr el diseador de mens:
20.- Con el inspector de objetos cambie las propiedades:
Propiedad
a) La propiedad Caption
b) La propiedad Caption

Valor o Texto

&Opciones
+ Enter
&Acerca de + Enter

Desarrollo de Herramientas Grfias

c) La propiedad Caption

162

&Base terica + Enter

21.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Base Terica;
Evento OnClick

Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();

FIG. 4.2.6 Diseador de mens.

22.- En el sub men Opciones anexar 2 campos ms.

Propiedad
a) La propiedad Caption
a) La propiedad Caption

Valor o Texto

De manera que tenga el siguiente resultado:

&Limpiar
&Salir

Desarrollo de Herramientas Grfias

FIG.

163

4.2.7 Opciones de Sub men.

23.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Limpiar;
Evento OnClick
Opcin &Salir;
Evento OnClick

Cdigo
Invalidate();
Close();
Exit(1);

24.- En el sub men Acerca de colocar el siguiente cdigo en el evento OnClick:


Propiedad

Valor o Texto

a) Evento OnClick

FIG.

Panel2->Visible=true;

4.2.8 Eventos asociados a los componentes.

Desarrollo de Herramientas Grfias

164

25.- Seleccione la forma haciendo un clic en ella, con el inspector de objetos en la hoja de
eventos haga doble clic en el evento que se marca e introduzca el cdigo asociado.
Componente

Cdigo

Accin

Form1

Obten_Puntos(X,Y);
Panel1->Visible=false;
Panel2->Visible=false;

Se realiza una llamada a una funcin


que obtiene los puntos seleccionados
para el clculo de la distancia.

Evento
OnMouseDown
Form1

Evento
OnMouseMove

Form1

Me aseguro que las ventanas de


mensaje creadas no estn visibles en
este momento.
Float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
Sprintf(text,"
",X1,Y1);
Canvas->TextOut(ClientWidth130,ClientHeight-40,text);
Canvas->TextOut(ClientWidth130,ClientHeight-50,text);
Canvas->TextOut(ClientWidth130,ClientHeight-60,text);
Canvas->Font->Color=clAqua;
Canvas->Font->Size=12;
Sprintf(text,"X= %2.1f
Y= %2.1f
",X1,Y1);
Canvas->TextOut(ClientWidth150,ClientHeight-50,text);
Canvas->Font->Color=clWhite;

Se obtienen los valores de la posicin


del mouse mientras este se esta
moviendo por la pantalla.
Se realizan los clculos en base al valor
en pixeles de la pantalla visual en la
que se esta trabajando, se cambia de
valor de pixeles a valor de unidades de
medida.
Los valores obtenidos en
operaciones
anteriores
desplegados en la pantalla visual.

las
son

Ejes();

Se redibujan
graduaciones.

sus

Invalidate();

Borra lo que se tena para el ajuste de


tamao.

los

ejes

Evento
OnPaint
Form1
Evento
OnReSize
Hasta ahora tenemos integrado nuestro mdulo con la siguiente presentacin:

Desarrollo de Herramientas Grfias

165

FIG. 4.2.9 Componentes conjuntos para una aplicacin.

26.- Seleccione el editor de cdigo y al final de la funciones ya capturadas introduzca las


funciones con las que complementar el modulo de programa, segn el Apndice b.
27.- Seleccione File Save Project As y obtendr una ventana de dialogo en la que
podr darle nombre a la aplicacin.

Desarrollo de Herramientas Grfias

FIG.

4.2.10 Almacenamiento en disco de un mdulo.

En esta parte se almacenan los mdulos .cpp .h y .dmf

FIG.

4.2.11 Almacenamiento en disco de un proyecto.

En esta parte se almacenan los mdulos .mak, .cpp del project manager, y .res
28.- Ahora puede presionar la tecla de funcin F9 para ejecutar la aplicacin.

166

Desarrollo de Herramientas Grfias

FIG. 4.2.12 Ejecusin del Mdulo No.2.

FIG. 4.2.13 Ejecusin del Mdulo No.2.

167

Desarrollo de Herramientas Grfias

FIG. 4.2.14 Ejecucin del Mdulo No.2.

168

Desarrollo de Herramientas Grfias

169

4.3 TERCER MODULO INTERACTIVO


(Programa Pendient.Cpp)
Objetivo:

Aplicar los conocimientos antes adquiridos tales como las coordenadas de


un punto, y la distancia existente entre dos distintos puntos; y ahora
ampliar este conocimiento para conocer con los mismos datos que ya
tenemos de 2 puntos distintos, cual es el ngulo que forma la lnea recta (o
segmento de lnea) que une ambos puntos con el eje X.

Estrategia:

Utilizando los datos y conocimientos obtenidos con los mdulos


anteriores, aplicar una sencilla frmula matemtica para descubrir el
ngulo de inclinacin o pendiente de una recta que pasa por dos puntos.
Con los mdulos anteriores conocimos una parte importante del estudio
de la Geometra Analtica ahora lo ampliaremos un poco ms.
Presentacin del texto relacionado al tema mediante un Hipertexto
asociado a la aplicacin final.

Para la elaboracin del tercer mdulo se disea una mscara que presenta:
1.2.3.4.-

Una ventana de dilogo que tenga las instrucciones de manejo del programa.
Una ventana de dilogo que contenga informacin del modulo.
Una ventana de dilogo que contenga aviso de Pendiente Indeterminada.
Un men de opciones que contenga:
a) Un Campo Opciones.
&Salir

&Limpiar

b) Un Campo
&Ayuda

c) Un campo
&Acerca de
d) Un Campo Base Terica.

Para finalizar el programa.


Para limpiar la ventana de trabajo.
Informacin sobre el uso del mdulo.
Informacin de la elaboracin del mdulo.
Hipertexto de lo esencial del tema.

Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:
1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight

Valor o Texto
Ejes Coordenados .
721

Desarrollo de Herramientas Grfias

c) La propiedad ClientWidth
d) La propiedad Color
e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top

170

1024
clBack
BildCim.ico
0

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

4.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

Se elimina, ya que no se usar.


273
417
clBtnFace
248
158

5.- De la paleta de componentes Standard seleccione un objeto Button


en el Panel.

y colquelo

6.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Continuar.
65

57

344
112

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.


Panel1->Visible=false;

7.- De la paleta de componentes Standard seleccione un objeto Memo


en elPanel.

y colquelo

Desarrollo de Herramientas Grfias

171

8.- Modificamos sus propiedades de la siguiente manera:


Valor o Texto

Propiedad

241
313

16

16

Doble clic

a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Distancia
Con el botn izquierdo del mouse, puedes
seleccionar arbitrariamente dos puntos
de los cuales se calcular su distancia
siguiendo la frmula :
d = Raiz Cuadrada [ (Y2 - Y1)^2 + (X2 - X1)^2 ]
Paralelamente se calcular la Pendiente o ngulo
de inclinacin de la recta segn la formula:
Y2 - Y1
m= ---------------------------X2 - X1
Puedes seleccionar varias rectas.

FIG.

4.3.1

Editor de lneas para componentes Memo.

9.- Selecciona el botn Ok para cerrar la ventana de dialogo.

Desarrollo de Herramientas Grfias

172

10.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

11.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

Se elimina, ya que no se usar.


233
369
clBtnFace
256
192

12.- De la paleta de componentes Standard seleccione un objeto Button


colquelo en el Panel2.

13.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Continuar.
49

57

304
96

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.


Panel2->Visible=false;

14.- De la paleta de componentes Standard seleccione un objeto Memo


en elPanel2.
15.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height

Valor o Texto

201

y colquelo

Desarrollo de Herramientas Grfias

173

281

16

16

Doble
clic

b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Pendiente Indeterminada.
Cuendo la lnea recta hace una paralela con la vertical
los valores de las x para ambos puntos son iguales,
y al hacer la resta queda cero; por lo tanto la frmula
para la pendiente quedara de la siguiente manera:
Y2 - Y1
m = -------------------------------0
Por lo que el valor de la pendiente es:
INDETERMINADO.

FIG.

4.3.2

Editor de lneas para componentes Memo.

16.- Selecciona el botn Ok para cerrar la ventana de dialogo.

17.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
18.- Modificamos sus propiedades de la siguiente manera:

y colquelo

Desarrollo de Herramientas Grfias

Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

174

Valor o Texto
Se elimina, ya que no se usar.
177

145

clTeal
856
16

19.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel3.

20.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

Valor o Texto
73

57

48

True

Doble clic

FIG. 4.3.3 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

Desarrollo de Herramientas Grfias

175

FIG. 4.3.4 Seleccin de Imgenes.

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.3.5 Seleccin de Imgenes.

Oprima el botn Ok.


21.- De la paleta de componentes Standard seleccione un objeto Button
colquelo en el Panel3.
22.- Modifiquemos los siguientes atributos:
Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Continuar
Panel3->Visible=false;

Desarrollo de Herramientas Grfias

176

23.- De la paleta de componentes Standard seleccione un Label


Panel3 con otras dos copias.
24.- Modifiquemos los siguientes atributos:
Label1.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
Geometra Parte 1.
16

110

clTeal

16

80

Bold Italic
10

Label2.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
FEBRERO DE 1998
16

80

clTeal
24

96

Bold
Italic

10

Label3.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
JUAN CARLOS CRUZ VEGA
11

128

clTeal

128
Bold Italic
7

y colquelo en el

Desarrollo de Herramientas Grfias

177

25.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

26.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Align
d) La propiedad Color

Valor o Texto
Se elimina, ya que no se usar.
73

alBottom

clTeal

27.- De la paleta de componentes Standard seleccione un objeto Main Menu


colquelo en la forma.

28.- Haga doble clic en este componente y obtendr el diseador de mens:


29.- Con el inspector de objetos cambie las propiedades:
Propiedad
a) La propiedad Caption
b) La propiedad Caption
c) La propiedad Caption
d) La propiedad Caption

Valor o Texto

&Opciones
&Ayuda
A&Cerca de
&Base terica

+ Enter
+ Enter
+ Enter
+ Enter

30.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Base Terica;
Evento OnClick

Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();

Desarrollo de Herramientas Grfias

178

FIG. 4.3.6 Diseador de mens.

31.- En el sub men Opciones anexar 2 campos mas.


Propiedad

Valor o Texto

a) La propiedad Caption
a) La propiedad Caption

&Limpiar
&Salir

De manera que tenga el siguiente resultado:

FIG.

4.3.7 Opciones de Sub men.

32.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Limpiar;
Evento OnClick
Opcin &Salir;
Evento OnClick

Cdigo
Invalidate();
Close();
Exit(1);

Desarrollo de Herramientas Grfias

179

33.- En el sub men Ayuda colocar el siguiente cdigo en el evento OnClick:


Propiedad
a) Evento OnClick

Valor o Texto
Panel1->Visible=true;

34.- En el Sub men aCerca de colocar el siguiente cdigo en el evento OnClick:


Propiedad
a) Evento OnClick

Valor o Texto
Panel2->Visible=true;

35.- Seleccione la forma haciendo un clic en ella, con el inspector de objetos en la hoja de
eventos haga doble clic en el evento que se marca e introduzca el cdigo asociado.
Componente

Cdigo

Accin

Form1

Obten_Puntos(X,Y);

Se realiza una llamada a una funcin


que obtiene los puntos seleccionados
para el clculo de la distancia.

Float X1,Y1;

Se obtienen los valores de la posicin


del mouse mientras este se esta
moviendo por la pantalla.

Evento
OnMouseDown
Form1

Evento
OnMouseMove

Form1

X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
Sprintf(text,"
",X1,Y1);
Canvas->TextOut(820,5,text);
Canvas->TextOut(820,10,text);
Canvas->TextOut(820,15,text);
Canvas->Font->Size=12;
Canvas->Font->Color=clRed;
Sprintf(text,"X= %2.1f
Y= %2.1f
",X1,Y1);
Canvas->TextOut(820,10,text);
Canvas->Font->Color=clWhite;

Se realizan los clculos en base al valor


en pixeles de la pantalla visual en la
que se esta trabajando, se cambia de
valor de pixeles a valor de unidades de
medida.
Los valores obtenidos en
operaciones
anteriores
desplegados en la pantalla visual.

las
son

Ejes();

Se rredibujan
graduaciones.

sus

Invalidate();

Borra lo que se tenia para el ajuste de


tamao.

los

ejes

Evento
OnPaint
Form1
Evento
OnReSize

Desarrollo de Herramientas Grfias

180

Hasta ahora tenemos integrado nuestro modulo con la siguiente presentacin:

FIG.

4.3.8 Ambiente del mdulo No.3.

Nota: Los pasos 21 al 25 de la seccin anterior podran estar en un archivo de cabecera


ya que son similares en estos dos casos, pero existen pequeas diferencias que se hicieron
a propsito para que se construyan totalmente y se practique, posteriormente para efectos
de espacio en almacenamiento y rapidez, se pueden integrar en un archivo de cabecera
como una librera.
36.- Seleccione el editor de cdigo y al final de la funciones ya capturadas introduzca las
funciones con las que complementar el modulo de programa, segn el Apndice b.
37.- Seleccione File Save Project As para almacenar el proyecto en disco.

Desarrollo de Herramientas Grfias

FIG.

181

4.3.9 Ejecucin del mdulo No.3.

Desarrollo de Herramientas Grfias

182

4.4 CUARTO MODULO INTERACTIVO


(Programa NuevPend.Cpp)
Objetivo:

Aplicar los conocimientos antes adquiridos es decir, las coordenadas de


un punto, y la distancia existente entre dos distintos puntos; ahora ampliar
este conocimiento a conocer con los mismos datos que ya tenemos de 2
puntos distintos, cual es la pendiente que forma la lnea recta (o segmento
de lnea) que une ambos puntos, checar como varan los datos al mover
una de los puntos entes dados.

Estrategia:

Utilizando los datos y conocimientos obtenidos con los mdulos


anteriores, aplicar una sencilla frmula matemtica para descubrir el
ngulo de inclinacin o pendiente de una recta que pasa por dos puntos.
Imprimir en pantalla todo cambio de coordenadas de un punto si es que
este cambia de posicin
Presentacin del texto relacionado al tema mediante un Hipertexto
asociado a la aplicacin final.

Parecer que este mdulo est de ms, ya que en el mdulo anterior se contempl el
estudio de la pendiente, pero particularmente, ste implementa acciones sobre la lnea
recta como son la rotacin o traslacin de un segmento fijo a otra posicin cualesquiera
en la ventana visual.
Para la elaboracin del cuarto mdulo se disea una mscara que presenta:
1.2.3.4.5.-

Una ventana de dilogo que tenga las instrucciones de manejo del programa.
Una ventana de dilogo que contenga informacin del modulo.
Una ventana de dilogo que contenga aviso de Pendiente Indeterminada.
Una ventana de ayuda de las acciones permitidas.
Un men de opciones que contenga:
a) Un Campo &Opciones.

&Salir

Para finalizar el programa.

&Limpiar

b) Un Campo &Accin
&Rotar

&Trasladar
c) Un campo A&yuda
&Uso

&Acerca de
d) Un Campo Base Terica.

Para limpiar la ventana de trabajo.


Eventos que se realizan para rotar un punto.
Eventos que se realizan para trasladar un punto.
Instrucciones Iniciales de uso.
Informacin de la elaboracin del mdulo.
Hipertexto de lo esencial del tema.

Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:

Desarrollo de Herramientas Grfias

183

1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight
c) La propiedad ClientWidth
d) La propiedad Color
e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top

Valor o Texto
Ejes Coordenados Cartesianos .
721

1024

clBack
BildCim.ico
0

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

4.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

Se elimina, ya que no se usar.


211
425
clGray
248
158

5.- De la paleta de componentes Standard seleccione un objeto Button


en el Panel.
6.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Continuar.
105

75

336

56

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.

y colquelo

Desarrollo de Herramientas Grfias

184

Panel1->Visible=false;

7.- De la paleta de componentes Standard seleccione un objeto Memo


en elPanel.
8.- Modificamos sus propiedades de la siguiente manera:
Propiedad

Valor o Texto
177
313

16

16

Doble clic

a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Pendiente.
Con el botn izquierdo del mouse, puedes
seleccionar arbitrariamente dos puntos
de los cuales se calcular Pendiente o ngulo
de inclinacin de la recta segn la formula:
Y2 - Y1
m= ---------------------------X2 - X1

FIG.

4.4.1

Editor de lneas para componentes Memo.

y colquelo

Desarrollo de Herramientas Grfias

185

9.- Selecciona el botn Ok para cerrar la ventana de dialogo.

10.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

11.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Align
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

Se elimina, ya que no se usar.


65
alBottom
clGray
0
0

12.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

13.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

Se elimina, ya que no se usar.


105
497
clBtnFace
8
616

14.- De la paleta de componentes Standard seleccione un objeto Button


colquelo en el Panel3.
15.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width

Valor o Texto
&Aceptar.
73

65

Desarrollo de Herramientas Grfias

d) La propiedad Left
e) La propiedad Top

186

424
16

Haga doble clic en el botn Aceptar e introduzca el siguiente cdigo.


Panel3->Visible=false;
16.- De la paleta de componentes Standard seleccione un objeto Memo
en elPanel3.

y colquelo

17.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
89

409

Doble
clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Pendiente Indeterminada. Cuendo la lnea recta hace una paralela con la
vertical, los valores de las x para ambos puntos son iguales, y al hacer la
resta queda cero;
por lo tanto la frmula para la pendiente quedara de la siguiente manera:
Y2 - Y1
m = -------------------------------0

Por lo que el valor de la pendiente es:


INDETERMINADO.

Desarrollo de Herramientas Grfias

FIG.

4.4.2

187

Editor de lneas para componentes Memo.

18.- Selecciona el botn Ok para cerrar la ventana de dialogo.

19.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

20.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
177

145

clTeal

736

144

21.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel4.
22.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left

Valor o Texto

73
57
48

Desarrollo de Herramientas Grfias

f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

188

True
Doble clic

FIG. 4.4.3 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

FIG. 4.4.4 Seleccin de Imgenes.

Seleccione la imagen deseada y oprima el botn Open.

Desarrollo de Herramientas Grfias

189

FIG. 4.4.5 Seleccin de Imgenes.

Oprima el botn Ok.


23.- De la paleta de componentes Standard seleccione un objeto Button
colquelo en el Panel4.

24.- Modifiquemos los siguientes atributos:


Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Continuar
Panel4->Visible=false;

25.- De la paleta de componentes Standard seleccione un Label


Panel4 con otras dos copias.
26.- Modifiquemos los siguientes atributos:
Label1.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style

Valor o Texto
Geometra Parte 1.
16

110

clTeal
16

80

Bold Italic

y colquelo en el

Desarrollo de Herramientas Grfias

h) La propiedad Font Size

190

10

Label2.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
FEBRERO DE 1998
16

80

clTeal
24

96

Bold
Italic

10

Label3.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
JUAN CARLOS CRUZ VEGA
11

128

clTeal

128
Bold Italic
7

27.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
28.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Left
d) La propiedad Top
f) La propiedad Color

Valor o Texto
Se elimina, ya que no se usar.
73

clTeal

y colquelo

Desarrollo de Herramientas Grfias

191

29.- De la paleta de componentes Standard seleccione un objeto Button


colquelo en el Panel5.

30.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Aceptar.
89

977
8

Haga doble clic en el botn Aceptar e introduzca el siguiente cdigo.


Panel5->Visible=false;

31.- De la paleta de componentes Standard seleccione un objeto Memo


en elPanel3.

y colquelo

32.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
73

873

Doble
clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


ROTAR O TRASLADAR.
Para rotar o trasladar la recta en tu ventana visual,
primeramente tienes que seleccionar del menu Accin lo que quieras hacer,
enseguida debes tomar uno de los extremos del segmento de recta dando un
click con el botn izquierdo del mouse, una vez que
lo sujetes podrs trasladar o mover la recta a la posicin que tu desees.
Para soltar la recta, tendrs que hacer doble click con el boton izquierdo del
mouse.

Desarrollo de Herramientas Grfias

FIG.

192

4.4.6

Editor de lneas para componentes Memo.

33.- Selecciona el botn Ok para cerrar la ventana de dialogo.


34.- De la paleta de componentes Standard seleccione un objeto Main Menu
colquelo en la forma.

35.- Haga doble clic en este componente y obtendr el diseador de menus:


36.- Con el inspector de objetos cambie las propiedades:
Propiedad
a) La propiedad Caption
b) La propiedad Caption
c) La propiedad Caption
d) La propiedad Caption

Valor o Texto

&Opciones
&Ayuda
A&Cerca de
&Base terica

+ Enter
+ Enter
+ Enter
+ Enter

37.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Base Terica;
Evento OnClick

Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();

38.- En el sub men Opciones anexar 2 campos mas.


Propiedad

Valor o Texto

Desarrollo de Herramientas Grfias

193

&Limpiar
a) La propiedad Caption

&Salir
a) La propiedad Caption

39.- En el sub men Accin anexar 2 campos mas.


Valor o Texto
Propiedad
&Rotar
a) La propiedad Caption

&Trasladar
a) La propiedad Caption

40.- En el sub men Ayuda colocar el siguiente cdigo en el evento OnClick:


Propiedad
a) Evento OnClick

Valor o Texto
Panel1->Visible=true;

41.- En el Sub men aCerca de colocar el siguiente cdigo en el evento OnClick:


Propiedad
a) Evento OnClick

Valor o Texto
Panel2->Visible=true;

42.- Seleccione la forma haciendo un clic en ella, con el inspector de objetos en la hoja de
eventos haga doble clic en el evento que se marca e introduzca el cdigo asociado.

Desarrollo de Herramientas Grfias

194

Componente

Cdigo

Accin

Form1

if(Tag<1)Obten_Puntos(X,Y);
if(t==true) Punto_A_mover(X,Y,1);
if(e==true) Punto_A_mover(X,Y,2);

Guarda la posicin de los puntos que se


fijaron en el eje coordenado, la
variables t y e guardan la posicin del
primer y segundo punto por si ese se
selecciona para trasladar o rotar

Evento
OnMouseDown
Form1

Evento
OnMouseMove

Evento
OnDblClick
Form1

float t1,t2;
t1=(float(X-(ClientWidth/2))/30.0);
t2=(float((ClientHeight/2)-Y)/30.0);
sprintf(text,"
",X1,Y1);
Canvas->TextOut(120,660,text);
Canvas->TextOut(120,665,text);
Canvas->TextOut(120,670,text);
Canvas->Font->Size=12;
Canvas->Font->Color=clAqua;
Sprintf(text,"X= %2.1f
Y= %2.1f
",t1,t2);
Canvas->TextOut(120,665,text);
Canvas->Font->Color=clWhite;
if(Tag>=1){ Xf=X; Yf=Y;
If(w==true)
{ Mueve(Xf,Yf); }
if(ee==true)
{ Traslada(Xf,Yf); }
}
}
z=true;
e=t=n=s=nn=ss=false;
Ejes();

Calcla e imprime en la pantalla la


posicin en el eje coordenado por el
cual se est desplazando el mouse.
Guarda las posiciones de los puntos
puestos en el sistema coordenado para
las acciones de rotacin y traslacin.

Se redibujan
graduaciones.

los

ejes

sus

Evento
OnPaint
Invalidate();
Form1
Evento
OnReSize

Borra lo que se tena para el ajuste de


tamao.

Desarrollo de Herramientas Grfias

195

43.- As se ver la construccin:

FIG.

4.4.7

Construccin Mdulo No. 4.

44.- Seleccione el editor de cdigo y al final de la funciones ya capturadas introduzca las


funciones con las que complementar el modulo de programa, segn el Apndice b.
45.- Seleccione File Save Project As Para almacenar al archivo en disco.

Desarrollo de Herramientas Grfias

FIG.

196

4.4.8

Ejecucin Mdulo No. 4.

Desarrollo de Herramientas Grfias

197

4.5 QUINTO MODULO INTERACTIVO


(Programa Mxplusb.Cpp)
Objetivo: Presentacin Grfica de la recta y sus diferentes ecuaciones.
Estrategia: Elaboracin de un mdulo en el cual el usuario mediante el mouse coloque
2 puntos aleatorios en el sistema coordenado, y el programa muestre segn
los puntos marcados, el trazo de la recta que pasa por esos puntos, adems de
visualizar sus diferentes representaciones o ecuaciones.
Presentacin del texto relacionado al tema mediante un Hipertexto asociado
a la aplicacin final.
Para la elaboracin del Quinto mdulo se disea la mscara siguiente:
1.- Una ventana de dilogo que tenga las instrucciones de manejo del programa.
2.- Una ventana de dilogo que contenga informacin del mdulo.
3.- Un men de opciones que contenga:
a) Un Campo Opciones.

&Salir

Para finalizar el programa.

&Limpiar

Para limpiar la ventana de trabajo.


b) Un Campo Ayuda
&Uso

Informacin del manejo del mdulo.


&Indicaciones
Informacin de manipulacin del objeto.
c) Un Campo A&cerca de Informacin de la construccin del mdulo.
d) Un Campo Base Terica. Hipertexto de lo esencial del tema.
Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:
1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight
c) La propiedad ClientWidth
d) La propiedad Color
e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top

Valor o Texto
LA RECTA
721

1024
clTeal
BildCim.ico
0

CIMAT 1998 .

Desarrollo de Herramientas Grfias

198

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

4.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
145

609

clsilver
0
548

5.- De la paleta de componentes Standard seleccione un objeto Button


en el Panel.

y colquelo

6.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Aceptar.
97

49

552
32

Haga doble clic en el botn Continuar e introduzca el siguiente cdigo.


Panel1->Visible=false;

7.- De la paleta de componentes Standard seleccione un objeto Memo


en el Panel.
8.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height

Valor o Texto

129

y colquelo

Desarrollo de Herramientas Grfias

199

539

Doble
clic

b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


Pendiente Indeterminada. Cuando la lnea recta hace una paralela con la vertical
los valores de las x para ambos puntos son iguales, y al hacer la resta queda
cero; por lo tanto la frmula para la pendiente quedara de la siguiente manera:
Y2 - Y1
m = ------------------------ Por lo que el valor de la pendiente es:
0
INDETERMINADO.

FIG.

4.5.1

Editor de lneas para campo memo.

9.- Selecciona el botn Ok para cerrar la ventana de dialogo.

10.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
11.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
697

415

clTeal

601

y colquelo

Desarrollo de Herramientas Grfias

200

y colquelo
12.- De la paleta de componentes Standard seleccione un objeto Label
en el Panel2, realice esta operacin 15 veces mas de manera que tenga 16 componentes
Label en la forma2.
13.- Modificamos sus propiedades de la siguiente manera:
Label1
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Pendiente
20

91

clGray
24

248

Label2
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
y y1 = m(x x1)
29

138

clTeal
24

264

Label3
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
y = mx mx1 + y1
29

140

clTeal
24

288

Label4
Propiedad
a) La propiedad Caption
b) La propiedad Height

Valor o Texto
Y= mx mxi + y1
25

Desarrollo de Herramientas Grfias

c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

201

158

clTeal
24

328

Label5
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Forma Punto Pendiente
20

199

clGray

96

368

Label6
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
y y1 =
29

292

clTeal
40

400

m ( x - x1 )

Label7
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Pendiente - Ordenada al origen
20

263
clGray
64

440

Label8
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left

Valor o Texto
y = mx + b
29

104

clTeal

128

Desarrollo de Herramientas Grfias

202

f) La propiedad Top
Label9
Propiedad

a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

y y1 =
29

292

clTeal
40

400

464
Valor o Texto
m ( x - x1 )

Label10
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
y =
29

25

clTeal
40

512

Label11
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
x +
29

50

clTeal
152

512

Label12
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Ecuacin General de la Recta
20

250

clGray
64

560

Label13
Propiedad
a) La propiedad Caption

Valor o Texto
Ax +

By + C = 0

Desarrollo de Herramientas Grfias

b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

203

29

166

clTeal
96

584

Label14
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
x +
27

39

clTeal
80

624

Label15
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
y +
27

31

clTeal
200

624

Label16
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
= 0
29

34

clTeal
328

624

y colquelo
14.- De la paleta de componentes Standard seleccione un objeto TEditl
en el Panel2, realice esta operacin 4 veces ms de manera que tenga 5 componentes
TEdit en la forma2.
15.- Modificamos sus propiedades de la siguiente manera:

Desarrollo de Herramientas Grfias

204

Tedit1
Propiedad
a) La propiedad Text
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

0
32
57
clTeal
72
512
Cdigo
float W;
strcpy(text,MODIm->Text.c_str());
sscanf(text,"%f",&INTER1);
IncM->Position=INTER1*10;
W=INTER1;
sprintf(text,"%.1f",W);
Label16->Caption=text;
R=INTER1;
M=R;
if(INTER1<=300) Traza_Recta(R);
else Limpia();

Eventos
OnChange

Tedit2
Propiedad
a) La propiedad Text
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
Eventos

Valor o Texto

OnChange

0
32
57
clTeal
200
512
float W;
strcpy(text,MODIb->Text.c_str());
sscanf(text,"%f",&INTER);
Incb->Position=INTER*10.0;
W=INTER;
Recta2(W);

Tedit3
Propiedad
a) La propiedad Text

Valor o Texto

Desarrollo de Herramientas Grfias

b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
Eventos

205

OnChange

28
57
clTeal
8
624
float W;
strcpy(text,MODIa->Text.c_str());
sscanf(text,"%f",&INTER1);
W=INTER1;
sprintf(text,"%.1f",W);
Label16->Caption=text;
MODIm->Text=text;
COEX->Position=INTER1*10;
IncM->Position=INTER1*10;
R=INTER1;
M=R;
if(INTER1<=300) Traza_Recta(R);
else Limpia();

Tedit4
Propiedad
a) La propiedad Text
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
Eventos

Valor o Texto

0
28
57
clTeal
128
624

OnChange

Tedit5
Propiedad
a) La propiedad Text
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto

0
28
57
clTeal
248
624

Desarrollo de Herramientas Grfias

206

float W;
strcpy(text,MODIC->Text.c_str());
sscanf(text,"%f",&INTER);
CTE->Position=INTER*10.0;
Incb->Position=INTER*10.0;
sprintf(text,"%.1f",INTER);
MODIb->Text=text;
W=INTER;
Recta2(W);

Eventos
OnChange

y
16.- De la paleta de componentes Win95 seleccione un objeto UpDown
colquelo en el Panel2, realice esta operacin 4 veces ms de manera que tenga 5
componentes UpDown en la forma2.
17.- Modificamos sus propiedades de la siguiente manera:
UpDown1
Propiedad
a) La propiedad Increment
b) La propiedad Height
c) La propiedad Width
d) La propiedad Max
e) La propiedad Min
f) La propiedad Left
g) La propiedad Top
h) La propiedad Name
Eventos
OnClick

Valor o Texto

1
33
17
500
-500
128
512
IncM
Cdigo
MODIm->Text=IncM->Position*0.1;
strcpy(text,MODIm->Text.c_str());
sscanf(text,"%f",&INTER1);
EN reales
sprintf(text,"%.1f",INTER1);
Label16->Caption=text;
R=INTER1;
M=R;
Traza_Recta(R);

// M ESTA

Desarrollo de Herramientas Grfias

207

UpDown2
Propiedad
a) La propiedad Increment
b) La propiedad Height
c) La propiedad Width
d) La propiedad Max
e) La propiedad Min
f) La propiedad Left
g) La propiedad Top
h) La propiedad Name

Valor o Texto

1
33
17
500
-500
256
512
Incb
Cdigo
MODIb->Text=Incb->Position*0.1;
strcpy(text,MODIb->Text.c_str());
sscanf(text,"%f",&INTER);
EN reales
b=INTER;
Recta2(b);

Eventos
OnClick

// M ESTA

UpDown3
Propiedad
a) La propiedad Increment
b) La propiedad Height
c) La propiedad Width
d) La propiedad Max
e) La propiedad Min
f) La propiedad Left
g) La propiedad Top
h) La propiedad Name

Valor o Texto

1
33
17
500
-500
64
624
COEX
Cdigo

Eventos
OnClick

MODIa->Text=COEX->Position*0.1;
strcpy(text,MODIa->Text.c_str());
sscanf(text,"%f",&INTER1);
EN reales
sprintf(text,"%.1f",INTER1);
Label16->Caption=text;
R=INTER1;
M=R;
Traza_Recta(R);

// M ESTA

Desarrollo de Herramientas Grfias

208

UpDown4
Propiedad
a) La propiedad Increment
b) La propiedad Height
c) La propiedad Width
d) La propiedad Max
e) La propiedad Min
f) La propiedad Left
g) La propiedad Top
h) La propiedad Name

Valor o Texto

1
33
17
500
-500
304
624
CTE

Eventos
OnClick

Cdigo
float cte;
MODIC->Text=CTE->Position*0.1;
strcpy(text,MODIC->Text.c_str());
sscanf(text,"%f",&cte);

18.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

19.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
169

153

clSilver
838
200

20.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel2.
21.- Modificamos sus propiedades de la siguiente manera:

Desarrollo de Herramientas Grfias

209

Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

Valor o Texto
73

57

48

True
Doble clic

FIG. 4.5.2 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

FIG. 4.5.3 Seleccin de Imgenes.

Desarrollo de Herramientas Grfias

210

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.5.4 Seleccin de Imgenes.

Oprima el botn Ok.


22.- De la paleta de componentes Standard seleccione un objeto Button
colquelo en el Panel2.

23.- Modifiquemos los siguientes atributos:


Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Continuar
Panel2->Visible=false;

24.- De la paleta de componentes Standard seleccione un Label


Panel2 con otras dos copias.
25.- Modifiquemos los siguientes atributos:
Label1.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left

Valor o Texto
Geometra Parte 1.
24

179

clGray
16

y colquelo en el

Desarrollo de Herramientas Grfias

f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

211

120
Bold Italic
16

Label2.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
JUAN CARLOS CRUZ VEGA
13

167

clGray
16

144
Bold Italic
9

Label3.
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
FEBRERO DE 1998
13

118

clGray
32

160
Bold Italic
9

26.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
27.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
233

404

clTeal
0

y colquelo

Desarrollo de Herramientas Grfias

212

28.- De la paleta de componentes Standard seleccione un objeto Memo


en el Panel.
29.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
209
396

Doble clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


USO DE LA APLICACION.
Despus de trazar la recta, y que conoscas los datos de la
ecuacin original, puedes apreciar que al modificar la
pendiente ( m ), el efecto que toma la recta es el de un
giro apartir de un punto conocido.
Si por el contrario modificas la b, observas que el efecto
que toma la recta es de una traslacin a travs del
parmetro que modificas que es el cruce con el eje y.

FIG. 4.5.5 Editor de lneas.

y colquelo

Desarrollo de Herramientas Grfias

213

30.- Selecciona el botn Ok para cerrar la ventana de dialogo.


31.- De la paleta de componentes Standard seleccione un objeto Panel
en la forma.

y colquelo

32.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
233

417

clTeal
0

33.- De la paleta de componentes Standard seleccione un objeto Memo


en el Panel.
34.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines

Valor o Texto
217
401

Doble clic

Aparecer el editor de Lneas, en el se teclear el siguiente Texto.


INDICACIONES:
Para iniciar, debes con el botn izquierdo del mouse
seleccionar 2 puntos arbitrarios en tu Sistema
Coordenado; A partir de estos puntos se calcularn
Las siguientes ecuaciones de la recta.
a) Pendiente.
b) y - y1 = m ( x - x1)
c) y = mx + b
d) Ax + By + C = 0

y colquelo

Desarrollo de Herramientas Grfias

214

FIG. 4.5.6 Editor de Lneas.

35.- Selecciona el botn Ok para cerrar la ventana de dialogo.

36.- De la paleta de componentes Standard seleccione un objeto Main Men


colquelo en la forma.

37.- haga doble clic en este componente y obtendr el diseador de mens:


38.- Con el inspector de objetos cambie las propiedades:
Propiedad
a) La propiedad Caption
b) La propiedad Caption
c) La propiedad Caption
c) La propiedad Caption

Valor o Texto

&Opciones
&Ayuda
A&cerca de
&Base terica

+
+
+
+

Enter
Enter
Enter
Enter

39.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.

Desarrollo de Herramientas Grfias

215

Componente
Opcin &Base Terica;
Evento OnClick

Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();

FIG. 4.5.7 Diseador de mens.

40.- En el sub men Opciones anexar 2 campos mas.


Propiedad
a) La propiedad Caption
a) La propiedad Caption

Valor o Texto

&Limpiar
&Salir

41.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Limpiar;
Evento OnClick
Opcin &Salir;
Evento OnClick

Cdigo
Invalidate();
Close();
Exit(1);

42.- En el sub men Ayuda anexar 2 campos mas.

Desarrollo de Herramientas Grfias

216

Propiedad
a) La propiedad Caption
a) La propiedad Caption

Valor o Texto

&Uso
&Indicaciones

43.- Seleccione la hoja de eventos y haga doble clic en el evento OnClick e introduzca el
siguiente cdigo.
Componente
Opcin &Uso;
Evento OnClick
Opcin a&Cerca de
Evento OnClick

Cdigo
Panel1->Visible=true;
Invalidate();
Panel2->Visible=true;

44.- Seleccione la forma haciendo un clic en ella, con el inspector de objetos en la hoja de
eventos haga doble clic en el evento que se marca e introduzca el cdigo asociado.

Componente
Form1

Evento
OnMouseDown

Form1

Evento
OnMouseMove

Cdigo

Accin

Canvas->MoveTo(X,Y);
Canvas->Pen->Color=clAqua;
Canvas->Ellipse(X,Y,X,Y);
Canvas->Ellipse(X,Y,X+1,Y+1);
Canvas->Ellipse(X,Y,X+2,Y+2);
Canvas->Ellipse(X,Y,X+3,Y+3);
Canvas->Ellipse(X,Y,X+4,Y+4);
old_x=X;
old_y=Y;
Pinta_Coordenada(old_x,old_y);

Se selecciona un punto en la
pantalla y se remarca de manera
que no se vea un solo pixel, sino
un grupo de pixeles.

float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
Sprintf(text,"
",X1,Y1);
Canvas->TextOut(5,5,text);
Canvas->TextOut(0,0,text);
Canvas->TextOut(5,10,text);
Canvas->Font->Color=clAqua;
Sprintf(text,"X= %2.1f
Y= %2.1f
",X1,Y1);
Canvas->TextOut(5,5,text);

Se obtienen los valores de la


posicin del mouse mientras este
se esta moviendo.

Se hace una llamada a la funcin


que
pintar
los
valores
numricos de la coordenada.

Se realizan los clculos en base


al valor en pixeles de la pantalla
visual en la que se esta
trabajando, se cambia de valor
de pixeles a valor de unidades de
medida.

Desarrollo de Herramientas Grfias

Form1

217

Canvas->Font->Color=clWhite;

Los valores obtenidos en las


operaciones
anteriores son
desplegados en la pantalla
visual.

Ejes();

Se realiza una llamada a la


funcin
que
marca
las
graduaciones
de
las
coordenadas.

Invalidate();

Borra lo que se tenia para el


ajuste de tamao.

Evento
OnPaint

Form1
Evento
OnReSize

Hasta ahora tenemos integrado nuestro mdulo con la siguiente presentacin:

FIG. 4.5.8 Componentes del mdulo 5.

Desarrollo de Herramientas Grfias

218

45.- Seleccione el editor de cdigo y al final de la funciones ya capturadas introduzca las


funciones con las que complementar el modulo de programa, segn el Apndice b.
46.- Seleccione File Save Project As y obtendr una ventana de dialogo en la que
podr darle nombre a la aplicacin.

FIG. 4.5.9 ejecucin del mdulo 5.

Desarrollo de Herramientas Grfias

FIG. 4.5.10 ejecucin del mdulo 5.

219

Desarrollo de Herramientas Grfias

4.6

220

PRESENTACION (Sim.cpp)

Para la elaboracin de la presentacin se disea una mscara que presenta:


1.2.3.4.-

El logotipo de la institucin donde se desarrollo el proyecto.


El logotipo de la institucin donde se entregar el proyecto.
Botones que controlen el acceso a los diferentes mdulos construidos.
Un men de opciones que contenga:
c) Una opcin para salir del proyecto.
d) Una ventana de dialogo con informacin de la elaboracin del mdulo.

Y pasamos a la construccin del mdulo con los siguientes pasos:


1.- Seleccionamos del men principal File New Application, para tener una forma sin
inicializar.
2.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad ClientHeight
c) La propiedad ClientWidth
d) La propiedad Color
e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top

Valor o Texto

Herramientas Grficas Interactivas .


479
570
clTeal
BildCim.ico
213
120

Y lo que veremos ser la ventana en la cual tendremos el control del programa:

Desarrollo de Herramientas Grfias

221

FIG. 4.6.1 Diseo de la forma.

3.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.
4.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Align

Valor o Texto

Se elimina, ya que no se usar.


129
544
clTeal
AlBottom

y colquelo

Desarrollo de Herramientas Grfias

222

FIG. 4.6.2 Diseo de la forma.

5.- De la paleta de componentes Standard seleccione un objeto Button


en la forma repitiendo la accin 4 veces mas colocndolos en el panel.
6.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Introduccin.
32

209
40

14

Haga doble clic en el botn introduccin e introduzca el siguiente cdigo.


WinExec("SIMULA.EXE",SW_SHOWDEFAULT);

y colquelo

Desarrollo de Herramientas Grfias

223

Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Coordenadas Rectangulares.
32

227

270

14

Haga doble clic en el botn Coordenada Rectangulares e introduzca el siguiente cdigo.


WinExec("PUNTO1.EXE",SW_SHOWDEFAULT);
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Distancia Entre Puntos.
32

178
15

72

Haga doble clic en el botn Distancia Entre Puntos e introduzca el siguiente cdigo.
WinExec("P2.EXE",SW_SHOWDEFAULT);
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Pendiente.
32

161
205

72

Haga doble clic en el botn Pendiente e introduzca el siguiente cdigo.


WinExec("N_pend.EXE",SW_SHOWDEFAULT);
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Left
e) La propiedad Top

Valor o Texto
&Ecuaciones de la Recta.
32

154
380

72

Desarrollo de Herramientas Grfias

224

Haga doble clic en el botn Ecuaciones de la Recta e introduzca el siguiente cdigo.


WinExec("MXMASB.EXE",SW_SHOWDEFAULT);

FIG. 4.6.3 Botones Controladores.

7.- De la paleta de componentes Additional seleccione un objeto Image


en la forma.
8.- Modificamos sus propiedades de la siguiente manera:
Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

Valor o Texto
312

264

True
Doble clic

FIG. 4.6.4 Presentador de Imgenes.

y colquelo

Desarrollo de Herramientas Grfias

225

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

FIG. 4.6.5 Seleccin de Imgenes.

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.6.6 Seleccin de Imgenes.

Oprima el botn Ok.

9.- De la paleta de componentes Additional seleccione un objeto Image


en la forma.

y colquelo

Desarrollo de Herramientas Grfias

226

10.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Height
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture

Valor o Texto
312

264

280
8

True

Doble clic

FIG. 4.6.7 Presentador de Imgenes.

Presione el botn Load y obtendr una caja de dialogo para seleccionar el icono deseado
o podr buscarlo en caso de no encontrarse en el directorio mostrado.

FIG. 4.6.8 Seleccin de Imgenes.

Desarrollo de Herramientas Grfias

227

Seleccione la imagen deseada y oprima el botn Open.

FIG. 4.6.9 Seleccin de la Imagen.

Oprima el botn Ok.


Con estos pasos tendr las imgenes disponibles ya en su forma.

11.- De la paleta de componentes Standard seleccione un objeto Panel


en la forma.

y colquelo

12.- Modificamos sus propiedades de la siguiente manera:


Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top

Valor o Texto
Se elimina, ya que no se usar.
216

209

clGray
192
64

13.- De la paleta de componentes Additional seleccione un objeto Image


colquelo en el Panel2.
14.- Modificamos sus propiedades de la siguiente manera:

Desarrollo de Herramientas Grfias

228

Propiedad
a) La propiedad Height
b) La propiedad Width
e) La propiedad Left
f) La propiedad Top

Valor o Texto

104
88
56
8

Repetimos las instrucciones del paso 8 para cargar el BMP de CIMAT.

15.- De la paleta de componentes Standard seleccione un objeto Button


colquelo en la forma.

16.- Modifiquemos los siguientes atributos:


Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Continuar
Panel2->Visible=false;

17.- De la paleta de componentes Standard seleccione un Label


forma con otras dos copias.
18.- Modifiquemos los siguientes atributos:
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size
Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color

Valor o Texto
Geometra Parte 1.
24

179

clGray
16

120
Bold Italic
16

Valor o Texto
JUAN CARLOS CRUZ VEGA
13

167

clGray

y colquelo en la

Desarrollo de Herramientas Grfias

e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

229

16

144
Bold Italic
9

Propiedad
a) La propiedad Caption
b) La propiedad Height
c) La propiedad Width
d) La propiedad Color
e) La propiedad Left
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size

Valor o Texto
FEBRERO DE 1998
13

118

clGray
32

160
Bold Italic
9

19.- De la paleta de componentes Standard seleccione un objeto Main Menu


colquelo en la forma.
20.- haga doble clic en este componente y obtendr el diseador de mens:

FIG.

4.6.10 Diseador de mens.

21.- Con el inspector de objetos cambie las propiedades:


Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Salir
exit(0);

Desarrollo de Herramientas Grfias

230

Propiedad
a) La propiedad Caption
b) El evento OnClick

Valor o Texto

&Acerca de
Panel2->Visible=true;

22.- Coloque el siguiente cdigo en la funcin mostrada:


__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->HelpFile = "DOCUMENTO.HLP";
}
23.- Presione la tecla F9 para ejecutar la aplicacin:

FIG.

4.6.11

Aplicacin final.

Desarrollo de Herramientas Grfias

4.7

231

ELABORACION DEL HIPERTEXTO.

Para la elaboracin del hipertexto, tom en cuenta los mdulos que se elaboraron, as que
cada mdulo tendr en su aplicacin una opcin de revisin del texto asociado al tema:
Los Mdulos fueron los siguientes:
1.2.3.4.-

Puntos en el sistema coordenado cartesiano.


Distancia entre dos puntos.
Pendiente formada por la recta que pasa por dos puntos.
Ecuaciones de la recta

Con estos puntos bien marcados, comenc a recopilar material sobre los distintos temas,
en los libros mas comunes de Geometra Analtica, sobre el siguiente programa:

Recta real.
Plano cartesiano.
Coordenadas cartesianas.
La recta que pasa por dos puntos.
Formula de la distancia.
Formula del punto medio.
Pendiente
Pendiente positiva.
Pendiente negativa.
Pendiente cero.
Pendiente Indeterminada.
Ecuaciones de la recta.
Forma punto pendiente
Forma pendiente ordenada al origen.
Ecuacin de una recta vertical.
Ecuacin general de la recta.
Rectas Paralelas.
Rectas perpendiculares.

Con el material recopilado, proced a esquematizar como presentara cada uno de los
siguientes temas y cuales se relacionaran, por lo que decid hacer el siguiente esquema:

Desarrollo de Herramientas Grfias

232

RECTA
REAL
BHELP 100

PLANO
CARTESIANO
BHELP 200

LA RECTA QUE
PASA POR 2
PUNTOS
BHELP 300

FORMULA DE
LA DISTANCIA
BHELP 400

COORDENADAS
CARTESIANAS
BHELP 210

Desarrollo de Herramientas Grfias

FORMULA DEL
PUNTO MEDIO

233

PENDIENTE
POSITIVA

BHELP 500
BHELP 610

PENDIENTE
NEGATIVA

BHELP 620

PENDIENTE
BHELP 600

PENDIENTE
CERO

BHELP 630

RECTAS
PARALELAS

PENDIENTE
INDETERMINADA

BHELP 640
BHELP 700

Desarrollo de Herramientas Grfias

RECTAS
PERPENDICULARES

234

FORMA PUNTO
PENDIENTE

BHELP 800
BHELP 910

PENDIENTE
ORDENADA AL
ORIGEN
BHELP 920

ECUACIONES DE
LA RECTA
BHELP 900

RECTA
VERTICAL

BHELP 930

ECUACION
GENERAL DE LA

BHELP 940

Desarrollo de Herramientas Grfias

235

Antes de iniciar con el desarrollo del hipertexto, debo mencionar, que existen varios
programas que ya realizan el hipertexto, usted solo tiene que introducir el texto y
controlar sus relaciones; o existen varios editores de texto que en la opcin de salvar el
documento, cuentan con la opcin de salvar en formato RTF (Rich Text Format); que es
el formato que nos ayuda para la compilacin de este tipo de textos.
Para este trabajo en particular utilic Word95 V6.0.
Como nota adicional puedo comentar que en Word97 la opcin de salvar con formato
RTF y algunas otras aplicaciones no funcionan, por lo que utilic la versin 6.0 de Word.
PROCEDIMIENTO
Agrup los temas que vea ms relacionados, y los divid por nmeros de nivel, para
saber cuando un nivel superior llama a uno inferior, y saber como regresar paso a paso
por los niveles en los que se baje.
En la presentacin del hipertexto pondr un men que llamar CONTENIDO y tendr las
siguientes directivas:
Directiva

Accin

#
$

Define un identificador nico para el tpico.


La palabra que lo acompaa tiene un tpico
asociado.
Realiza la accin de paso atrs o adelante.
La palabra que lo acompaa es la palabra clave
para el Indexado.

+
K

Para asociarle un texto a una palabra, se hace lo siguiente:


Si a la palabra Recta le quiero asociar un texto que se encuentra en otra seccin del
escrito:
1.- Primero la marco con doble subrayado.
Recta

2.- Junto a la palabra le escribo el identificador del texto al cual quiero asociarlo.
RectaIr_Recta

3.- La palabra Ir_Recta la Marco con lnea oculta.

Desarrollo de Herramientas Grfias

236

4.- El texto que est asociado debe estar en otra hoja u otras hojas pero debe tener el
siguiente encabezado.
#$K+RECTA
y en el pie de pgina la distribucin sera la siguiente:
# Ir_Recta
$ Ir_Recta
K Ir_Recta
+ BHELP:110
Donde el Nmero 110 indica que tiene un tema predecesor marcado por el nmero 100,
y posiblemente este tenga un predecesor con el nmero 10.
Este texto est grabado en un formato RTF.
5.- Con el archivo almacenado con el formato rtf procedemos a la compilacin de este
archivo para generar el archivo de ayuda.
6.- Abrimos una aplicacin en C++ Builder.
7.- De la barra de men principal seleccionamos. Tools Hcw.exe

Desarrollo de Herramientas Grfias

FIG. 4.7.1

237

Compilador para la elaboracin del hipertexto.

Si no se encuentra en este sub men la utilidad Hcw.exe,


Seleccione del mismo men tools Configure Tools y obtendr la siguiente ventana de
dilogo:

Desarrollo de Herramientas Grfias

FIG.

238

4.7.2

Configurado de Herramientas.

En ella podr aadir la utilidad Hcw.exe marcndola y oprimiendo el botn Add.


8.- Ya seleccionado el Hcw.exe obtendr la siguiente ventana:

FIG.

4.7.3

Compilador de ayudas.

Desarrollo de Herramientas Grfias

239

9.- Seleccione de ella en el men File New y obtendr otra ventana.

FIG. 4.7.4

Seleccin de tipo de proyecto.

10.- En ella seleccione Help Project y presione el botn OK.


11.- Obtendr otra ventana en la que dar nombre a la nueva aplicacin de ayuda.

FIG.

4.7.5

Dar nombre a un proyecto .HLP.

12.- Cuando le de nombre aparecer la siguiente ventana:

Desarrollo de Herramientas Grfias

240

FIG. 4.7.6

Integracin de componentes.

13.- En la aadir el o los archivos que tenga para la elaboracin de la ayuda.


(Archivos *.rtf), la ruta donde se encuentren las imgenes que valla a llevar la aplicacin.
Los mapas o las bases de datos. Todo esto segn el botn.
14.- Solo pondr un archivo rtf.

FIG.

Y se oprime el botn OK.

4.7.7

Aadir archivo RTF.

Desarrollo de Herramientas Grfias

241

15.- Oprima el botn Save and Compile.

FIG. 4.7.8

Lista de componentes integrados.

16.- y nos mostrar el resultado de la compilacin, si hay errores se tendrn que corregir.

FIG. 4.7.9

Resultado de la compilacin.

Desarrollo de Herramientas Grfias

17.- Si no hay errores se oprime el botn

FIG. 4.7.10

242

, y presentar otra ventana.

Visualizacin de la ayuda.

18.- Oprima el botn View Help. Y tendr la ejecucin de la aplicacin.

Desarrollo de Herramientas Grfias

FIG. 4.7.11

243

Archivo de ayuda final.

Desarrollo de Herramientas Grfias

FIG. 4.7.12

244

Ejemplo de una consulta en el archivo generado.

Ya tenemos un archivo ejecutable que nos muestra el hipertexto, este hipertexto lo


podemos aadir a un programa en C++ Builder de la siguiente manera:

Application->HelpFile = "DOCUMENTO.HLP";
Donde DOCUMENTO.HLP es el nombre del hipertexto ya generado despus de la
compilacin con el HCW.EXE

Desarrollo de Herramientas Grfias

245

Podemos colocarlo en la funcin que crea la forma de la siguiente manera:

FIG.

4.7.13

Liga en un programa C++ Builder.

Y el llamado particular es segn la opcin del men en la que se halla puesto:


Ejemplo:

FIG.

4.7.14

Llamadode un mdulo .hlp en un programa C++ Builder.

Desarrollo de Herramientas Grfias

FIG.

4.7.15

Opcion de men en el que es llamado un mdulo de hipertexto.

246

Desarrollo de Herramientas Grfias

FIG.

4.7.16

Opcion de men en el que es llamado un mdulo de hipertexto.

Esto es a grandes razgos la creacin de un hipertexto en C++ Builder.

247

Apndice
1

Apndice
1. GLOSARIO DE TERMINOS

ABSTRACCION

El acto o resultado de eliminar ciertas distinciones entre los


objetos, de modo que podamos observar los aspectos comunes.
El resultado del proceso de abstraccin es un concepto (o tipo
de objeto).

ABSTRACTO,
TIPO DE DATO
(TDA)

Un tipo de objeto que contiene la definicin de su estructura de


datos y las operaciones permitidas. Los TDA dan a los objetos
una interfaz pblica a travs de sus operaciones permitidas. Sin
embargo, las representaciones y mtodos de estas interfaces son
privadas. Tambin se conoce como tipo de objeto y se implanta
en lod LPOO como una clase.

ARGUMENTO

El sujeto, o variable independiente, de una funcin u operacin.


Cualquier objeto que sea valor de un parmetro. Cuando se
llena un argumento, se puede regresar el valor de una funcin, o
bien se pueden producir los resultados de una operacin.

ASOCIACION

Un medio para enlazar los tipos de objetos de manera


significativa. Dos de las principales formas de asociacin son la
relacin y la funcin.

ATRIBUTO

Una asociacin identificable entre un objeto y algun otro objeto


o conjunto de objetos. Cada atributo es una instancia de un tipo
atributo.

CAMBIO DE
ESTADO DE UN
OBJETO

Un cambio en la coleccin de todos los tipos de objetos que se


aplican a un objeto dado. Un cambio en el estado de un objeto.
(Es sinnimo de Evento),

CAMPO

Una implantacin de un tipo atributo. (Sinnimo de variable de


instancia.).

CARACTERISTICA

Un campo de una estructura de datos o una operacin permitida


en un tipo de dato abstracto. La estructura de datos y las
operaciones de un TDA son sus caractersticas.

CLASE

Una implantacin de un concepto o tipo de objeto. En los


lenguajes de programacin OO, los tipos de datos abstractos se
llaman clases. En matemticas, el significado de clase es similar

Apndice
2

al de conjunto. El significado de la definicin de la definicin


de clase en los LPOO surge de la definicin matemtica.
CONCEPTO

Una idea o nocin compartida que se aplica a siertas cosas (es


decir objetos) de nuestra conciencia. Una persona tiene un
concepto si comprende cuando se aplica ste y cundo no.
Tambien se le llama tipo de objeto.

CONJUNTO

La coleccin de todos los objetos a los que se aplica un tipo de


objeto. (Se utiliza indistintamente con extencin.)

CONSTRUCTOR

Un constructor es una funcin especial que es miembro de la


clase a la que pertenece y que se identifica por el mismo
nombre de la clase

DESTRUCTOR

Los destructores entran en la misma categora que los


constructores, se utilizan para realizar ciertas operaciones que
son necesariascuando ya no se utiliza un objeto.

DIAGRAMA

Una representacin grfica. Una representacin formal se llama


esquema.

DOMINIO

La coleccin de todos los objetos asociados mediante una


funcin. Varios enfoques del anlisis utilizan la palabra dominio
en forma diferente. Por ejemplo, ciertos modeladores de
relaciones entre entes se refieren al dominio como un tipo
atributo. El dominio se tambien se refiere a una esfera
delimitada de conocimiento a actividad.

ENCAPSULADO

Envoltura protectora que oculta los detalles de implantacin de


un objeto, haciendo que el acceso a los datos slo se realice
mediante operaciones colocadas ah en forma intencional. Se
suele usar indistintamente con ocultamiento de la informacin.

ESQUEMA

Una representacin diagramtica formal. Un diagrama se


considera formal cuando consta de un conjunto de smbolos
definidos, junto con un conjunto de reglas que gobiernan la
formacin de los diagramas que utilizan estos smbolos.
Adems, el soporte de este esquema debe ser un medio de
manejo de los smbolos para razonar y transformar sus
construcciones en otras.

EVENTO

Un cambio notable en el estado de un objeto. La conclusin con


exito de llamado de una operacin. As, una operacin llamada
es el potencial es el potencial para una cambio de estado; su
cambio de estado real es su evento. El cambio se establece en

Apndice
3

trminos de un preestado de un evento y un postestado de un


evento.

FUNCION

Un proceso de asociacin que, dado un objeto de un conjunto,


regresa un conjunto de objetos en el mismo o diferente
conjunto. Las funciones son operaciones que no cambian el
estado de un objeto. Una funcin que siempre regresa un
conjunto que contiene un nico objeto se llama univaluada.

GENERALIZACION

El acto o resultado de distinguir un tipo de objeto como ms


general, o inclusive, que otro. La especificacin de un
supertipo. Por ejemplo, persona es una generalizacin de
hombre. La generalizacin no es una forma de abstraccin; es
una comparacin entre las distintas abstracciones. La
generalizacin define una relacin entre dos tipos de objetos;
uno que es ms general que otro.

HERENCIA

La herencia de clase es una implantacin de generalizacin.


Permite que todas las caractersticas de una clase de un LPOO
estn disponibles o sean reutilizables para sus subclases, como
si fueran las caractersticas de la subclase. La herencia de una
clase a un objeto permite que las instancias de una clase hereden
valores predefinidos. La herencia de un objeto a otro, tambien
llamada delegacin, transfiere el estado de un objeto a otro.

INSTANCIA

Sinnimo de objeto.

INSTANCIACION

Creacin de un objeto.

LPOO

Lenguajes de programacin orientados a objetos.

METODO

Una especificacin de los pasos mediante los cuales se realiza


una operacin. Es un guin de la implantacin de una
operacin. Se pueden aplicar diferentes mtodos para realizar la
misma operacin.

OBJETO

Todo aquello a lo que se aplique un concpto o tipo de objeto;


una instancia de un concpto o tipo de objeto. En los LPOO, es
cualquier instancia de una clase.

OCULTAMIENTO
DE LA
INFORMACION

La nocin de ocultar la implantacin de un objeto, a la vez que


se permite una interfaz pblica por medio de sus operaciones
permitidas. Se utiliza a menudo en forma indistinta con
encapsulado.

Apndice
4

POO

Programacin orientada a objetos.

RAD

Desarrollo de aplicaciones rapidas.

RELACION

Un tipo de objeto cuya extencin es un conjunto de n-adas. Un


tipo de objeto con lugares. Por ejemplo EMPLEO es una
relacin entre los tipos de objetos PERSONA y
ORGANIZACION. EMPLEO es una relacin de dos lugares.

SUBCLASE

Una clase que es un subtipo de una o mas clases (llamadas


superclases). Como tal, hereda todas las caractersticas de sus
superclases (ver Herencia). En otras palabras, todas las
caractersticas de una clase son reutilizables por sus subclases.

SUPERCLASE

Una clase que es un supertipo de una o ms clases (llamadas


subclases). Como tal, es una clase cuyas caractersticas son
heredadas por sus subclases. En otras palabras, todas las
caractersticas de una superclase son reutilizables por las clases
que son subtipos suyos.

VARIABLE DE
INSTANCIA

Vase campo.

Apndice
5

2. Cdigo Fuente
//------------------------------------------------------------------------------------------------------------PROGRAMA: PUNTO.CPP
OBJETIVO: Colocar puntos en el sistema coodenado cartesiano y desplegar su coordenada.
//--------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#pragma hdrstop
#include "Punto.h"
#pragma resource "*.dfm"
TForm1 *Form1;
/*-------------------------------------------------------------------------------------------------------------FUNCION : TForm1:
OBJETIVO: Crear una forma para una aplicacin.
//--------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->HelpFile ="Punto.HLP";
}
//---------------------------------------------------------------------------------------------------------------FUNCION : Limpiar1Click()
OBJETIVO: Limpiar el area visual.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Salir1Click()
OBJETIVO: Finalizar l;a ejecusin de un programa.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Salir1Click(TObject *Sender)
{
Close();
exit(1);
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormMouseDown()
OBJETIVO: Guarda la posicion en pixeles en que se produjo un clic con el mouse.
PARAMENTROS: *Sender: Un evento del mouse.
Button: Identificacin de cual boton del mouse fue oprimido.
Shift: Seleccin de tecla especial.
Int X: Posicin en X en pixeles en que se oprimi un botn del mouse.
Int Y: Posicin en Y en pixeles en que se oprimi un botn del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Canvas->MoveTo(X,Y);
Canvas->Pen->Color=clAqua;
Canvas->Ellipse(X,Y,X,Y);
// remarcado de un punto.

Apndice
6
Canvas->Ellipse(X,Y,X+1,Y+1);
Canvas->Ellipse(X,Y,X+2,Y+2);
Canvas->Ellipse(X,Y,X+3,Y+3);
Canvas->Ellipse(X,Y,X+4,Y+4);
old_x=X;
old_y=Y;
Pinta_Coordenada(old_x,old_y);
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Pinta_Coordenada()
OBJETIVO: Despliega en la pantalla la coordenada (numricas) del pixel en que se hizo un clic.
PARAMENTROS: int A: Posicin en X del sistema coordenado.
int B: Posicin en Y del sistema coordenado.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Pinta_Coordenada(int A,int B)
{
int W=15;
float X1,Y1;
X1=(float(A-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-B)/30.0);
Canvas->Pen->Style=psDashDot;//InsideFrame;//
Canvas->Pen->Color=clFuchsia;
LINEA(A,B,A,(ClientHeight/2));
LINEA(A,B,(ClientWidth/2),B);
Canvas->Pen->Color=clWhite;
sprintf(text,"(%.1f ,%.1f )",X1,Y1);
sign =(B>(ClientHeight/2)+1 ? 1 : -1 );
Canvas->TextOut(A+(W*sign),B+(W*sign),text);
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Ejes()
OBJETIVO: Dibuja los ejes y sus graduaciones.
PARAMENTROS: Ninguno.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Ejes()
{
int i,j,k;
int Ex=30;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(ClientWidth/2,0,ClientWidth/2,ClientHeight);
LINEA(0,ClientHeight/2,ClientWidth,ClientHeight/2);
k=0;
for(i=1,j=0;i<=13,j<17;i++,j++)
{
LINEA((ClientWidth/2)+1,(ClientHeight/2)+k,(ClientWidth/2)+5,(ClientHeight/2)+k);
LINEA((ClientWidth/2)+1,(ClientHeight/2)-k,(ClientWidth/2)+5,(ClientHeight/2)-k);
LINEA((ClientWidth/2)+k,(ClientHeight/2)+1,(ClientWidth/2)+k,(ClientHeight/2)+5);
LINEA((ClientWidth/2)-k,(ClientHeight/2)+1,(ClientWidth/2)-k,(ClientHeight/2)+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clWhite;
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)-30)-k,i);
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
Canvas->TextOut((ClientWidth/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((ClientWidth/2)-k,(ClientHeight/2)+5,-j);

Apndice
7
k+=Ex;
}
for(i=2;i<ClientWidth;i+=30)
for(j=0;j<ClientHeight;j+=30)
{
Canvas->Pen->Color=clTeal;
LINEA(i,j,i,j);
LINEA(i,j,i+1,j+1);
LINEA(i,j,i-1,j-1);
}
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormPaint()
OBJETIVO: Repinta la pantalla despus de realizado algn movimiento en la ventana.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormResize()
OBJETIVO: Escala la ventana visual.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Button1Click()
OBJETIVO: Ocultar una ventana de dilogo.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Visible=false;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : LINEA()
OBJETIVO: Pinta un segmento de linea de una coordenada inicial a una coordenada final.
PARAMENTROS: int P1: Coordenada inicial X.
int P2: Coordenada inicial Y.
int P3: Coordenada final X.
int P4: Coordenada final Y.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::LINEA(int P1,int P2,int P3,int P4)
{
Canvas->MoveTo(P1,P2);
Canvas->LineTo(P3,P4);
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Button2Click()
OBJETIVO: Ocultar una ventana de dilogo.
PARAMENTROS: *Sender: Un evento del mouse.
//-----------------------------------------------------------------------------------------------------------------

Apndice
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel2->Visible=false;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormMouseMove ()
OBJETIVO: Rastrear el movimiento del mouse.
PARAMENTROS: *Sender: Un evento del mouse.
Shift: Checa si se activ alguna tecla de funcin.
Int X: Posicin actual en la que se va moviendo el mouse en X.
Int Y: Posicin actual en la que se va moviendo el mouse en Y.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
sprintf(text,"
",X1,Y1);
Canvas->TextOut(5,5,text);
Canvas->TextOut(0,0,text);
Canvas->TextOut(5,10,text);
Canvas->Font->Color=clAqua;
sprintf(text,"X= %2.1f Y= %2.1f ",X1,Y1);
Canvas->TextOut(5,5,text);
Canvas->Font->Color=clWhite;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Uso1Click()
OBJETIVO: Hacer visible una ventana de dilogo.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Uso1Click(TObject *Sender)
{
Panel1->Visible=true;
Invalidate();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Acercade2Click()
OBJETIVO: Hacer visible una ventana de dilogo.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Acercade2Click(TObject *Sender)
{
Panel2->Visible=true;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : BaseTeorica1Click()
OBJETIVO: Abre un archivo de ayuda.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::BaseTeorica1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS, 0);
Invalidate();
}

Apndice
9
//---------------------------------------------------------------------------

SU ARCHIVO DE CABECERA.
//---------------------------------------------------------------------------------------------------------------ARCHIVO: PUNTO.H
//---------------------------------------------------------------------------------------------------------------#ifndef PuntoH
#define PuntoH
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Menus.hpp>
#include <vcl\ExtCtrls.hpp>
//-----------------------------------------------------------------------------------------------------------------class TForm1 : public TForm
{__published:
// IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *Opciones1;
TMenuItem *Limpiar1;
TMenuItem *Salir1;
TPanel *Panel1;
TMemo *Memo1;
TButton *Button1;
TMenuItem *Ayuda1;
TPanel *Panel2;
TImage *Image1;
TButton *Button2;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TMenuItem *Uso1;
TMenuItem *Acercade2;
TMenuItem *BaseTeorica1;
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall Uso1Click(TObject *Sender);
void __fastcall Acercade2Click(TObject *Sender);
void __fastcall BaseTeorica1Click(TObject *Sender);
private: // User declarations
public:
// User declarations
void __fastcall Ejes();
void __fastcall Pinta_Coordenada(int X,int Y);
void __fastcall LINEA(int P1,int P2,int P3,int P4);
char text[70];
int old_x,old_y,sign;

Apndice
10
__fastcall TForm1(TComponent* Owner);
};
extern TForm1 *Form1;
#endif
//------------------------------------------------------------------------------------------------------------PROGRAMA: XOTRA.CPP
OBJETIVO: Trazar un segmento de recta y calcular la longitud de ese segmento en funcin de las
coordenadas de los puntos de los extremos.
//--------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#pragma hdrstop
#include "Xotra.h"
#include "math.h"
#pragma resource "*.dfm"
TForm1 *Form1;
/*-------------------------------------------------------------------------------------------------------------FUNCION : TForm1:
OBJETIVO: Crear una forma para una aplicacin.
//--------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->HelpFile="Distanc.hlp";
z=true;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormPaint()
OBJETIVO: Repinta la pantalla despus de realizado algn movimiento en la ventana.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormResize()
OBJETIVO: Escala la ventana visual.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : FormMouseDown()
OBJETIVO: Guarda la posicion en pixeles en que se produjo un clic con el mouse.
PARAMENTROS: *Sender: Un evento del mouse.
Button: Identificacin de cual boton del mouse fue oprimido.
Shift: Seleccin de tecla especial.
Int X: Posicin en X en pixeles en que se oprimi un botn del mouse.
Int Y: Posicin en Y en pixeles en que se oprimi un botn del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)

Apndice
11
{

Obten_Puntos(X,Y);
Panel1->Visible=false;
Panel2->Visible=false;}

//----------------------------------------------------------------------------------------------------------------FUNCION : DIBUJA()
OBJETIVO: Calcula y pinta las coordenadas de los 2 puntos que comprenden la recta
La distancia entre ellos y su pendiente.
PARAMENTROS: Int P1: Coordenada inicial en X.
Int P2: Coordenada inicial en Y.
Int P3: Coordenada final en X.
Int P4: Coordenada final en Y.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::DIBUJA(int P1,int P2, int P3,int P4)
{
int W=15;
X1=(float(P1-(ClientWidth/2))/30);
Y1=(float((ClientHeight/2)-P2)/30);
X2=(float(P3-(ClientWidth/2))/30);
Y2=(float((ClientHeight/2)-P4)/30);
if(X1==X2)
{
M=0;
// Pendiente indeterminada aunque no se deba la dejo en cero
}
else
// Clculo de la pendiente
{M=((Y2-Y1)/(X2-X1)); }
// Posicin de los puntos de la recta
if(M>=0) sign=(X1<X2 ? 1.0 : -1.0);
else
if(M<0) sign=(X1<X2 ? -1.0 : 1.0);
sprintf(text,"(%.1f ,%.1f )",X1,Y1);
Canvas->TextOut(P1-W,P2+(W*sign),text);
Canvas->Font->Color=clLime;
sprintf(text,"(%.1f ,%.1f )",X2,Y2);
Canvas->TextOut(P3-(W),P4-(W*sign),text);
if(Tag==1){
Formula();
Calcula();
Tag=0;
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Calcula()
OBJETIVO: Realiza el clculo de la distancia segun los puntos obtenidos en la funcin MouseDown y que
son descifrados por la funcin dibuja.
PARAMENTROS: Ninguno.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Calcula()
{float D,VX,VY;
Canvas->Font->Size=15;
Canvas->Pen->Color=clAqua;
LINEA(0,650,ClientWidth,650);

Apndice
12
LINEA(0,651,ClientWidth,651);
VX=pow(fabs(X2-X1),2);
VY=pow(fabs(Y2-Y1),2);
D=sqrt(VX + VY);

Canvas->Font->Color=clFuchsia;sprintf(text,"distancia = (
) +(
) "); //
Mascara de la frmula
Canvas->TextOut(205,670,text);
Canvas->Font->Color=clGreen;
sprintf(text,"(%.1f)",Y2); // Y2
Canvas->TextOut(317,670,text);
sprintf(text,"(%.1f)",X2); // X2
Canvas->TextOut(484,670,text);
Canvas->Font->Color=clWhite;
sprintf(text,"(%.1f)",Y1); // Y1
Canvas->TextOut(391,670,text);
sprintf(text,"(%.1f)",X1);
// X1
Canvas->TextOut(550,670,text);
Canvas->Font->Color=clAqua;
sprintf(text," distancia = %.1f",D);
Canvas->TextOut(650,670,text);
Canvas->Font->Color=clFuchsia;
Canvas->Font->Size=5;
sprintf(text,"2"); // Y2
Canvas->TextOut(448,668,text);
Canvas->TextOut(605,668,text);
Canvas->Pen->Color=clFuchsia;// dibuja la raiz cuadrada
LINEA(310,690,310,662);
LINEA(310,690,302,664);
LINEA(310,662,640,662);
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Ejes()
OBJETIVO: Dibuja los ejes y sus graduaciones.
PARAMENTROS: Ninguno.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Ejes()
{ int i,j,k;
ClientWidth=ClientWidth;
ClientHeight=ClientHeight;
int Ex=30;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(ClientWidth/2,0,ClientWidth/2,ClientHeight-60); // Eje Y
LINEA(0,ClientHeight/2,ClientWidth,ClientHeight/2);// Eje X
k=0;
for(i=1,j=0;i<=10,j<17;i++,j++)
{LINEA(ClientWidth/2+1,ClientHeight/2+k,ClientWidth/2+5,ClientHeight/2+k);// Graduacin en Y
LINEA(ClientWidth/2+1,ClientHeight/2-k,ClientWidth/2+5,ClientHeight/2-k);
LINEA(ClientWidth/2+k,ClientHeight/2+1,ClientWidth/2+k,ClientHeight/2+5);// Graduacin en X
LINEA(ClientWidth/2-k,ClientHeight/2+1,ClientWidth/2-k,ClientHeight/2+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clWhite;

Apndice
13
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)-30)-k,i);
if(i<10)
{
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
}
Canvas->TextOut((ClientWidth/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((ClientWidth/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;

}
for(i=0;i<1024;i+=30)
for(j=0;j<721;j+=30)
{

Canvas->Pen->Color=clTeal;
LINEA(i,j,i,j);
LINEA(i,j,i+1,j+1);
}
}
//---------------------------------------------------------------------------------------------------------------FUNCION : Limpiar1Click()
OBJETIVO: Limpiar el area visual.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();
}
//----------------------------------------------------------------------------------------------------------------FUNCION : Salir1Click()
OBJETIVO: Finalizar l;a ejecusin de un programa.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Salir1Click(TObject *)
{
Close();
exit(1);
}
//------------------------------------------------------------------------------------------------------------------FUNCION: Frmula().
OBJETIVO: Desplegar la formula de la recta en la pantalla.
PARAMETROS: Ninguno.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Formula()
{
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clFuchsia;
Canvas->Font->Size=7;
sprintf(text,"d =
(
)^2 + (
)^2 ");
Canvas->TextOut(15,675,text);
Canvas->Font->Color=clGreen;

Apndice
14
sprintf(text,"Y2");
// Valor de Y2
Canvas->TextOut(60,675,text);
Canvas->Font->Color=clWhite;
sprintf(text,"Y1");
// Valor de Y1
Canvas->TextOut(83,675,text);
Canvas->Font->Color=clGreen;
sprintf(text,"X2");
// Valor de X2
Canvas->TextOut(133,675,text);
Canvas->Font->Color=clWhite;
sprintf(text,"X1");
// Valor de X1

Canvas->TextOut(158,675,text);
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clFuchsia;
LINEA(40,685,40,667); //
Dibujo de la raiz
LINEA(40,685,35,669);
LINEA(40,667,205,667);
}
//------------------------------------------------------------------------------------------------------------------FUNCION: Button1Click().
OBJETIVO: Ocultar una ventana de dilogo.
PARAMETROS: Ninguno.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------FUNCION: LINEA().
OBJETIVO: Traza un segmento de linea recta.
PARAMETROS: . int Xi: Posicin inicial en X1.
int Yi: Posicin inicial en Y1.
int Xf: Posicin final en X2.
int Yf: Posicin fianl en Y2.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf)
{
Canvas->MoveTo(Xi,Yi);
Canvas->LineTo(Xf,Yf);
}
//------------------------------------------------------------------------------------------------------------------FUNCION: Obten_Puntos().
OBJETIVO: Guarda la posicin del punto X,Y de una coordenada del sistema coordenado.
PARAMETROS: int X: Posicion en X del punto en el sistema coordenado.
Int Y: Posicin en Y del punto en el sistema coordenado.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Obten_Puntos(int X,int Y)
{
Canvas->Font->Size=7;
Canvas->Pen->Color=clFuchsia;
if(z == true)
{
LINEA(X,Y,X,Y);
old_x = X;

Apndice
15
old_y = Y;
Canvas->Font->Color=clLime;
}
else
{
Canvas->Font->Color=clWhite;
Canvas->Pen->Color=clFuchsia;
LINEA(old_x,old_y,X,Y);
Tag++;
A=X;
B=Y;
DIBUJA(old_x,old_y,A,B);
}

z= (z==true ? false : true);


}
//------------------------------------------------------------------------------------------------------------------FUNCION: Acercade1Click().
OBJETIVO: Hace visible una ventana de dilogo.
PARAMETROS: *Sender: un evento del mouse. (Clic)
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Acercade1Click(TObject *Sender)
{
Panel2->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------FUNCION: Button2Click().
OBJETIVO: Ocultar una ventana de dilogo.
PARAMETROS: Ninguno.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel2->Visible=false;
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------FUNCION: FormMouseMove().
OBJETIVO: Rastrear los movimientos del mouse.
PARAMETROS: *Sender: Un evento del mouse (Movimiento).
Shift: Checa si alguna tecla de funcion fue oprimida.
Int X, int Y: Posicin del mouse.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
sprintf(text,"
",X1,Y1);
Canvas->TextOut(ClientWidth-130,ClientHeight-40,text);
Canvas->TextOut(ClientWidth-130,ClientHeight-50,text);
Canvas->TextOut(ClientWidth-130,ClientHeight-60,text);
Canvas->Font->Color=clAqua;
Canvas->Font->Size=12;

Apndice
16
sprintf(text,"X= %2.1f Y= %2.1f ",X1,Y1);
Canvas->TextOut(ClientWidth-150,ClientHeight-50,text);
Canvas->Font->Color=clWhite;
}
//------------------------------------------------------------------------------------------------------------------FUNCION: BaseTeorica1Click().
OBJETIVO: abre un archivo de hipertexto.
PARAMETROS: *Sender: Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::BaseTeorica1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();
}
//---------------------------------------------------------------------------

SU ARCHIVO DE CABECERA
//----------------------------------------------------------------------------------------------------------------------------ARCHIVO: XOTRA.H
//----------------------------------------------------------------------------------------------------------------------------#ifndef XotraH
#define XotraH
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Menus.hpp>
#include <vcl\ExtCtrls.hpp>
class TForm1 : public TForm
{
__published:
// IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *Limpiar1;
TMenuItem *Salir1;
TMenuItem *Menu1;
TPanel *Panel1;
TMemo *Memo1;
TButton *Button1;
TMenuItem *Acercade1;
TPanel *Panel2;
TButton *Button2;
TImage *Image1;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TMenuItem *BaseTeorica1;

Apndice
17
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Acercade1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall BaseTeorica1Click(TObject *Sender);
private: // User declarations
public:
// User declarations
void __fastcall Ejes();
void __fastcall DIBUJA(int P1,int P2, int P3,int P4);
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf);
void __fastcall Calcula();
void __fastcall Formula();
void __fastcall Obten_Puntos(int X,int Y);

float X1,Y1,X2,Y2,old_x,old_y,A,B,sign,M,D;
char text[100];
bool z;
__fastcall TForm1(TComponent* Owner);
};
extern TForm1 *Form1;
#endif

//------------------------------------------------------------------------------------------------------------------PROGRAMA: Pendient.h
OBJETIVO: Colocar puntos en el sistema coodenado cartesiano y desplegar sus coordenadas.
Calcular su pendiente y desplegar el valor.
//------------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#pragma hdrstop
#include "Pendient.h"
#include "math.h"
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------------------------------------------------FUNCION: TForm1:
OBJETIVO: Crear una forma para la aplicacion.
//--------------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->HelpFile="Pend.hlp";
z=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: FormPaint().
OBJETIVO: Redibuja la aplicacin cuando de realiza algun borrado o escalado en la ventana visual.

Apndice
18
PARAMETROS: *Sender.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: FormResize().
OBJETIVO: Escla la ventana visual.
PARAMETROS: *Sender.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: FormMouseDown().
OBJETIVO: Guarda la posicin de las coordenadas del mouse cuando uno de sus botones es oprimido.
PARAMETROS: *Sender.
Button: Guarda cual de los botones del mouse fue oprimido.
Shift: Checa si alguna tecla de funcion es oprimida.
Int X, Y: Posicion en pixeles en que se produjo un clic.

//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,


TShiftState Shift, int X, int Y)
{
Obten_Puntos(X,Y);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: FormResize().
OBJETIVO: Calcula y pinta las coordenadas de los 2 puntos que comprenden la recta
La distancia entre ellos y su pendiente
PARAMETROS: *Sender.
Int P1, P2, coordenadas del punto inicial.
Int P3, P4 Coordenadas del punto final.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::DIBUJA(int P1,int P2, int P3,int P4)
{
int W=15;
X1=(float(P1-(ClientWidth/2))/30);
Y1=(float((ClientHeight/2)-P2)/30);
X2=(float(P3-(ClientWidth/2))/30);
Y2=(float((ClientHeight/2)-P4)/30);
if(X1==X2)
{
Panel3->Visible=true;
// Aviso sobre pendiente indeterminada.
M=0;
}
else
// Clculo de la pendiente.
{M=((Y2-Y1)/(X2-X1)); }
// Posicin de los puntos de la recta
if(M>=0) sign=(X1<X2 ? 1.0 : -1.0);
else
if(M<0) sign=(X1<X2 ? -1.0 : 1.0);

Apndice
19
sprintf(text,"(%.1f ,%.1f )",X1,Y1);
Canvas->TextOut(P1-W,P2+(W*sign),text);
Canvas->Font->Color=clLime;
sprintf(text,"(%.1f ,%.1f )",X2,Y2);
Canvas->TextOut(P3-(W),P4-(W*sign),text);
if(Tag==1){
Calcula();
Tag=0;
}
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Calcula ().
OBJETIVO: Realiza el clculo de la distancia segun los puntos obtenidos en la funcin Mouse Down. Y
que son descifrados por la funcin dibuja.
PARAMETROS: Ninguno.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Calcula()
{
float D,VX,VY;
Canvas->Font->Size=12;
Canvas->Pen->Color=clAqua;
LINEA(0,ClientHeight-70,ClientWidth,ClientHeight-70);
LINEA(0,ClientHeight-69,ClientWidth,ClientHeight-69);
VX=pow(fabs(X2-X1),2);
VY=pow(fabs(Y2-Y1),2);

D=sqrt(VX + VY);
sprintf(text,"
");
Canvas->TextOut((ClientWidth/2)+100,ClientHeight-30,text);
Canvas->TextOut((ClientWidth/2)+100,ClientHeight-60,text);
Canvas->Font->Color=clFuchsia;
sprintf(text,"distancia = (
) +(
) "); // Mascara de la frmula
Canvas->TextOut(ClientWidth/60,ClientHeight-50,text);
Canvas->Font->Color=clLime;
Canvas->Font->Size=10;
sprintf(text,"(%.1f)",Y2);
// Y2
Canvas->TextOut(ClientWidth/8-10,ClientHeight-50,text);
sprintf(text,"(%.1f)",X2);
// X2
Canvas->TextOut(ClientWidth/8+40,ClientHeight-50,text);
Canvas->Font->Color=clWhite;
sprintf(text,"(%.1f)",Y1);
// Y1
Canvas->TextOut(ClientWidth/4-10,ClientHeight-50,text);
sprintf(text,"(%.1f)",X1);
// X1
Canvas->TextOut(ClientWidth/4+45,ClientHeight-50,text);
sprintf(text,"
");
Canvas->TextOut(ClientWidth/2-140,ClientHeight-50,text);
Canvas->Font->Size=12;
Canvas->Font->Color=clAqua;
sprintf(text," = %.1f",D);
Canvas->TextOut(ClientWidth/2-140,ClientHeight-50,text);
Canvas->Font->Color=clFuchsia;
Canvas->Font->Size=5;
sprintf(text,"2");
// Y2
Canvas->TextOut((ClientWidth/4)-40,ClientHeight-55,text);

Apndice
20
Canvas->TextOut((ClientWidth/3)+5,ClientHeight-55,text);
Canvas->Pen->Color=clFuchsia; // dibuja la raiz cuadrada
LINEA(ClientWidth/10,ClientHeight-30,ClientWidth/10,ClientHeight-60);
LINEA(ClientWidth/10,ClientHeight-30,ClientWidth/10-8,ClientHeight-62);
LINEA(ClientWidth/10,ClientHeight-60,ClientWidth/3+30,ClientHeight-60);
Canvas->Font->Color=clFuchsia;
sprintf(text,"PENDIENTE = -------------------- = ----------------------------- =");
Canvas->TextOut(ClientWidth/2+5,ClientHeight-50,text);
Canvas->Font->Size=12;
sprintf(text," - ");
Canvas->TextOut(ClientWidth/2+105,ClientHeight-65,text);
Canvas->TextOut(ClientWidth/2+180,ClientHeight-65,text);
sprintf(text," - ");
Canvas->TextOut(ClientWidth/2+105,ClientHeight-35,text);
Canvas->TextOut(ClientWidth/2+180,ClientHeight-35,text);
Canvas->Font->Color=clLime;
Canvas->Font->Size=7;
sprintf(text,"Y2");
Canvas->TextOut(ClientWidth/2+90,ClientHeight-60, text);
sprintf(text,"X2");
Canvas->TextOut(ClientWidth/2+90,ClientHeight-35,text);
Canvas->Font->Color=clWhite;
sprintf(text,"Y1");
Canvas->TextOut(ClientWidth/2+130,ClientHeight-60,text);
sprintf(text,"X1");
Canvas->TextOut(ClientWidth/2+130,ClientHeight-35,text);
Canvas->Font->Color=clLime;
Canvas->Font->Size=10;

sprintf(text,"(%.1f)",Y2);
Canvas->TextOut(ClientWidth/2+155,ClientHeight-63,text);
sprintf(text,"(%.1f)",X2);
Canvas->TextOut(ClientWidth/2+155,ClientHeight-33,text);
Canvas->Font->Color=clWhite;
sprintf(text,"(%.1f)",Y1);
Canvas->TextOut(ClientWidth/2+205,ClientHeight-63,text);
sprintf(text,"(%.1f)",X1);
Canvas->TextOut(ClientWidth/2+205,ClientHeight-33,text);
Canvas->Font->Size=12;
sprintf(text,"
");
Canvas->TextOut(ClientWidth/2+250,ClientHeight-50,text);
Canvas->Font->Color=clAqua;
sprintf(text,"%.2f",M);
Canvas->TextOut(ClientWidth/2+250,ClientHeight-50,text);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Ejes().
OBJETIVO: Pinta los ejes y sus graduaciones.
PARAMETROS: *Sender.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Ejes()
{
int k;
int Ex=30;

Apndice
21
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(ClientWidth/2,0,ClientWidth/2,ClientHeight); // Eje Y
LINEA(0,ClientHeight/2,ClientWidth,ClientHeight/2);// Eje X
k=0;
for(int i=1,j=0;i<=10,j<17;i++,j++)
{
LINEA(ClientWidth/2+1,ClientHeight/2+k,ClientWidth/2+5,ClientHeight/2+k);// Graduacin en Y
LINEA(ClientWidth/2+1,ClientHeight/2-k,ClientWidth/2+5,ClientHeight/2-k);
LINEA(ClientWidth/2+k,ClientHeight/2+1,ClientWidth/2+k,ClientHeight/2+5);// Graduacin en X
LINEA(ClientWidth/2-k,ClientHeight/2+1,ClientWidth/2-k,ClientHeight/2+5);
Canvas->Font->Color=clWhite;
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)-30)-k,i);
if(i<10){
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
}
Canvas->TextOut((ClientWidth/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((ClientWidth/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;
}
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Limpiar().
OBJETIVO: Limpia la ventana visual.
PARAMETROS: *Sender : Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();

//-------------------------------------------------------------------------------------------------------------------------------FUNCION : Salir1Click()
OBJETIVO: Finalizar l;a ejecusin de un programa.
PARAMENTROS: *Sender: Un evento del mouse.
//----------------------------------------------------------------------------------------------------------------- ------------void __fastcall TForm1::Salir1Click(TObject *)
{
Close();
exit(1);
}
//-------------------------------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------------------------------FUNCION: Button1Click().
OBJETIVO: Oculta una ventana de dilogo.
PARAMETROS: *Sender. Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Visible=false;
Invalidate();

Apndice
22
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: LINEA().
OBJETIVO: Traza un segmento de linea.
PARAMETROS: int Xi,Yi: Coordenadas del punto inicial.
Int Xf,Yf: Coordenadas del punto final a trazar la recta.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf)
{
Canvas->MoveTo(Xi,Yi);
Canvas->LineTo(Xf,Yf);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Obten_Puntos().
OBJETIVO: Guarda los puntos en que fue dado un clic con el mouse.
PARAMETROS: int X,Y: Coordenadas del punto en el que se hizo un click.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Obten_Puntos(int X,int Y)
{
Canvas->Font->Size=7;
Canvas->Pen->Color=clFuchsia;
if(z == true)
{
Canvas->Pen->Color=clWhite;
Panel2->Visible=false;
LINEA(X,Y,X,Y);
old_x = X;
old_y = Y;
Canvas->Font->Color=clLime;
}
else
{

Canvas->Font->Color=clWhite;
Canvas->Pen->Color=clTeal;
LINEA(old_x,old_y,X,Y);
Tag++;
A=X;
B=Y;
DIBUJA(old_x,old_y,A,B);
}
z= (z==true ? false : true);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: cClick().
OBJETIVO: Oculta una ventana de dilogo.
PARAMETROS: *Sender : Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::cClick(TObject *Sender)
{
Panel3->Visible=false;
Invalidate();
}
//-------------------------------------------------------------------------------------------------------------------------

Apndice
23
FUNCION: Button2Click().
OBJETIVO: Oculta una ventana de dilogo.
PARAMETROS: *Sender : Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel4->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Ayuda1Click().
OBJETIVO: Hace visible una ventana de dilogo.
PARAMETROS: *Sender : Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Ayuda1Click(TObject *Sender)
{
Panel1->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: aCercadeClick().
OBJETIVO: Hace visible una ventana de dilogo.
PARAMETROS: *Sender : Un evento del mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::aCercade1Click(TObject *Sender)
{
Panel4->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: FormMouseMove().
OBJETIVO: Rastrea la posici en coordenadas de pixeles por las que va pasando el mouse.
PARAMETROS: *Sender : Un evento del mouse. (Movimiento)
Shift : Checa si una tecla de funcin fue presionada.
Int X,Y posicion en pixeles en donde va recorriendo el mouse.
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X,int Y)
{

float X1,Y1;
X1=(float(X-(ClientWidth/2))/30.0);
Y1=(float((ClientHeight/2)-Y)/30.0);
sprintf(text,"
",X1,Y1);
Canvas->TextOut(820,5,text);
Canvas->TextOut(820,10,text);
Canvas->TextOut(820,15,text);
Canvas->Font->Size=12;
Canvas->Font->Color=clRed;
sprintf(text,"X= %2.1f Y= %2.1f ",X1,Y1);

Canvas->TextOut(820,10,text);
Canvas->Font->Color=clWhite;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: BaseTeorica1Click().

Apndice
24
OBJETIVO: Llama a un archivo de ayuda.
PARAMETROS: *Sender : Un evento del mouse (Clic).
//-------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::BaseTorica1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();
}
//---------------------------------------------------------------------------------------------------------------------------

Apndice
25
SU ARCHIVO DE CABECERA.
//------------------------------------------------------------------------------------------------------------------------ARCHIVO: PENDIENT.H
//-------------------------------------------------------------------------------------------------------------------------#ifndef PendientH
#define PendientH
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Menus.hpp>
#include <vcl\ExtCtrls.hpp>
class TForm1 : public TForm
{
__published:
// IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *Limpiar1;
TMenuItem *Salir1;
TMenuItem *Menu1;
TPanel *Panel1;
TMemo *Memo1;
TButton *Button1;
TPanel *Panel2;
TPanel *Panel3;
TMemo *Memo2;
TButton *boton2;
TPanel *Panel4;
TButton *Button2;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TImage *Image1;
TMenuItem *Ayuda1;
TMenuItem *aCercade1;
TMenuItem *BaseTorica1;
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall cClick(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Ayuda1Click(TObject *Sender);
void __fastcall aCercade1Click(TObject *Sender);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall BaseTorica1Click(TObject *Sender);
private: // User declarations
public:
// User declarations
void __fastcall Ejes();
void __fastcall DIBUJA(int P1,int P2, int P3,int P4);

Apndice
26
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf);

void __fastcall Calcula();

void __fastcall Obten_Puntos(int X,int Y);


float X1,Y1,X2,Y2,old_x,old_y,A,B,sign,M,D;
char text[100];
bool z;
__fastcall TForm1(TComponent* Owner);
};
extern TForm1 *Form1;
#endif

Apndice
27
//----------------------------------------------------------------------------------------------------------------------------ARCHIVO: NUEVPEND.H
OBJETIVO: Mostrar graficamente la pendiente y el clculo de la misma.
//----------------------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#pragma hdrstop
#include<conio.h>
#include "nuevpend.h"
#include "math.h"
#pragma resource "*.dfm"
TForm1 *Form1;
//----------------------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
Application->HelpFile="Pend.hlp";
z=true;
t=false;
w=false;
n=s=nn=ss=false;
}
//------------------------------------------------------------------------------------------------------------------------------FUNCION: FormPaint()
OBJETIVO: Repintar la aplicacin cuando ocurre un evento de borrado.
PARAMETROS: *Sender: Un evento del mouse.
//-----------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
}
//------------------------------------------------------------------------------------------------------------------------------FUNCION: FormResize()
OBJETIVO: Escalar la ventana visual.
PARAMETROS: *Sender: Un evento del mouse.
//-----------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------------FUNCION: FormMouseDown()
OBJETIVO: Guardar las coordenadas en que se realiz un clic con el mouse.
PARAMETROS: *Sender: Un evento del mouse.
Button : Que botn del mouse fue presionado.
Shift: Checa si se oprimi alguna tecla de funcin
Int X,Y Posicin en pixeles en la que se hizo el clic.
//-----------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,TShiftState Shift, int
X, int Y)
{
if(Tag<1)
Obten_Puntos(X,Y);
if(t==true)
Punto_A_mover(X,Y,1);
if(e==true)
Punto_A_mover(X,Y,2);

Apndice
28
}

/*------------------------------------------------------------------------------------------------------------------------------FUNCION : DIBUJA()
OBJETIVO :Calcula y pinta las coordenadas de los 2 puntos que comprenden la recta, la distancia entre
ellos y su pendiente
PARAMETROS : P1 -> Coordenada en X del primer punto del segmento de recta
P2 -> Coordenada en Y del primer punto del segmento de recta
P3 -> Coordenada en X del Segundo punto del segmento de recta
P4 -> Coordenada en Y del Segundo punto del segmento de recta
------------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::DIBUJA(int P1,int P2, int P3,int P4,int accion)
{
int W=15;
Canvas->Font->Size=7;
Canvas->Font->Color=clWhite;
X1=(float(P1-(ClientWidth/2))/30);
Y1=(float((ClientHeight/2)-P2)/30);
X2=(float(P3-(ClientWidth/2))/30);
Y2=(float((ClientHeight/2)-P4)/30);
if(X1==X2)
{
Panel3->Visible=true;
M=0;
}
else
{
M=((Y2-Y1)/(X2-X1));
}
if(M>=0) sign=(X1<X2 ? 1.0 : -1.0);
else if(M<0) sign=(X1<X2 ? -1.0 : 1.0);
if(accion==1)
{
Canvas->Font->Color=clWhite;
sprintf(text,"(%.1f ,%.1f )",X1,Y1);
Canvas->TextOut(P1-W,P2+(W*sign),text);
Canvas->Font->Color=clLime;
sprintf(text,"(%.1f ,%.1f )",X2,Y2);
Canvas->TextOut(P3-(W),P4-(W*sign),text);
if(Tag==1){ Calcula(X1,Y1,X2,Y2);
}
}
if(accion==0)
{
if(n==true)
{
Canvas->Font->Color=clBlack;
sprintf(text,"
");
Canvas->TextOut(P1-W-5,P2+(W*sign),text);
}
else if(s==true)
{
Canvas->Font->Color=clBlack;
sprintf(text,"
");

Apndice
29
Canvas->TextOut(P3-(W)-7,P4-(W*sign),text);
}
}
}

/*--------------------------------------------------------------------------------------------------------------------------FUNCION : Calcula()
OBJETIVO: Realiza el clculo de la distancia segn los puntos obtenidos en la funcin Mouse Down, y
que son descifrados por la funcin dibuja.
PARAMETROS : X1 -> Coordenada en X del primer punto del segmento de recta
Y1 -> Coordenada en Y del primer punto del segmento de recta
X2 -> Coordenada en X del Segundo punto del segmento de recta
Y2 -> Coordenada en Y del Segundo punto del segmento de recta
--------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::Calcula(float X1,float Y1,float X2,float Y2)
{
Pinta_pendiente(X1,Y1,X2,Y2);
}
/*------------------------------------------------------------------------------------------------------------------------FUNCIN : Ejes()
OBJETIVO: Dibuja los ejes y sus graduaciones
PARAMETROS: Ninguno.
-------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::Ejes()
{
int k;
int Ex=30;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(ClientWidth/2,0,ClientWidth/2,ClientHeight); // Eje Y
LINEA(0,ClientHeight/2,ClientWidth,ClientHeight/2);// Eje X
k=0;
for(int i=1,j=0;i<=10,j<17;i++,j++)
{
LINEA(ClientWidth/2+1,ClientHeight/2+k,ClientWidth/2+5,ClientHeight/2+k);// Graduacin en Y
LINEA(ClientWidth/2+1,ClientHeight/2-k,ClientWidth/2+5,ClientHeight/2-k);
LINEA(ClientWidth/2+k,ClientHeight/2+1,ClientWidth/2+k,ClientHeight/2+5);// Graduacin en X
LINEA(ClientWidth/2-k,ClientHeight/2+1,ClientWidth/2-k,ClientHeight/2+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clWhite;
Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)-30)-k,i);
if(i<10)
{ Canvas->TextOut((ClientWidth/2)+5,((ClientHeight/2)+30)+k,-i);
// Numeracin en Y
}
Canvas->TextOut((ClientWidth/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((ClientWidth/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;
}
}
/*---------------------------------------------------------------FUNCIN : Limpiar1Click()
OBJETIVO: Realiza un refresco de la pantalla limpiando el area de trabajo.
PARAMETROS : *Sender:
Regresa un evento del mouse.

Apndice
30
-----------------------------------------------------------------------------*/
void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();
Tag=0;
z=true;
t=false;

w=n=s=false;
}
/*---------------------------------------------------------------FUNCIN : Salir1Click()
OBJETIVO: Cierra todas las funciones y termina l;a aplicacin.
PARAMETROS : *Sender Regresa un evento del mouse.
-----------------------------------------------------------------------------*/
void __fastcall TForm1::Salir1Click(TObject *)
{
Close();
exit(1);
}
/*---------------------------------------------------------------FUNCIN : Button1Click()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS : *Sender
Regresa un evento del mouse.
-----------------------------------------------------------------------------*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Visible=false;
}
/*---------------------------------------------------------------FUNCIN : Linea()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS : Xi -> Coordenada en X del primer punto del segmento de recta
Yi -> Coordenada en Y del primer punto del segmento de recta
Xf -> Coordenada en X del Segundo punto del segmento de recta
Yf -> Coordenada en Y del Segundo punto del segmento de recta
-----------------------------------------------------------------------------*/
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf)
{
Canvas->MoveTo(Xi,Yi);
Canvas->LineTo(Xf,Yf);
}
/*-----------------------------------------------------------------------------FUNCION : Obten_Puntos()
OBJETIVO: Toma del mouse las coordenadas donde se dio un Click para pintar los puntos que formaran la
recta.
PARAMETROS : X ->
Coordenada en X del evento del mouse
Y ->
Coordenada en Y del evento del mouse
------------------------------------------------------------------------------*/
void __fastcall TForm1::Obten_Puntos(int X,int Y)
{
Canvas->Font->Size=7;
Canvas->Pen->Color=clFuchsia;
if(z == true)

Apndice
31
{ Canvas->Pen->Color=clWhite;
Panel2->Visible=false;
LINEA(X,Y,X,Y);
old_x = X;
old_y = Y;
Canvas->Font->Color=clLime;
}
else
{
Canvas->Font->Color=clWhite;

LINEA(old_x,old_y,X,Y);
Tag++;
Xi=X;
Yi=Y;
DIBUJA(old_x,old_y,Xi,Yi,1);
}
z=false;
}
/*--------------------------------------------------------------------------FUNCION : cClick()
OBJETIVO: Cierra una ventana de dialogo
PARAMETROS : *Sender
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::cClick(TObject *Sender)
{
Panel3->Visible=false;
}
/*--------------------------------------------------------------------------FUNCION : FormDblClick()
OBJETIVO: Soltar el extremo de la recta fijandolo en el punto donde se realiz el DblClick.
PARAMETROS : *Sender
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::FormDblClick(TObject *Sender)
{
z=true;
e=t=n=s=nn=ss=false;
}
/*--------------------------------------------------------------------------FUNCION : FormMouseMove()
OBJETIVO: Checa el movimiento del Mouse.
PARAMETROS : Sender
Un evento del Mouse.
Shift
Un evento del Mouse.
X
Coordenada en X donde se desplaza el Mouse
Y
Coordenada en Y donde se desplaza el Mouse
---------------------------------------------------------------------------*/
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
float t1,t2;
t1=(float(X-(ClientWidth/2))/30.0);
t2=(float((ClientHeight/2)-Y)/30.0);
sprintf(text,"
",X1,Y1);
Canvas->TextOut(120,660,text);

Apndice
32
Canvas->TextOut(120,665,text);
Canvas->TextOut(120,670,text);
Canvas->Font->Size=12;
Canvas->Font->Color=clAqua;
sprintf(text,"X= %2.1f Y= %2.1f ",t1,t2);
Canvas->TextOut(120,665,text);
Canvas->Font->Color=clWhite;
if(Tag>=1){
Xf=X;
Yf=Y;
if(w==true)
{ Mueve(Xf,Yf);}

if(ee==true)
{ Traslada(Xf,Yf);
}
}
}
/*--------------------------------------------------------------------------FUNCION : Mueve()
OBJETIVO: Cambia de posicion la recta segun las nuevas posiciones del Mouse
PARAMETROS : Xf
Coordenada en X donde se desplaza el Mouse
Yf
Coordenada en Y donde se desplaza el Mouse
---------------------------------------------------------------------------*/
void __fastcall TForm1::Mueve(int Xf,int Yf)
{
Ejes();
if(n==true){
// cuando el que se mueve es el primer punto
if((Yf<Yi)||(Xi>Xf)||(Xi>Xf))
{ Canvas->Font->Color=clBlack;
sprintf(text,"
");
Canvas->TextOut(Xi-15,Yi+(15*sign),text);
}
Canvas->Pen->Color=clBlack;
LINEA(old_x,old_y,Xi,Yi);
DIBUJA(old_x,old_y,Xi,Yi,0);
Canvas->Pen->Color=clFuchsia;
LINEA(Xf,Yf,Xi,Yi);
DIBUJA(Xf,Yf,Xi,Yi,1);
old_x=Xf;
old_y=Yf;
}
else if(s==true)
// cuando el que se mueve es el segundo punto.
{
borr_ant();
Canvas->Pen->Color=clBlack;
LINEA(old_x,old_y,Xi,Yi);
DIBUJA(old_x,old_y,Xi,Yi,0);
Canvas->Pen->Color=clFuchsia;
LINEA(old_x,old_y,Xf,Yf);
DIBUJA(old_x,old_y,Xf,Yf,1);
Xi=Xf;
Yi=Yf;

Apndice
33
}
}
/*--------------------------------------------------------------------------FUNCION : Rotar1Click()
OBJETIVO: Prende la Vandera para permitir rotar la recta.
PARAMETROS : *Sender
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Rotar1Click(TObject *Sender)
{
Panel4->Visible=true;
t=true;
}
/*--------------------------------------------------------------------------FUNCION : Traslada()
OBJETIVO: Tomando un punto mueve la recta segun la direccion que se la de al Mouse.
PARAMETROS:
Xf
Coordenada en X de la posicion por la que se desplaza el mouse

Yf
Coordenada en Y de la posicion por la que se desplaza el mouse
---------------------------------------------------------------------------*/
void __fastcall TForm1::Traslada(int Xf,int Yf)
{
int A,B;
Ejes();
if(nn==true)
// cuando el que se mueve es el primer punto.
{
borr_ant();
Canvas->Pen->Color=clBlack;
LINEA(old_x,old_y,Xi,Yi);
DIBUJA(old_x,old_y,Xi,Yi,0);
A=Xi-old_x;
B=Yi-old_y;
Canvas->Pen->Color=clFuchsia;
LINEA(Xf,Yf,Xf+A,Yf+B);
DIBUJA(Xf,Yf,Xf+A,Yf+B,1);
old_x=Xf;
old_y=Yf;
Xi=Xf+A;
Yi=Yf+B;
}
else if(ss==true)
// cuando el que se mueve es el segundo punto.
{
borr_ant();
Canvas->Pen->Color=clBlack;
LINEA(old_x,old_y,Xi,Yi);
DIBUJA(old_x,old_y,Xi,Yi,0);
A=old_x-Xi;
B=old_y-Yi;
Canvas->Pen->Color=clFuchsia;
LINEA(Xf+A,Yf+B,Xf,Yf);
DIBUJA(Xf+A,Yf+B,Xf,Yf,1);
old_x=Xf+A;
old_y=Yf+B;
Xi=Xf;
Yi=Yf;

Apndice
34
}
}
/*--------------------------------------------------------------------------FUNCION : Mover1Click()
OBJETIVO: Enciende la bandera que permite la traslacion de la recta.
PARAMETROS: * Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Mover1Click(TObject *Sender)
{
Panel4->Visible=true;
e=true;
}
/*--------------------------------------------------------------------------FUNCION : Punto_A_mover()
OBJETIVO: Selecciona uno de los extremos de la recta para realizar los eventos de traslacion y rotacion.
PARAMETROS : Tres enteros
X
Coordenada en X donde se encuentra el punto seleccionado.
Y Coordenada en Y donde se encuentra el punto seleccionado.
P Selecciona si es 1 rotacion o 2 traslacion.
---------------------------------------------------------------------------*/

void __fastcall TForm1::Punto_A_mover(int X,int Y,int P)


{
Panel4->Visible=false;
if( (X==old_x || X==old_x-1) || (X==old_x-2 || X==old_x-3) || (X==old_x-4 || X==old_x-5) ||
(X==old_x+1||X==old_x+2) || (X==old_x+3 || X==old_x+4) || (X==old_x+5)||
(Y==old_y || Y==old_y-1) || (X==old_x-2 || X==old_x-3) || (Y==old_y-4 || Y==old_y-5)||
(Y==old_y+1||X==old_x+2) || (X==old_x+3 || Y==old_y+4) || (Y==old_y+5) )
{
if(P==1)
{
w=true;
n=true;
Mueve(X,Y);
}
if(P==2)
{
ee=true;
nn=true;
Traslada(X,Y);
}
}
else if((X==Xi||X==Xi-1)||(X==Xi-2||X==Xi-3)||(X==Xi-4 ||X==Xi-5)||
(X==Xi+1||X==Xi+2)||(X==Xi+3||X==Xi+4)||(X==Xi+5)||
(Y==Yi||Y==Yi-1)||(Y==Yi-2||Y==Yi-3)||(Y==Yi-4||Y==Yi-5)||
(Y==Yi+1)||(Y==Yi+2||Y==Yi+3)||(Y==Yi+4||Y==Yi+5))
{
if(P==1)
{
w=true;
s=true;
Mueve(X,Y);
}
if(P==2)
{

Apndice
35
ee=true;
ss=true;
Traslada(X,Y);
}
}
}
/*--------------------------------------------------------------------------FUNCION : borr_ant()
OBJETIVO: Borra las coordenada pintadas.
PARAMETROS: Ninguno.
---------------------------------------------------------------------------*/
void __fastcall TForm1::borr_ant()
{
if(M<0)
{ Canvas->Font->Color=clBlack;
sprintf(text,"
");
Canvas->TextOut(old_x-15,old_y+(15*sign),text);
Canvas->TextOut(Xi-15,Yi-(15*sign),text);
}
if(M>=0)
{ Canvas->Font->Color=clBlack;
sprintf(text,"
");
Canvas->TextOut(old_x-15,old_y+(15*sign),text);
Canvas->TextOut(Xi-15,Yi-(15*sign),text);
}
}
/*--------------------------------------------------------------------------FUNCION: Button2Click()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS: *Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel4->Visible=false;
}
/*--------------------------------------------------------------------------FUNCION : Pinta_pendiente()
OBJETIVO: Calcula mediante las posiciones regresadas por el Mouse la pendiente del segmento de recta.
PARAMETROS :
4 Flotantes. X1
Coordenada en X del Primer punto.
Y1
Coordenada en Y del Primer punto.
X2
Coordenada en X del Segundo punto.
Y2
Coordenada en Y del Segundo punto.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Pinta_pendiente(float X1,float Y1,float X2,float Y2)
{
Canvas->Pen->Color=clAqua;
LINEA(0,ClientHeight-70,ClientWidth,ClientHeight-70);
LINEA(0,ClientHeight-69,ClientWidth,ClientHeight-69);
Canvas->Font->Size=7;
// despliega la pendiente
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clFuchsia;
sprintf(text,"PENDIENTE = -------------------- = ----------------------------- =");
Canvas->TextOut(ClientWidth/2+5,ClientHeight-50,text);
Canvas->Font->Size=12;
sprintf(text,"
");

Apndice
36
Canvas->TextOut(ClientWidth/2+140,ClientHeight-33,text);
Canvas->TextOut(ClientWidth/2+140,ClientHeight-63,text);
sprintf(text," - ");
Canvas->TextOut(ClientWidth/2+105,ClientHeight-65,text);
Canvas->TextOut(ClientWidth/2+180,ClientHeight-65,text);
sprintf(text," - ");
Canvas->TextOut(ClientWidth/2+105,ClientHeight-35,text);
Canvas->TextOut(ClientWidth/2+180,ClientHeight-35,text);
Canvas->Font->Color=clLime;
Canvas->Font->Size=7;
sprintf(text,"Y2");
Canvas->TextOut(ClientWidth/2+90,ClientHeight-60, text);
sprintf(text,"X2");
Canvas->TextOut(ClientWidth/2+90,ClientHeight-35,text);
Canvas->Font->Color=clWhite;
sprintf(text,"Y1");
Canvas->TextOut(ClientWidth/2+130,ClientHeight-60,text);
sprintf(text,"X1");
Canvas->TextOut(ClientWidth/2+130,ClientHeight-35,text);
Canvas->Font->Color=clLime;
Canvas->Font->Size=10;
sprintf(text,"(%.1f)",Y2);
Canvas->TextOut(ClientWidth/2+155,ClientHeight-63,text);
sprintf(text,"(%.1f)",X2);
Canvas->TextOut(ClientWidth/2+155,ClientHeight-33,text);
Canvas->Font->Color=clWhite;
sprintf(text,"(%.1f)",Y1);
Canvas->TextOut(ClientWidth/2+205,ClientHeight-63,text);
sprintf(text,"(%.1f)",X1);
Canvas->TextOut(ClientWidth/2+205,ClientHeight-33,text);
Canvas->Font->Size=12;
sprintf(text,"
");
Canvas->TextOut(ClientWidth/2+250,ClientHeight-50,text);
Canvas->Font->Color=clAqua;
sprintf(text,"%.2f",M);
Canvas->TextOut(ClientWidth/2+250,ClientHeight-50,text);
}
/*--------------------------------------------------------------------------FUNCION: Button2Click()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS: *Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Panel5->Visible=false;
}
/*--------------------------------------------------------------------------FUNCION: BASETEORICA1CLICK()
OBJETIVO: Llama a un archivo de ayuda.
PARAMETROS: *Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Baseteorica1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();
}

Apndice
37
/*--------------------------------------------------------------------------FUNCION: Uso1Click()
OBJETIVO: Abre una ventana de dialogo.
PARAMETROS: *Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Uso1Click(TObject *Sender)
{
Panel4->Visible=true;
}
/*--------------------------------------------------------------------------FUNCION: Acercade2Click()
OBJETIVO: abre una ventana de dialogo.
PARAMETROS: *Sender.
Un evento del Mouse.
---------------------------------------------------------------------------*/
void __fastcall TForm1::Acercade2Click(TObject *Sender)
{
Panel5->Visible=true;
}
//---------------------------------------------------------------------------

SU ARCHIVO DE CABECERA.
//---------------------------------------------------------------------------------------------------------------------------ARCHIVO: NUEVPEND.H
//--------------------------------------------------------------------------------------------------------------------------#ifndef nuevpendH
#define nuevpendH
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Menus.hpp>
#include <vcl\ExtCtrls.hpp>
//-------------------------------------------------------------------------------------------------------------------------class TForm1 : public TForm
{
__published:
// IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *Limpiar1;
TMenuItem *Salir1;
TMenuItem *Menu1;
TPanel *Panel1;
TMemo *Memo1;
TButton *Button1;
TPanel *Panel2;
TPanel *Panel3;
TMemo *Memo2;
TButton *boton2;
TMenuItem *Rotar1;
TMenuItem *Accion1;
TMenuItem *Mover1;
TPanel *Panel4;
TMemo *Memo3;
TButton *Button2;

Apndice
38
TMenuItem *Ayuda1;
TPanel *Panel5;
TButton *Button3;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TImage *Image1;
TMenuItem *Baseteorica1;
TMenuItem *Uso1;
TMenuItem *Acercade2;
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall cClick(TObject *Sender);
void __fastcall FormDblClick(TObject *Sender);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall Rotar1Click(TObject *Sender);
void __fastcall Mover1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Baseteorica1Click(TObject *Sender);
void __fastcall Uso1Click(TObject *Sender);
void __fastcall Acercade2Click(TObject *Sender);
private: // User declarations
public:
// User declarations
void __fastcall Ejes();
void __fastcall DIBUJA(int P1,int P2, int P3,int P4,int accion);
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf);
void __fastcall Calcula(float X1,float Y1,float X2,float Y2);
void __fastcall Obten_Puntos(int X,int Y);
void __fastcall Mueve(int Xf,int Yf);
void __fastcall Traslada(int ,int );
void __fastcall borr_ant();
void __fastcall Punto_A_mover(int X,int Y,int P);
void __fastcall Pinta_pendiente(float X1,float Y1,float X2,float Y2);
char text[100];
bool z,t,w,n,s,e,nn,ss,ee;
__fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------------------extern TForm1 *Form1;
//--------------------------------------------------------------------------#endif

Apndice
39
//-------------------------------------------------------------------------------------------------------------------------------PROGRAMA: MXPLUSB.CPP
OBJETIVO: Integrar los conceptos vistos en los programas anteriores en una solo.
//-------------------------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#pragma hdrstop
#include<conio.h>
#include "MXPLUSB.h"
#include "math.h"
#include "string.h"
#pragma resource "*.dfm"
TForm1 *Form1;
int Xmant,Ymant,XMXant,YMXant;
int VALOR1,VALOR2,VISUAL,XANT,YANT,PIXEL=30;
float R,Z,res,m,INTER;
float b,INTER1,NUM;
char Buff[60];
//-------------------------------------------------------------------------------------------------------------------------------FUNCION: Tform1()
OBJETIVO: Crea una nueva forma para la aplicacin.
PARAMETROS: *Sender.
Un evento del Mouse.
//-------------------------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->HelpFile="Ecuac.hlp";
z=true;
t=false;
w=false;
n=s=nn=ss=false;
Panel4->Visible=true;
}
//-------------------------------------------------------------------------------------------------------------------------------FUNCION: Ejes()
OBJETIVO: Pinta los ejes coordenados y sus graduaciones.
PARAMETROS: *Sender.
Un evento del Mouse.
//-------------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
}
//-------------------------------------------------------------------------------------------------------------------------------FUNCION: FormResize()
OBJETIVO: Escala la ventana de trabajo.
PARAMETROS: *Sender.
Un evento del Mouse.
//-------------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------------FUNCION: FormMouseDown()
OBJETIVO: Guardar las coordenadas en que se realiz un clic con el mouse.
PARAMETROS: *Sender: Un evento del mouse.
Button : Que botn del mouse fue presionado.
Shift: Checa si se oprimi alguna tecla de funcin

Apndice
40
Int X,Y Posicin en pixeles en la que se hizo el clic.
//-----------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Tag<1)Obten_Puntos(X,Y);
}
/*--------------------------------------------------------------------------FUNCION : DIBUJA()
OBJETIVOS: Calcula y pinta las coordenadas de los 2 puntos que comprenden la recta, la distancia entre
ellos y su pendiente
PARAMETROS : P1 -> Coordenada en X del primer punto del segmento de recta
P2 -> Coordenada en Y del primer punto del segmento de recta
P3 -> Coordenada en X del Segundo punto del segmento de recta
P4 -> Coordenada en Y del Segundo punto del segmento de recta
---------------------------------------------------------------------------*/
void __fastcall TForm1::DIBUJA(int P1,int P2, int P3,int P4,int accion)
{
Canvas->Font->Size=7;
Canvas->Font->Color=clBlack;
X1=(float(P1-(VISUAL/2))/30);
Y1=(float((ClientHeight/2)-P2)/30);
X2=(float(P3-(VISUAL/2))/30);
Y2=(float((ClientHeight/2)-P4)/30);
if(X2==X1)
{
Panel3->Visible=true; // Aviso sobre pendiente indeterminada.
}
else
// Clculo de la pendiente
{
M=float(Y2-Y1)/float(X2-X1+0.0001);
}
CALCLIN(P1,P2,P3,P4);
}
/*-----------------------------------------------------------------------------FUNCIN : Ejes()
OBJETIVOS: DIbuja los ejes y sus graduaciones
PARAMETROS: Ninguno.
------------------------------------------------------------------------------*/
void __fastcall TForm1::Ejes()
{
int k;
int Ex=30;
int VENTANA;
VENTANA=ClientWidth-600;
VISUAL=ClientWidth-VENTANA;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clSilver;
LINEA(VISUAL/2,0,VISUAL/2,ClientHeight); // Eje Y
LINEA(0,ClientHeight/2,VISUAL+60,ClientHeight/2);// Eje X
k=0;
for(int i=1,j=0;i<=11,j<12;i++,j++)
{
LINEA(VISUAL/2+1,ClientHeight/2+k,VISUAL/2+5,ClientHeight/2+k);// Graduacin en Y
LINEA(VISUAL/2+1,ClientHeight/2-k,VISUAL/2+5,ClientHeight/2-k);

Apndice
41
LINEA(VISUAL/2+k,ClientHeight/2+1,VISUAL/2+k,ClientHeight/2+5);// Graduacin en X
LINEA(VISUAL/2-k,ClientHeight/2+1,VISUAL/2-k,ClientHeight/2+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clWhite;
Canvas->TextOut((VISUAL/2)+5,((ClientHeight/2)-30)-k,i);
Canvas->TextOut((VISUAL/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
Canvas->TextOut((VISUAL/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((VISUAL/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;
}
}
/*------------------------------------------------------------------------------------------------------------------------------FUNCIN : Limpiar1Click()
OBJETIVO: Realiza un refresco de la pantalla limpiando el area de trabajo.
PARAMETROS : Sender
Regresa un evento del mouse.
-------------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();
Limpia();
}
/*-----------------------------------------------------------------------------------------------------------------------------FUNCIN : Salir1Click()
OBJETIVO: Cierra todas las funciones y termina l;a aplicacin.
PARAMETROS : Sender
Regresa un evento del mouse.
------------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::Salir1Click(TObject *)
{
Close();
exit(1);
}
/*-------------------------------------------------------------------------------------------------------------------------FUNCIN : Linea()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS : Xi -> Coordenada en X del primer punto del segmento de recta
Yi -> Coordenada en Y del primer punto del segmento de recta
Xf -> Coordenada en X del Segundo punto del segmento de recta
Yf -> Coordenada en Y del Segundo punto del segmento de recta
-------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf)
{
Canvas->MoveTo(Xi,Yi);
Canvas->LineTo(Xf,Yf);
}
/*-------------------------------------------------------------------------------------------------------------------------FUNCION : Obten_Puntos()
OBJETIVO: Toma del mouse las coordenadas donde se dio un click para pintar los puntos que formarn
la recta.
PARAMETROS : X ->
Coordenada en X del evento del mouse
Y ->
Coordenada en Y del evento del mouse
--------------------------------------------------------------------------------------------------------------------------*/
void __fastcall TForm1::Obten_Puntos(int X,int Y)
{
Canvas->Font->Size=7;
Canvas->Pen->Color=clFuchsia;

Apndice
42
if(z == true)
{
Canvas->Pen->Color=clAqua;
old_x = X;
old_y = Y;
Canvas->Font->Color=clLime;
}
else
{
Tag++;
Xi=X;
Yi=Y;
DIBUJA(old_x,old_y,Xi,Yi,0); //1 Xi
}
z=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION : cClick()
OBJETIVO:
Cierra una ventana de dialogo
PARAMETROS : Sender
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::cClick(TObject *Sender)
{
Panel3->Visible=false;
z=true;
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION : FormDblClick()
OBJETIVO: Soltar el extremo de la recta fijandolo en el punto donde se realiz el DblClick.
PARAMETROS : Sender
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormDblClick(TObject *Sender)
{
z=true;
e=t=n=s=nn=ss=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button2Click()
OBJETIVO: Cierra una ventana de dialogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel6->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Uso1Click()
OBJETIVO: Abre una ventana de dialogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Uso1Click(TObject *Sender)
{
Panel3->Visible=false;
Panel4->Visible=false;
Panel6->Visible=true;

Apndice
43
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Indicaciones1Click()
OBJETIVO: Abre una ventana de dialogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Indicaciones1Click(TObject *Sender)
{
Panel4->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Calclin()
OBJETIVO: Calcula la distancia de dos puntos dados.
PARAMETROS: int old_x, old_y, X, Y: Coordenadas del punto inicial y final de un segmento de recta.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::CALCLIN(int old_x,int old_y,int X,int Y)
{
int xmin,ymin,xmax,ymax;
float W;
X1=(float(old_x-(float)(VISUAL/2.0))/30.0);
Y1=(float((float)(ClientHeight/2.0)-old_y)/30.0);
X2=(float(X-((float)VISUAL/2.0))/30.0);
Y2=(float(((float)ClientHeight/2.0)-Y)/30.0);
presenta(X1,Y1,X2,Y2);
M=(Y2-Y1)/(X2-X1+0.0001); // y - y1 = m*(x-x1)
m=M;
W=M;
sprintf(text,"%.1f",W);
MODIm->Text=text;
Calcb();
sprintf(text,"(%.1f)",Y1);
Label9->Caption=text;
sprintf(text,"(%.1f)",X1);
Label10->Caption=text;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: MODImChange()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::MODImChange(TObject *Sender)
{
float W;
strcpy(text,MODIm->Text.c_str());
sscanf(text,"%f",&INTER1);
IncM->Position=INTER1*10;
W=INTER1;
sprintf(text,"%.1f",W);
Label16->Caption=text;
R=INTER1;
M=R;
if(INTER1<=300) Traza_Recta(R);
else Limpia();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: MODIbChange()

Apndice
44
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::MODIbChange(TObject *Sender)
{
float W;
strcpy(text,MODIb->Text.c_str());
sscanf(text,"%f",&INTER);
Incb->Position=INTER*10.0;
W=INTER;
Recta2(W);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: IncMclick()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta pasa este valor a
modimclick.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::IncMClick(TObject *Sender, TUDBtnType Button)
{
MODIm->Text=IncM->Position*0.1;
strcpy(text,MODIm->Text.c_str());
sscanf(text,"%f",&INTER1);
// M ESTA EN reales
sprintf(text,"%.1f",INTER1);
Label16->Caption=text;
R=INTER1;
M=R;
Traza_Recta(R);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Incbclick()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta pasa este valor a
modibclick.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::IncbClick(TObject *Sender, TUDBtnType Button)
{
MODIb->Text=Incb->Position*0.1;
strcpy(text,MODIb->Text.c_str());
sscanf(text,"%f",&INTER);
// M ESTA EN reales
b=INTER;
Recta2(b);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Traza_Recta()
OBJETIVO: trazar la recta segun los cambios que se hagan a la formula original.
PARAMETROS:
Un real, R Modificacion a la pendiente.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Traza_Recta(float R)
{
float t;
int xxmax, yymax, xxmin, yymin;
Canvas->Pen->Color=clBlack;
Canvas->Ellipse(XANT,YANT,XANT,YANT);
Canvas->Ellipse(XANT-1,YANT-1,XANT+1,YANT+1);

Apndice
45
Canvas->Ellipse(XANT-2,YANT-2,XANT+2,YANT+2);
Canvas->Ellipse(XANT-3,YANT-3,XANT+3,YANT+3);
t=-R;
xxmax = VISUAL;
yymax = t*(xxmax-old_x) + old_y;
if(yymax > ClientHeight)
{
yymax = ClientHeight;
xxmax = (int)((yymax - old_y)/(t+0.0001) + old_x);
}
xxmin = 0;
yymin = t*(xxmin-old_x) + old_y;
if(yymin < 0)
{
yymin = 0;
xxmin = (yymin - old_y)/(t+0.0001)+ old_x;
}
Xi=xxmax;
Yi=yymax;
Calcb();
Canvas->Pen->Color=clBlack;
LINEA(Xmant,Ymant,XMXant,YMXant);
Ejes();
Canvas->Pen->Color=clAqua;
Canvas->Ellipse(old_x,old_y,old_x,old_y);
Canvas->Ellipse(old_x-1,old_y-1,old_x+1,old_y+1);
Canvas->Ellipse(old_x-2,old_y-2,old_x+2,old_y+2);
Canvas->Pen->Color=clFuchsia;
LINEA(xxmin,yymin,xxmax,yymax);
Panel4->Visible=false;
Xmant=xxmin;
Ymant=yymin;
XMXant=xxmax;
YMXant=yymax;
XANT=old_x;
YANT=old_y;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: COEXClick()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta pasa este valor a
modiCclick.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::COEXClick(TObject *Sender, TUDBtnType Button)
{
MODIa->Text=COEX->Position*0.1;
strcpy(text,MODIa->Text.c_str());
sscanf(text,"%f",&INTER1);
// M ESTA EN reales
sprintf(text,"%.1f",INTER1);
Label16->Caption=text;
R=INTER1;
M=R;
Traza_Recta(R);
}

Apndice
46
//------------------------------------------------------------------------------------------------------------------------FUNCION: CTECclick()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::CTEClick(TObject *Sender, TUDBtnType Button)
{
float cte;
MODIC->Text=CTE->Position*0.1;
strcpy(text,MODIC->Text.c_str());
sscanf(text,"%f",&cte);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: MODIaChange()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::MODIaChange(TObject *Sender)
{
float W;
strcpy(text,MODIa->Text.c_str());
sscanf(text,"%f",&INTER1);
W=INTER1;
sprintf(text,"%.1f",W);
Label16->Caption=text;
MODIm->Text=text;
COEX->Position=INTER1*10;
IncM->Position=INTER1*10;
R=INTER1;
M=R;
if(INTER1<=300) Traza_Recta(R);
else Limpia();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: MODICChange()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::MODICChange(TObject *Sender)
{
float W;
strcpy(text,MODIC->Text.c_str());
sscanf(text,"%f",&INTER);
CTE->Position=INTER*10.0;
Incb->Position=INTER*10.0;
sprintf(text,"%.1f",INTER);
MODIb->Text=text;
W=INTER;
Recta2(W);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Calcb()
OBJETIVO: Calcula la pendiente.
PARAMETROS:
Ninguno.
//-------------------------------------------------------------------------------------------------------------------------

Apndice
47
void __fastcall TForm1::Calcb()
{
float W;
b=Y1-(M*X1);
W=b;
sprintf(text,"%.1f",W);
MODIb->Text=text;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Recta2()
OBJETIVO: Traza la recta con los nuevos valores.
PARAMETROS:
Un real: b la nueva pendiente.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Recta2(float b)
{
int xxmax, yymax, xxmin, yymin;
float i,j,k;
float t=-M;
X1=(float(old_x-(float)(VISUAL/2.0))/30.0);
Y1=(M*X1)+ b;
i=t;
j=1;
k=b;
sprintf(text,"(%.2f)",i);
MODIa->Text=text;
sprintf(text,"(%.2f)",j);
MODIBY->Text=text;
sprintf(text,"(%.2f)",-k);
MODIC->Text=text;
sprintf(text,"(%.1f)",Y1);
Label9->Caption=text;
sprintf(text,"(%.1f)",X1);
Label10->Caption=text;
presenta(X1,Y1,X2,Y2);
old_y= ClientHeight/2.0 - (Y1*30);
xxmax = VISUAL;
yymax = t*(xxmax-old_x) + old_y;
if(yymax > ClientHeight)
{
yymax = ClientHeight;
xxmax = (yymax - old_y)/(t+0.0001) + old_x;
}
xxmin = 0;
yymin = t*(xxmin-old_x) + old_y;
if(yymin < 0)
{
yymin = 0;
xxmin = (yymin - old_y)/(t+0.0001)+ old_x;
}
Canvas->Pen->Color=clBlack;
LINEA(Xmant,Ymant,XMXant,YMXant);
Canvas->Ellipse(XANT,YANT,XANT,YANT);
Canvas->Ellipse(XANT-1,YANT-1,XANT+1,YANT+1);
Canvas->Ellipse(XANT-2,YANT-2,XANT+2,YANT+2);
Canvas->Ellipse(XANT-3,YANT-3,XANT+3,YANT+3);
Canvas->Pen->Color=clFuchsia;

Apndice
48
Ejes();
Canvas->Pen->Color=clAqua;
Canvas->Ellipse(old_x,old_y,old_x,old_y);
Canvas->Ellipse(old_x-1,old_y-1,old_x+1,old_y+1);
Canvas->Ellipse(old_x-2,old_y-2,old_x+2,old_y+2);
Canvas->Pen->Color=clFuchsia;
LINEA(xxmin,yymin,xxmax,yymax);
Panel4->Visible=false;
Xmant=xxmin;
Ymant=yymin;
XMXant=xxmax;
YMXant=yymax;
XANT=old_x;
YANT=old_y;
old_x=(X1*30)+(VISUAL/2);
old_y=(ClientHeight/2)-(Y1*30);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Presenta()
OBJETIVO: Pinta el valor del resultado de la ecuacin de la recta.
PARAMETROS:
float X1,Y1,X2,Y2 Puntos sobre los cuales se trazar la recta.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::presenta(float X1,float Y1,float X2,float Y2)
{
float t;
char uno[25],dos[25],tres[25],cuatro[25];
sprintf(uno,"y = 0 ");
Label13->Caption=uno;
sprintf(dos,"m = (%.2f)",M);
Label1->Caption=dos;
t = M*X1;
sprintf(tres,"- (%.2f) ",t);
sprintf(cuatro,"+ (%.2f ) ",Y1);
strcpy(text,uno);
strcat(text,tres);
strcat(text,cuatro);
Label13->Caption=text;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Limpia()
OBJETIVO: limpia la pantalla visual.
PARAMETROS:
Ninguno.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Limpia()
{
MODIm->Text=0;
IncM->Position=0;
MODIb->Text=0;
Incb->Position=0;
Label9->Caption="y1";
Label10->Caption="x1";
Panel4->Visible=true;
Tag=0;
z=true;
t=false;
w=n=s=false;

Apndice
49
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button1Clic()
OBJETIVO: Oculta una ventana de dilogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Acercade()
OBJETIVO: Abre una ventana de dilogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Acercade1Click(TObject *Sender)
{
Panel1->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: INCREMYClick()
OBJETIVO: Guarda los incrementos hechos para modificar la ecuacion de la recta.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::INCREMYClick(TObject *Sender, TUDBtnType Button)
{/*
float cteY;
MODIBY->Text=INCREMY->Position*0.1;
strcpy(text,MODIBY->Text.c_str());
sscanf(text,"%f",&cteY);
Label12->Caption=text;*/
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: BaseTeorica()
OBJETIVO: Abre una ventana de dilogo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::BaseTorica1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();
}
//--------------------------------------------------------------------------------------------------------------------------

Apndice
50
SU ARCHIVO DE CABECERA.
//------------------------------------------------------------------------------------------------------------------------ARCHIVO: AMXPLUSB.H
//------------------------------------------------------------------------------------------------------------------------#ifndef MXPLUSBH
#define MXPLUSBH
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Menus.hpp>
#include <vcl\ExtCtrls.hpp>
#include <vcl\ComCtrls.hpp>
//----------------------------------------------------------------------------------------------------------------------class TForm1 : public TForm
{
__published:
// IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *Limpiar1;
TMenuItem *Salir1;
TMenuItem *Menu1;
TPanel *Panel3;
TMemo *Memo2;
TButton *boton2;
TMenuItem *Ayuda1;
TPanel *Panel5;
TMemo *Memo4;
TPanel *Panel6;
TMemo *Memo5;
TMenuItem *Uso1;
TMenuItem *Indicaciones1;
TEdit *MODIm;
TEdit *MODIb;
TUpDown *IncM;
TUpDown *Incb;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TEdit *MODIa;
TLabel *Label5;
TEdit *MODIBY;
TLabel *Label6;
TUpDown *COEX;
TEdit *MODIC;
TUpDown *CTE;
TLabel *Label7;
TPanel *Panel4;
TMemo *Memo1;
TLabel *Label8;
TLabel *Label9;
TLabel *Label10;
TLabel *Label11;
TLabel *Label12;
TLabel *Label13;

Apndice
51
TLabel *Label16;
TPanel *Panel1;
TButton *Button1;
TLabel *Label14;
TLabel *Label15;
TImage *Image1;
TMenuItem *Acercade1;
TLabel *Label17;
TLabel *Label18;
TLabel *Label19;
TLabel *Label20;
TLabel *Label21;
TUpDown *INCREMY;
TMenuItem *BaseTorica1;
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);
void __fastcall cClick(TObject *Sender);
void __fastcall FormDblClick(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Uso1Click(TObject *Sender);
void __fastcall Indicaciones1Click(TObject *Sender);
void __fastcall MODImChange(TObject *Sender);
void __fastcall MODIbChange(TObject *Sender);
void __fastcall MODIaChange(TObject *Sender);
void __fastcall MODIBYChange(TObject *Sender);
void __fastcall MODICChange(TObject *Sender);
void __fastcall IncMClick(TObject *Sender, TUDBtnType Button);
void __fastcall IncbClick(TObject *Sender, TUDBtnType Button);
void __fastcall COEXClick(TObject *Sender, TUDBtnType Button);
void __fastcall CTEClick(TObject *Sender, TUDBtnType Button);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Acercade1Click(TObject *Sender);
void __fastcall INCREMYClick(TObject *Sender, TUDBtnType Button);
void __fastcall BaseTorica1Click(TObject *Sender);
private: // User declarations
public:
// User declarations
void __fastcall Ejes();
void __fastcall DIBUJA(int P1,int P2, int P3,int P4,int accion);
void __fastcall TForm1::LINEA(int Xi,int Yi,int Xf,int Yf);
void __fastcall Obten_Puntos(int X,int Y);
void __fastcall Punto_A_mover(int X,int Y,int P);
void __fastcall CALCLIN(int old_x,int old_y,int X,int Y);
void __fastcall Traza_Recta(float R);
void __fastcall Calcb();
void __fastcall Recta2(float b);
void __fastcall presenta(float X1,float Y1,float X2,float Y2);
void __fastcall Limpia();
float X1,Y1,X2,Y2,old_x,old_y,Xf,Yf,sign,M,D;
int Xi,Yi;
char text[100];
bool z,t,w,n,s,e,nn,ss,ee;
__fastcall TForm1(TComponent* Owner);

Apndice
52
};
extern TForm1 *Form1;
#endif

Apndice
53
//------------------------------------------------------------------------------------------------------------------------ARCHIVO: SIM1.CPP
OBJETIVO: Caratula de presentacin e integracin de los anteriores mdulos.
//------------------------------------------------------------------------------------------------------------------------#include <vcl\vcl.h>
#include<dos.h>
#pragma hdrstop
#include "sim1.h"
#pragma resource "*.dfm"
TForm1 *Form1;
int VISUAL;
bool VIS=true;
//------------------------------------------------------------------------------------------------------------------------FUNCION: TForm1()
OBJETIVO: Crea una nueva forma.
//------------------------------------------------------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Panel2->Visible=true;
Application->HelpFile = "DOCUMENTO.HLP";
}
/*-----------------------------------------------------------------------------FUNCIN : Ejes()
OBJETIVO: Dibuja los ejes y sus graduaciones
PARAMETROS: Ninguno.
------------------------------------------------------------------------------*/
void __fastcall TForm1::Ejes()
{
int k;
int Ex=30;
int VENTANA;
VENTANA=ClientWidth-600;
VISUAL=ClientWidth-VENTANA;
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clBlack;
LINEA(VISUAL/2,0,VISUAL/2,ClientHeight); // Eje Y
LINEA(0,ClientHeight/2,VISUAL+60,ClientHeight/2);// Eje X
k=0;
for(int i=1,j=0;i<=11,j<12;i++,j++)
{
LINEA(VISUAL/2+1,ClientHeight/2+k,VISUAL/2+5,ClientHeight/2+k);// Graduacin en Y
LINEA(VISUAL/2+1,ClientHeight/2-k,VISUAL/2+5,ClientHeight/2-k);
LINEA(VISUAL/2+k,ClientHeight/2+1,VISUAL/2+k,ClientHeight/2+5);// Graduacin en X
LINEA(VISUAL/2-k,ClientHeight/2+1,VISUAL/2-k,ClientHeight/2+5);
Canvas->Font->Size=7;
Canvas->Font->Pitch=fpDefault;
Canvas->Font->Color=clBlack;
Canvas->TextOut((VISUAL/2)+5,((ClientHeight/2)-30)-k,i);
Canvas->TextOut((VISUAL/2)+5,((ClientHeight/2)+30)+k,-i); // Numeracin en Y
Canvas->TextOut((VISUAL/2)+k,(ClientHeight/2)+5,j); // Numeracin en X
Canvas->TextOut((VISUAL/2)-k,(ClientHeight/2)+5,-j);
k+=Ex;
}
}

Apndice
54
//------------------------------------------------------------------------------------------------------------------------FUNCION: LINEA()
OBJETIVO: Traza una linea por los puntos establecidos.
PARAMETROS:
int P1, P2, P3, P4, Coordenadas del punto inicial y punto fianl del trazo de la linea.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::LINEA(int P1,int P2,int P3,int P4)
{
Canvas->MoveTo(P1,P2);
Canvas->LineTo(P3,P4);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Paint()
OBJETIVO: repintar la aplicacin.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)
{
Ejes();
Panel2->Visible =true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: resize()
OBJETIVO: Escala la ventana de trabajo.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Salir()
OBJETIVO: Finaliza la tarea.
PARAMETROS:
*Sender.
Un evento del Mouse.
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Salir1Click(TObject *Sender)
{
Close();
exit(1);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: PENDPOS()
OBJETIVO: traza rectas con pendiente positiva.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::PENDPOS()
{
int X,X0,X1,Y1,X2,Y2,i,j;
Panel2->Visible=true;
X=X1=0;
Y1=ClientHeight;
X0=X2=VISUAL;
Y2=0;
Canvas->Pen->Color=clSilver;
LINEA(X1,Y1,X2,Y2);
j=30;
for(i=0;i<20;i++)

Apndice
55
{
LINEA(X1+=j,Y1,X2+=j,Y2);
LINEA(X-=j,Y1,X0-=j,Y2);
}
sleep(3);
Panel2->Visible=false;
Invalidate();
Panel3->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Limpiar()
OBJETIVO: Limpia la ventana de trabajo.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Limpiar1Click(TObject *Sender)
{
Invalidate();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: PENDNEG()
OBJETIVO: traza rectas con pendiente negativa.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::PENDNEG()
{
int X,X0,X1,Y1,X2,Y2,i,j;
Panel3->Visible=true;
Ejes();
X=X1=0;
Y1=0;
X0=X2=VISUAL;
Y2=ClientHeight;
Panel3->Visible=true;
Canvas->Pen->Color=clSilver;
LINEA(X1,Y1,X2,Y2);
j=30;
for(i=0;i<20;i++)
{
LINEA(X1+=j,Y1,X2+=j,Y2);
LINEA(X-=j,Y1,X0-=j,Y2);
}
sleep(3);
Panel3->Visible=false;
Invalidate();
Panel4->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button1Click()
OBJETIVO: Llama la funcion PENDPOS.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
PENDPOS();
}
//-------------------------------------------------------------------------------------------------------------------------

Apndice
56
FUNCION: Button2Click()
OBJETIVO: oculta una ventana de dialogo y llama a la funcin PENDNEG().
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel2->Visible=false;
PENDNEG();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: PENDCERO()
OBJETIVO: traza rectas con pendiente cero.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::PENDCERO()
{
int i,y,y1;
y=y1=ClientHeight/2;
Panel2->Visible=false;
Panel4->Visible=true;
Ejes();
Canvas->Pen->Color=clSilver;
LINEA(0,ClientHeight/2,VISUAL+60,ClientHeight/2);
for(i=0;i<=10;i++)
{
y-=30;
y1+=30;
LINEA(0,y,VISUAL+60,y);
LINEA(0,y1,VISUAL+60,y1);
}
sleep(3);
Panel4->Visible=false;
Invalidate();
Panel5->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: PEND90()
OBJETIVO: traza rectas con pendiente de 90 grados.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::PEND90()
{
int i,y,y1;
y=y1=VISUAL/2;
Panel5->Visible=true;
Ejes();
Canvas->Pen->Color=clSilver;
LINEA(VISUAL/2,0,VISUAL/2,ClientHeight);
for(i=0;i<=10;i++)
{
y-=30;
y1+=30;
LINEA(y,0,y,ClientHeight);
LINEA(y1,0,y1,ClientHeight);
}
sleep(2);

Apndice
57
Invalidate();
Panel5->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button3Click()
OBJETIVO: Oculta una ventana de dialogo y llama a la funcion PENDCERO.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender)
{
Panel3->Visible=false;
PENDCERO();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button4Click()
OBJETIVO: Oculta una ventana de dialogo y llama a la funcion PEND90.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender)
{
PEND90();
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Positiva1Click()
OBJETIVO: Oculta varias ventanas de dialogo..
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Positiva1Click(TObject *Sender)
{
Panel3->Visible=false;
Panel4->Visible=false;
Panel5->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Negativa1Click()
OBJETIVO: Oculta varias ventanas de dialogo.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Negativa1Click(TObject *Sender)
{
Panel2->Visible=false;
Panel4->Visible=false;
Panel5->Visible=false;
Panel3->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Cero1Click()
OBJETIVO: Oculta varias ventanas de dialogo y abre una.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Cero1Click(TObject *Sender)
{
Panel3->Visible=false;
Panel2->Visible=false;
Panel5->Visible=false;
Panel4->Visible=true;

Apndice
58
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Indeterminada()
OBJETIVO: Oculta varias ventanas de dialogo.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Indeterminada1Click(TObject *Sender)
{
Panel3->Visible=false;
Panel4->Visible=false;
Panel2->Visible=false;
Panel5->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Acercade1Click()
OBJETIVO: Abre una ventanas de dialogo.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Acercade1Click(TObject *Sender)
{
Panel6->Visible=true;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Button5Click()
OBJETIVO: Oculta una ventanas de dialogo.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender)
{
Panel6->Visible=false;
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Contenido1Click()
OBJETIVO: Llama un archivo de ayuda.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Contenido1Click(TObject *Sender)
{
Application->HelpCommand(HELP_CONTENTS, 0);
}
//------------------------------------------------------------------------------------------------------------------------FUNCION: Busquedapor1Click()
OBJETIVO: llama al indexado del archivo de ayuda.
PARAMETROS: Ninguno
//------------------------------------------------------------------------------------------------------------------------void __fastcall TForm1::Busquedapor1Click(TObject *Sender)
{
Application->HelpCommand(HELP_PARTIALKEY, (long) "");
}
//---------------------------------------------------------------------------

Apndice
59
SU ARCHIVO DE CABECERA.
//---------------------------------------------------------------------------------------------------------------------ARCHIVO: SIM1.HPP
//---------------------------------------------------------------------------------------------------------------------#ifndef sim1H
#define sim1H
#include <vcl\Classes.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\ExtCtrls.hpp>
#include <vcl\Menus.hpp>
//--------------------------------------------------------------------------class TForm1 : public TForm
{
__published:
// IDE-managed Components
TPanel *Panel1;
TPanel *Panel2;
TMainMenu *MainMenu1;
TMenuItem *Salir1;
TMenuItem *Limpiar1;
TMemo *Memo1;
TPanel *Panel3;
TMemo *Memo2;
TButton *Button1;
TButton *Button2;
TPanel *Panel4;
TPanel *Panel5;
TMemo *Memo3;
TMemo *Memo4;
TButton *Button3;
TButton *Button4;
TMenuItem *Opciones1;
TMenuItem *Positiva1;
TMenuItem *Negativa1;
TMenuItem *Cero1;
TMenuItem *Indeterminada1;
TMenuItem *Acercade1;
TPanel *Panel6;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TImage *Image1;
TButton *Button5;
TMenuItem *aYuda1;
TMenuItem *Contenido1;
TMenuItem *Busquedapor1;
void __fastcall Ejes();
void __fastcall PENDPOS();
void __fastcall PENDNEG();
void __fastcall PENDCERO();
void __fastcall PEND90();
void __fastcall LINEA(int P1, int P2,int P3,int P4);
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall Salir1Click(TObject *Sender);

Apndice
60
void __fastcall Limpiar1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall Positiva1Click(TObject *Sender);
void __fastcall Negativa1Click(TObject *Sender);
void __fastcall Cero1Click(TObject *Sender);
void __fastcall Indeterminada1Click(TObject *Sender);
void __fastcall Acercade1Click(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
void __fastcall Contenido1Click(TObject *Sender);
void __fastcall Busquedapor1Click(TObject *Sender);
private: // User declarations
public:
// User declarations
__fastcall TForm1(TComponent* Owner);
};
extern TForm1 *Form1;
#endif

Apndice
61

También podría gustarte