Documentos de Académico
Documentos de Profesional
Documentos de Cultura
47
Captulo II
ESTRUCTURA DEL C++ BUILDER.
48
49
50
Inspector
de
Paleta de
Componentes
Ventana de
edicin.
Diseo de
la forma
FIG. 2.4.1 Ambiente de desarrollo integrado 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.
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
52
FIG. 2.4.1.3
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.
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
FIG. 2.4.2.3
FIG. 2.4.2.4
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
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
Internet: Esta tabla dada por C++ Builder, comprende lo referente al grupo de
herramientas de internet.
FIG. 2.4.2.8
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
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
55
FIG. 2.4.2.12
FIG. 2.4.3.1
Editor de la forma.
56
FIG. 2.4.4.1
Inspector de objetos.
57
58
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.
y ser
59
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.
60
61
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.
62
63
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.
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.
64
65
66
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
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
68
PoDesigned
PoScreenCenter
PoDefault
PoDefaultPosOnly
PoDefaultSizeOnly
WsNormal
WsMinimized
WsMaximized
3.2
Los eventos son acciones relacionadas a los objetos y su comportamiento que llevarn a
cabo durante la ejecucin del programa.
3.2.1
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.
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.
70
3.2.2
71
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.
OnClose
OnCloseQuery
OnCreate
Inicializar el cdigo.
OnDeactivate
OnDestroy
Al intentar
aplicacin.
cerrar
la Libera memoria
aplicacin.
en
utilizada
variables
en
la
OnPaint
OnResize
72
3.3.1
73
FIG. 3.3.1.1 Acomodo de dos componentes Panel en la Forma para una aplicacin particular.
74
FIG. 3.3.1.2 Acomodo de dos componentes Label en la Forma para una aplicacin particular.
FIG. 3.3.1.3 Acomodo de dos componentes Edit en la Forma para una aplicacin particular.
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
76
3.3.2
77
FIG. 3.3.2.1 Acomodo de un componente Panel en la Forma para una aplicacin particular.
), 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:
78
FIG. 3.3.2.3 Acomodo de tres componentes Button en la Forma para una aplicacin particular.
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;
79
3.3.3
80
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
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.
81
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.
3.3.4
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:
). y colquelo
83
3.3.5
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
84
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 );
85
3.3.6
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.
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.
3.3.7
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.
87
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.
3.3.8
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:
88
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.
89
3.3.9
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
(
3.- Con el inspector de objetos cambie la propiedad de titulo (Caption), como se muestra a
continuacin.
90
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.
6.- Seleccione el botn Ok. Para cerrar esta ventana de edicin y obtendr el siguiente
resultado:
7.- Presione la tecla de funcin F9 para ejecutar su aplicacin y observe los resultados.
3.3.10
91
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.
), 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.
Caractr
92
#
_(Guin Bajo)
>
<
3.3.11
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
93
3.3.11.2
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
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.
3.3.12
94
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
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.
95
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++)
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
Esta forma muestra cada una de los archivos de imagen que se pueden usar en los BtnBits
antes visto.
3.3.14
97
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.
3.- Haga doble clic en este objeto y se abrir el diseador de mens que tiene la siguiente
apariencia.
4.- Con el inspector de objetos ponga los ttulos del men modificando la propiedad caption
de la siguiente manera.
98
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).
3.3.14.1
99
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.
3.3.14.2
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.
FIG. 3.3.14.2
3.3.14.3
100
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.
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,
101
seleccione Insert From Template y seleccione la opcin que sea til para su aplicacin.
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.
102
3.3.15
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.
103
y colquelo
FIG. 3.3.15.1
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.
FIG. 3.3.15.2
3.3.16
104
FIG. 3.3.16.1
2.- Seleccione haciendo clic en el botn New para aadir un panel a la barra de estado.
3.- Escriba el siguiente texto.
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.
, con el
FIG. 3.3.16.2
106
FIG. 3.3.16.3
3.3.17
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.
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
FIG.
3.3.17.3
108
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);
109
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
110
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
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
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.
3.3.19
111
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
8.- Seleccione el objeto ListView y oprima las teclas Ctrl + C, para hacer una copia de este
objeto.
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
FIG.
3.3.19.3
113
FIG.
3.3.20
3.3.19.4
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 .;
FIG.
3.3.20.1
114
FIG.
3.3.20.2
3.3.21
115
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.
FIG. 3.3.21.1
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
FIG. 3.3.21.4
117
Setting
Txt
Text Files, *.txt
True
Grabar archivo.
FIG.
3.3.22.1
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.
FIG.
3.3.23
3.3.22.1
118
FIG.
3.3.23.1
119
FIG.
3.3.23.2
FIG.
3.3.23.3
3.3.24
120
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.
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
122
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.
FIG.
3.3.26
123
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.
FIG.
124
3.- Si algn campo es Memo o Grfico, se puede conocer su contenido haciendo doble clic
en ese rengln.
FIG.
4.- Al hacer doble clic aparecer otra ventana con la informacin de ese campo.
FIG.
FIG.
3.3.27
125
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.
FIG.
3.3.27.1
126
FIG.
3.3.27.2
127
FIG.
3.3.27.3
FIG.
3.3.28
3.3.27.4
128
FIG. 3.3.28.1
129
Acomodo de componentes.
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
131
FIG.
3.3.28.1
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:
FIG. 3.3.28.2
132
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
3.3.30
133
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
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
FIG.
3.3.32
3.3.30.1
135
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.
136
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
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.
137
FIG.
3.3.34
3.3.32.1
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.
138
FIG.
3.3.33.1
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.
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:
139
&Limpiar
b) Un Campo Ayuda
&Uso
&Acerca de
c) Un Campo Base Terica.
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
140
g) La propiedad Top
FIG.
4.1.1
Valor o Texto
Se elimina, ya que no se usar.
265
553
clBtnFace
208
144
y colquelo
141
y colquelo
Valor o Texto
&Continuar.
89
129
392
96
Valor o Texto
241
377
16
Doble clic
y colquelo
142
Valor o Texto
Se elimina, ya que no se usar.
169
153
clTeal
840
16
y colquelo
143
Valor o Texto
73
57
48
True
Doble clic
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.
144
Valor o Texto
a) La propiedad Caption
b) El evento OnClick
145
&Continuar
Panel2->Visible=false;
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
146
160
Bold Italic
9
f) La propiedad Top
g) La propiedad Font Style
h) La propiedad Font Size
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();
Valor o Texto
147
a) La propiedad Caption
a) La propiedad Caption
&Limpiar
&Salir
FIG.
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);
Valor o Texto
&Uso
a&Cerca de
FIG.
148
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);
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();
Invalidate();
Evento
OnPaint
Form1
Evento
OnReSize
FIG.
150
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.
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);
}
}
//----------------------------------------------------------------------------------------------------------
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
153
29.- Seleccione File Save Project As y obtendr una ventana de dialogo en la que
podr darle nombre a la aplicacin.
FIG.
FIG.
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.
154
FIG.
4.1.12
FIG.
4.1.13
155
&Salir
&Limpiar
Valor o Texto
Ejes Coordenados .
721
1024
clBack
156
BildCim.ico
0
e) La propiedad Icon
f) La propiedad Left
g) La propiedad Top
FIG.
4.2.1
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
157
y colquelo
Valor o Texto
&Continuar.
57
59
352
48
Valor o Texto
145
337
Doble clic
y colquelo
FIG.
4.2.2
158
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
169
153
clTeal
840
16
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
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.
160
Valor o Texto
&Continuar
Panel2->Visible=false;
Valor o Texto
Geometra Parte 1.
16
110
clTeal
32
y colquelo en el
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
Valor o Texto
&Opciones
+ Enter
&Acerca de + Enter
c) La propiedad Caption
162
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();
Propiedad
a) La propiedad Caption
a) La propiedad Caption
Valor o Texto
&Limpiar
&Salir
FIG.
163
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);
Valor o Texto
a) Evento OnClick
FIG.
Panel2->Visible=true;
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;
Evento
OnMouseDown
Form1
Evento
OnMouseMove
Form1
las
son
Ejes();
Se redibujan
graduaciones.
sus
Invalidate();
los
ejes
Evento
OnPaint
Form1
Evento
OnReSize
Hasta ahora tenemos integrado nuestro mdulo con la siguiente presentacin:
165
FIG.
FIG.
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
167
168
169
Estrategia:
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.
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
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
y colquelo
Valor o Texto
y colquelo
Valor o Texto
&Continuar.
65
57
344
112
y colquelo
171
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
FIG.
4.3.1
172
y colquelo
Valor o Texto
Valor o Texto
&Continuar.
49
57
304
96
Valor o Texto
201
y colquelo
173
281
16
16
Doble
clic
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines
FIG.
4.3.2
y colquelo
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
Valor o Texto
73
57
48
True
Doble clic
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.
175
Valor o Texto
&Continuar
Panel3->Visible=false;
176
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
177
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
73
alBottom
clTeal
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();
178
Valor o Texto
a) La propiedad Caption
a) La propiedad Caption
&Limpiar
&Salir
FIG.
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);
179
Valor o Texto
Panel1->Visible=true;
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);
Float X1,Y1;
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;
las
son
Ejes();
Se rredibujan
graduaciones.
sus
Invalidate();
los
ejes
Evento
OnPaint
Form1
Evento
OnReSize
180
FIG.
FIG.
181
182
Estrategia:
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
&Limpiar
b) Un Campo &Accin
&Rotar
&Trasladar
c) Un campo A&yuda
&Uso
&Acerca de
d) Un Campo Base Terica.
Diseo:
La construccin del mdulo se realiz mediante los siguientes pasos:
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
y colquelo
Valor o Texto
Valor o Texto
&Continuar.
105
75
336
56
y colquelo
184
Panel1->Visible=false;
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
FIG.
4.4.1
y colquelo
185
y colquelo
Valor o Texto
y colquelo
Valor o Texto
Valor o Texto
&Aceptar.
73
65
d) La propiedad Left
e) La propiedad Top
186
424
16
y colquelo
Valor o Texto
89
409
Doble
clic
FIG.
4.4.2
187
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
177
145
clTeal
736
144
Valor o Texto
73
57
48
f) La propiedad Top
e) La propiedad Stretch
f) La propiedad Picture
188
True
Doble clic
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.
189
Valor o Texto
&Continuar
Panel4->Visible=false;
Valor o Texto
Geometra Parte 1.
16
110
clTeal
16
80
Bold Italic
y colquelo en el
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
Valor o Texto
Se elimina, ya que no se usar.
73
clTeal
y colquelo
191
Valor o Texto
&Aceptar.
89
977
8
y colquelo
Valor o Texto
73
873
Doble
clic
FIG.
192
4.4.6
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();
Valor o Texto
193
&Limpiar
a) La propiedad Caption
&Salir
a) La propiedad Caption
&Trasladar
a) La propiedad Caption
Valor o Texto
Panel1->Visible=true;
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.
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);
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();
Se redibujan
graduaciones.
los
ejes
sus
Evento
OnPaint
Invalidate();
Form1
Evento
OnReSize
195
FIG.
4.4.7
FIG.
196
4.4.8
197
&Salir
&Limpiar
Valor o Texto
LA RECTA
721
1024
clTeal
BildCim.ico
0
CIMAT 1998 .
198
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
145
609
clsilver
0
548
y colquelo
Valor o Texto
&Aceptar.
97
49
552
32
Valor o Texto
129
y colquelo
199
539
Doble
clic
b) La propiedad Width
c) La propiedad Left
d) La propiedad Top
e) La propiedad Lines
FIG.
4.5.1
Valor o Texto
Se elimina, ya que no se usar.
697
415
clTeal
601
y colquelo
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
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
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
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:
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
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
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
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
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);
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
169
153
clSilver
838
200
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
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.
210
Valor o Texto
&Continuar
Panel2->Visible=false;
Valor o Texto
Geometra Parte 1.
24
179
clGray
16
y colquelo en el
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
Valor o Texto
Se elimina, ya que no se usar.
233
404
clTeal
0
y colquelo
212
Valor o Texto
209
396
Doble clic
y colquelo
213
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
233
417
clTeal
0
Valor o Texto
217
401
Doble clic
y colquelo
214
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.
215
Componente
Opcin &Base Terica;
Evento OnClick
Cdigo
Application->HelpCommand(HELP_CONTENTS,0);
Invalidate();
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);
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);
Form1
217
Canvas->Font->Color=clWhite;
Ejes();
Invalidate();
Evento
OnPaint
Form1
Evento
OnReSize
218
219
4.6
220
PRESENTACION (Sim.cpp)
Valor o Texto
221
Valor o Texto
y colquelo
222
Valor o Texto
&Introduccin.
32
209
40
14
y colquelo
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
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
Valor o Texto
&Ecuaciones de la Recta.
32
154
380
72
224
Valor o Texto
312
264
True
Doble clic
y colquelo
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.
y colquelo
226
Valor o Texto
312
264
280
8
True
Doble clic
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.
227
y colquelo
Valor o Texto
Se elimina, ya que no se usar.
216
209
clGray
192
64
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
Valor o Texto
&Continuar
Panel2->Visible=false;
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
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
FIG.
Valor o Texto
&Salir
exit(0);
230
Propiedad
a) La propiedad Caption
b) El evento OnClick
Valor o Texto
&Acerca de
Panel2->Visible=true;
FIG.
4.6.11
Aplicacin final.
4.7
231
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.-
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:
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
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
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
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
#
$
+
K
2.- Junto a la palabra le escribo el identificador del texto al cual quiero asociarlo.
RectaIr_Recta
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
FIG. 4.7.1
237
FIG.
238
4.7.2
Configurado de Herramientas.
FIG.
4.7.3
Compilador de ayudas.
239
FIG. 4.7.4
FIG.
4.7.5
240
FIG. 4.7.6
Integracin de componentes.
FIG.
4.7.7
241
FIG. 4.7.8
16.- y nos mostrar el resultado de la compilacin, si hay errores se tendrn que corregir.
FIG. 4.7.9
Resultado de la compilacin.
FIG. 4.7.10
242
Visualizacin de la ayuda.
FIG. 4.7.11
243
FIG. 4.7.12
244
Application->HelpFile = "DOCUMENTO.HLP";
Donde DOCUMENTO.HLP es el nombre del hipertexto ya generado despus de la
compilacin con el HCW.EXE
245
FIG.
4.7.13
FIG.
4.7.14
FIG.
4.7.15
246
FIG.
4.7.16
247
Apndice
1
Apndice
1. GLOSARIO DE TERMINOS
ABSTRACCION
ABSTRACTO,
TIPO DE DATO
(TDA)
ARGUMENTO
ASOCIACION
ATRIBUTO
CAMBIO DE
ESTADO DE UN
OBJETO
CAMPO
CARACTERISTICA
CLASE
Apndice
2
CONJUNTO
CONSTRUCTOR
DESTRUCTOR
DIAGRAMA
DOMINIO
ENCAPSULADO
ESQUEMA
EVENTO
Apndice
3
FUNCION
GENERALIZACION
HERENCIA
INSTANCIA
Sinnimo de objeto.
INSTANCIACION
Creacin de un objeto.
LPOO
METODO
OBJETO
OCULTAMIENTO
DE LA
INFORMACION
Apndice
4
POO
RAD
RELACION
SUBCLASE
SUPERCLASE
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);
}
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.
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);
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.
---------------------------------------------------------------------------*/
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