Está en la página 1de 39

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.

com)

DELPHI 7
Por Armando DarK_FirefoX [aht1980ster@hotmail.com]
Este curso es FreeWare, y esta acogido a la Licencia GNU GPL. Su
distribucin es gratis, pero siempre con el debido espacio del nombre
del autor.

-1-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

1. Por que he decidido crear este curso?


Bien, hace ya unos aos me adentre en el mundo de la programacin, no sabia por
donde empezar, no sabia si aprender C, C++, Visual Basic, C#, Delphi.
Finalmente, me decid por Delphi, siendo un lenguaje de programacin Orientado a
Objetos (POO u OOP [Object Oriented Programming]). Adems de esto Delphi se ha
ido difundiendo por la Red; por lo que diferentes usuarios y compaas han ido
creando mas componentes (se explicar ms adelante) para el Delphi.
Siempre he estado buscando en Internet un curso que me ensee y me ayude a
programar en Delphi, siempre he encontrados Guas y Tutoriales muy antiguos. Con
informacin que para versiones modernas del Delphi se pueden utilizar de una
manera ms fcil.
2. Introduccin
Qu es Delphi?
Delphi es un lenguaje de programacin de alto nivel, que soporta diseo de
estructura y orientacin a objetos. Se basa en el lenguaje de programacin
ObjectPascal, entre sus beneficios estn la facilidad de leer el cdigo sin perderse,
rpida Compilacin, y el uso de Mltiples Units para programacin Modular.
3. Comenzando
Importante sobre Windows.
Bien, primeramente me gustara aclarar que esta gua esta hecha para usuarios que
tengan conocimiento del trabajo y manejo del Sistema Operativo Windows.
Supongo que Ud. Conozca como manejar ventanas, usar programas, etc. En fin que
sepa Trabajar en Windows como un usuario normal.
Funcionamiento de Windows.
Debemos saber que Windows gestiona sus recursos (Mouse, Teclado, Pantalla) a
travs de mensajes, es decir cuando se mueve el ratn Windows enva un mensaje
que diga que se movi el ratn, entonces es tarea de la aplicacin en curso que
hacer con el movimiento del ratn; la aplicacin puede ejecutar un cdigo, cambiar
una propiedad, etc.; eso depende con fin que se haya realizado la aplicacin.
Principios de la Teora del Delphi
Visualizacin del Delphi

-2-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

VCL (Visual Component Library o Librera de Componentes Visuales).

Delphi utiliza una librera de componentes llamada VCL (Visual Components Library)
que nos brinda una serie de objetos y que nos da la posibilidad de utilizar los
objetos sin necesidad de llamar a las distintas API de Windows para que dibujen en
pantalla el componente, podremos adems manipular a nuestro antojo el
componente, cambindole las propiedades como el nombre, el Caption o cosas
as..., adems de poder controlar de una manera muy fcil los distintos eventos que
podra generar. A la hora de trabajar con los componentes mediante cdigo, la
sintaxis es la siguiente:
NombreDeComponente.PropiedadATrabajar

Imspector de Objetos (Object Inspector)

-3-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Se trata del Inspector de


Objetos,
gracias
a
l
podemos cambiar de una
manera rpida fcil y visual
las propiedades de los
distintos
objetos
que
vayamos insertando en el
programa.
Adems
y
gracias a l podemos
controlar de forma fcil los
distintos eventos, para ver
los posibles eventos de un
objeto
selecciona
la
pestaa "Events", y para
poder modificar el evento
haz doble clic sobre el,
ahora aparecers en una
especie de editor de textos
llamada Explorador de
Code (Code Explorer)

Explorador de Cdigo (Code Explorer)

Veamos que en esta imagen hemos sealado unas palabras en un cuadrado verde,
vamos a explicar que son estas palabras.

-4-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)


Estas palabras se llaman Palabras Reservadas, es decir que son palabras que Delphi
las reconoce como parte de lo que el utiliza para reconocer el cdigo. A
continuacin explicaremos las Palabras Reservadas puestas en la Imagen:
Unit : Hace referencia al nombre del documento de cdigos.
Interface : Hace constar que lo que le sigue a este palabra es parte de la interfaz
del formulario.
Uses : En ella especificamos los distintos mdulos que cargara nuestro programa y
que se incluirn en el ejecutable una vez compilado para que est tenga una
independencia total del compilador, cuando insertamos un componente se aade a
ella la clave para que se cargue el modulo que permite acceder a ese componente,
asi por ejemplo si aadimos un componente de la pestaa "Estndar" al ejecutar el
programa se aade automticamente la palabra "StdCtrls".
Type : En esta seccin se especifican los distintos objetos con su correspondiente
clase (NombreComponente:TipoComponente), Ej:(Label1:TLabel), y los distintos
procedimientos que se ejecutaran en nuestro programa. Al final de ella veras 2
palabras clave "Private" y "Public", que sirven para definir variables privadas o
publicas.
Var : Sirve para definir variables en cualquier sitio, si se pone en ese lugar,
definiremos una variable que puede ser utilizada en todos los procedimientos del
programa, si la definimos dentro de un procedimiento solo se podr usar en l.
Implementation : Hace constar que el cdigo a continuacin forma parte ya de la
codificacin del programa, es decir el cdigo que va a utilizar el programa para
hacer funcionar a los componentes, en fin, para el funcionamiento para el que se va
a crear
3.3.4.1 Operadores Aritmticos
Operador:
Menor que...
Mayor que...
Igual que...
Desigual...
Menor o igual...
Mayor o igual...
Asignacin...
Comparacin...
Division...

Delphi
a<b
a>b
a=b
a <> b
a <= b
a => b
a := b
a=b
a/b

C++
a<b
a>b
a=b
a != b
a <= b
a => b+
a == b
a=b
a/b

Visual Basic
a<b
a>b
a=b
a <> b
a <= b
a => b
a=b
a=b
a/b

Multiplicacin...

a*b

a*b

a*b

3.3.4.2 Comentarios
En delphi como en cualquier lenguaje de programacin existe los comentarios,
estos proporcionan la posibilidad de aadir a las lneas del programa, pequeas
anotaciones sobre como va el diseo del programa, por ejemplo podemos poner en
una lnea un comentario diciendo que es lo que sigue fallando para que al retomar
el trabajo al da siguiente sepamos por donde empezar, en delphi existen 2 tipos
principales de comentarios. Y son: Los que empiezan por " // " sirven para comentar
una lnea y los que estn delimitados asi: " {} " Sirven para poner un prrafo de
comentario.
4.0 Comenzado a Programar

-5-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

4.1 Variables
Una pieza clave en todas las aplicaciones son las variables y el buen control de
estas. Una variable puede contener varios tipos de datos y pueden ser modificadas
en todo el programa si las declara como globales, o bien por todos los formularios
(Si las declara publicas) o en un determinado evento (Si las declara en ese evento).
Para definir una variable pblica has de remitirte a la seccin "Public" que
encontraras debajo de "Type" y utilizar la siguiente sintaxis:
Variable : Tipodevariable;
Si lo que quiere es definir una constante que no vaya a variar en todo el programa
utilice esta sintaxis:
Const Variable: Tipo = Valor;
Pero si lo que quiere es definir variables que puedan ser modificadas a lo largo del
programa, deber saber que en delphi existen varios tipos de variables, las ms
importantes son:
String
Integer
Byte
Bolean
Date
Time
Char
Variante

Cadena de texto
Numero
Byte de un archivo
Afirmacin o Negacin (True or False)
Una Fecha
Un Tiempo
Carcter.
La variable comodn, puede almacenar todo tipo de datos.

4.2 Convertir Variables


En delphi al contrario que en Visual Basic, necesitaremos definir las variables y
adems utilizarlas solo con los datos apropiados, asi por ejemplo una variable tipo
integer (N Entero) no podemos situarla en el texto de un edit, aunque este edit
solo contenga nmeros, para permitir esto, deberemos convertir el contenido de la
variable a String; es decir que Delphi reconozca que el Numero que va a insertarse
en el Edit sea tipo String.
A continuacin les pongo una tabla con las conversiones mas utilizadas...
IntToStr
StrToInt
IntToHex
StrToDate
StrToTime
DateToStr
TimeToStr

Convierte
Convierte
Convierte
Convierte
Convierte
Convierte
Convierte

Integer a Texto
Texto a Integer
un Entero a un Hexadecimal
Texto en una Fecha
Texto en una Hora
Fecha en Texto
Hora en Texto

4.3 Propiedades de los Objetos


Es importante conocer tanto los eventos propios de cada objeto como sus
propiedades, por eso aqu les voy a mostrar una serie de propiedades generales
que creo se adaptan a todos los objetos posibles.
Caption

Especifica el titulo del objeto o el texto que contendr

-6-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)


Cursor
Default (Botones)
Enabled
Font
Heigth
Width
Hint
ShowHint
Visible

Especifica el cursor que se mostrara cuando el ratn este sobre ese


objeto
Especifica si ese botn Ser el que se ejecute solo con dar un enter
o no.
Especifica si el objeto estar accesible al usuario
Pos eso la fuente del texto de ese objeto
El alto del objeto
El ancho del objeto
El texto de explicacin que mostrara cuando el ratn este sobre l
Mostramos o no la hint?
Especifica si Ser visible o no.

4.4 Eventos
Un evento es la accin que se desencadena tras por ejemplo pulsar un botn, los
eventos estn controlados por los mensajes que emite Windows, asi por ejemplo
cuando pulsamos un botn, se produce un mensaje, el cual es recibido e
interpretado por nuestro programa que hace que se desencadene el evento al que
hace referencia ese mensaje.
Algunos de los eventos mas comunes y presentes en casi todos los objetos son:
OnCreate
OnCloseQuery
OnDestroy
OnKeyPress
OnChange
OnClick
OnEnter
OnExit

Es el que se produce al crear el objeto


Es el que se produce al cerrar la aplicacin
Se produce al destruir el objeto
Se produce al presionar una tecla sobre el objeto en el que
estemos
Se produce al cambiar alguna cosa del objeto (propiedades,
contenido....)
Se produce al hacer click sobre el objeto.
Se produce al situar el foco en un objeto
Se produce cuando el objeto pierde el foco

4.5 Procedimientos (Procedure) y Funciones (Function)

Los procedimientos y las funciones son rutinas que se encargan de ejecutar


una determinada accin, asi por ejemplo podemos crear un procedimiento
que se encargue de elevar a maysculas un texto, y luego llamarle para que
convierta el texto que queramos.
Procedure ElevaMayusculas(Texto:String);
begin
Uppercase(texto);
end;

{Y para llamarla en cualquier parte del programa haremos algo asi}


ElevaMayusculas ('minusculas');
// Elevamos a Mayusculas el texto
minisculas'.
Este tipo de estructuras es util para realizar determinadas acciones que se
ejecutaran una y otra vez a lo largo del programa.
4.6 Condiciones

-7-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

En casi todos los programas se utilizan condiciones, es decir:


"Si algo se cumple entonces haga algo, sino otra cosa"
Su sintaxis es realmente sencilla (casi intuitiva):
Lo explicado anteriormente se puede codificar de la siguiente manera:
If Condicin=Verdadera then
CODIGO
Else
CODIGO
Otra forma de expresar las condiciones es: ' case of ', lo que hace es
seleccionar un identificador y ver que valores toma y en relacin a ello optar
por hacer algo o hacer otra cosa, este tipo de condicin no acepta como
identificador ni como valores a cadenas de texto, su sintaxis es la siguiente:
Lo explicado anteriormente se puede codificar de la siguiente manera:
case Identificador of
1 : begin Showmessage ('Hola'); end; // En caso de que tome el valor 1,
muestra un mensaje diciendo hola.
2 : begin Showmessage ('Adios'); end; // En caso de que tome el valor 2,
muestra un mensaje diciendo adios.
end; // Acabamos
4.7 Bucles o Ciclos
Un bucle sirve para decirle al programa que ejecute cierta operacin
mientras una condicin se cumple.
FOR
For I:= 0 to 100 do // Desde el contador (i) igual a 0 hasta 100 hacer (si
fuera downto ira para abajo)
begin
CODIGO; // El cdigo que se ejecutara...
End; // Acabamos el bucle.

WHILE
While Condicin do // Mientras se cumpla la condicin...
begin
CODIGO; // El cdigo que se ejecutar...
End;
// Acabamos el bucle.
REPEAT-UNTIL
Repeat

// Repite...

-8-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

V := v + 1; // Este codigo
Until
// Hasta
v > 100;
// Que v > 100
5.0 Primer Programa
5.1 Hola Mundo
Bien, casi siempre que leemos una gua de programacin, nos damos
cuenta que siempre se empieza con un programa llamado Hola Mundo,
que lo nico que hace es mostrar un mensaje que diga Hola Mundo.
Bien, primeramente, en teora lo que nuestro programa va ha hacer es que
al pulsar un Botn muestre un mensaje que diga Hola Mundo, para eso
haremos que lo muestre mediante la funcin ShowMessage, que trae
Delphi incorporada. Esta funcin se puede realizar mediante la Unit
Dialogs que se declara en la Clusula Uses. Pero para nosotros no es
necesario, Delphi no las declara automticamente, en resumen, Delphi hace
el trabajo sucio. Bien, primero que todos aprenderemos a abrir el Delphi. Si
ya lo tenemos instalado, vamos a Inicio, hacemos click en Programas o
Todos los Programas, luego vamos al submen Borland, y hacemos click
en Delphi 7.
Luego que carge la aplicacin veremos una pantalla asi:

Lo que vemos a la izq. y arriba ya lo explicamos en captulos anteriores, ahora les


explicare lo que vemos en el medio.
5.1.2 Formulario

-9-

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Quizs para algunos, esto parece una ventana comn y corriente con
puntitos en el medio, pues estn en lo cierto, pero se debe decir que es un
ventana en fase de diseo, los puntitos forman una rejilla (grid). Esta
ventana tiene un botn de Cerrar, Maximizar, Minimizar, un Icono (Icon), y
un Nombre (Caption).
Para comenzar, aadiremos un Botn, cuyo componente es Button,
buscamos el siguiente icono en la paleta Estndar del VCL, y hacemos click
en el formulario.

- 10 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Luego de hacer click en el Formulario, veremos que se crea una especie de


Botn, como los de Windows 98, con el Nombre Button1. Generalmente
cuando creamos un Componente se crea con el nombre del componente y
el numero de componente de este tipo que el representa, por ejemplo, si
aadimos otro Botn veremos que su nombre dice Button2.
Ahora Voy a explicarles algo que muchos principiantes se preguntan,
Caption = Name?
Todos los componentes tienen una propiedad llamada Name, que es la
propiedad que les permite identificarse de los dems componentes, esta
propiedad se puede cambiar para facilitarnos la etapa de programacin del
cdigo, por ejemplo: tenemos una aplicacin con muchos botones, entonces
nos damos cuenta que seria muy engorroso trabajar con 30 botones
identificndolos como Button1, Button2, Button3, etc., entonces podemos
cambiarle el nombre a estos botones ha algo mas lgico y fcil de recordar,
si tenemos un botn que lo que haga es cerrar el programa, le podemos
cambiar la propiedad Name a BotonCerrar .
Ahora, la propiedad Caption se refiere al texto que va mostrar un
componente visual que muestre un texto al usuario, por ejemplo el botn
que insertamos dice Button1, pero si en la propiedad Caption ponemos Hola
Mundo, veremos que dice Hola Mundo en el formulario, pero sin embargo no
cambio la propiedad Name no cambio, el Boton Hola Mundo, sigue
llamndose Button1, y la hora de programar cdigo, nos debemos referir a
el como Button1.
Bien, continuemos con el programa Hola Mundo, ya pusimos el botn, pero
ahora donde ponemos el cdigo que nos permitir mostrar el mensaje, bien
ahora seleccionamos el Button1, y en la ventana Object Inspector hacemos
click en Events, luego veremos algo as:

- 11 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Ahora, vemos que hay mas eventos que los que


explicamos en el apartado eventos, pero esos los
explicaremos mas tarde, ahora nos interesa el
evento OnClick, porque la aplicacin nos va a
mostrar el mensaje cuando hagamos click sobre el
Botn, entonces hacemos doble click en el campo
de texto al lado del evento on click, y nos
aparecer el Code Explorer, algo que nunca esta
cerrado, solo estaba detrs del Form1

Ven que dentro del mismo se crea un Procedimiento que hace referencia al
evento onClick del Button1, que esta en el Form1.
Procedure TForm1.Button1Click(Sender: TObject);
Begin
End;
Bien aqu dentro de ese evento le diremos a la aplicacin que Muestre el
Mensaje Hola Mundo:
Lo haremos de la siguiente manera, dentro del Begin y el End, escribiremos
los siguiente
ShowMessage(Hola Mundo);
Bien, explicare detalladamente la funcin ShowMessage, esta funcin lo que
hace muestra un dialogo igual a los de Windows, con el botn Aceptar, y un
botn de cerrar, el nombre de este dialogo ser el nombre de la aplicacin,
en este caso Project1, porque aun no lo hemos declarado.
Para compilar nuestro programa hay diferentes maneras, una, haciendo
click en el botn Run en la barra de herramientas

- 12 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

O Bien presionando la tecla F9.


Luego de esto veremos lo siguiente:

Veamos que los puntitos desaparecieron, bien, les habia dicho que
anteriormente el formulario estaba en forma de diseo, ahora esta
corriendo como una aplicacin, o lo que se dice en Ingles RunTime. Ahora
si hacemos click en el Botn, veremos un mensaje diciendo Hola Mundo

- 13 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Muy bonito, aunque no debemos presumir si logramos hacer esto,


tcnicamente, solo les he enseado las bases de la programacin en Delphi.
5.1.2.1 Algunas Propiedades de los Formularios
Antes de seguir con este curso debera explicarles algunas propiedades de
los formularios que pienso yo le harn el trabajo mas fcil.
Align: Propiedad de Alineamiento, lo que significa que su valor le dir al
Delphi, en que posicin justificada de la pantalla saldr este formulario. Este
puede tomar los siguientes Valores:
alBottom = Parte Baja de la Pantalla
alCustom = Parte en que estaba en la fase de diseo
alClient = Toda la Pantalla
alNone = Parte en que estaba en la fase de diseo
alTop = Parte alta de la Pantalla
alRigth = Parte derecha de la Pantalla
alLeft = Parte izquierda de la Pantalla
AlphaBlend: Esta propiedad puede ser True o False, lo que significa que si
esta en falso no se tomar en cuenta, pero de lo contrario esto significara
que el Formulario y todo en su interior ser medio transparente de acuerdo
al valor de la propiedad que le Sigue AlphaBlendValue, esta trae un valor
numrico, por defecto trae el 255, que es el mximo que admite, es decir, si
esta en 255, el formulario se ver normal, si es menor se ira haciendo
transparente la imagen.
BorderIcons: Es una propiedad que como su nombre lo dice son los iconos
del borde, es decir los iconos del rea de cerrar, minimizar, maximizar un
formulario. Este trae cuatro propiedades internas:
biMaximize: Botn de Maximizar
biMinimize: Botn de Minimizar
biSystemMenu: Indica si mostrar el submen(se explica mas adelante) al
hacer click derecho en el icono de la aplicacin, o en la barra de titulo.
Adems elimina los botones de Maximizar, Cerrar, y Minimzar
biHelp: Botn de Ayuda que traen algunas ventanas de Windows, cuando lo
pulsas el cursor te cambia a una flechita con un signo de ayuda.
5.1.3 Mensajes
Bien, ahora quisiera explicarles algo mas sobre los Mensajes. Para el
ejemplo Hola Mundo utilizamos la funcin:
ShowMessage(String);
Te habrs fijado que no te deja otra opcin que contestar, porque sino este
har caso omiso. Esa caracterstica de los cuadros de mensajes se llama
Modal, y en general es aplicable a todas las ventanas. Cuando se activa
una ventana modal el programa que invoc a esa ventana se detiene en
espera de que se cierre esta, y si es el caso devuelva un resultado, que
normalmente es la accin del usuario.

- 14 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Pero sin embargo podamos haber utilizados otras funciones mas complejas,
pero a su vez mas serias..
Los tipos de cuadros de mensajes que existen son:
1. ShowMessage
2. ShowMessagePos
3. MessageDlg
4. MessageDlgPos
5. MessageBox
1. ShowMessage
ShowMessage es el ms sencillo de todos ellos. El cuadro aparece por
defecto en el centro, el ttulo del mismo es el nombre de la aplicacin, el
texto lo indicamos nosotros, y tiene solo un botn.

2. ShowMessagePos
Esta tipo es igual al anterior pero tiene dos detalles ms, que son dos
valores que indican las coordenadas donde se mostrar el cuadro. Para
indicar unas coordenadas dentro de la pantalla tienes que conocer el
tamao de la misma. Estas coordenadas son Alto y Ancho. (Heigth y Width).
Respectivamente.
Pues a lo que iba, si pones Screen.Height, obtienes el valor del alto de la
pantalla, y lo mismo para Screen.Width pero para el ancho. As que el
ShowMessagePos necesita que le indiques el texto, y adems las
coordenadas, primero el ancho y luego el largo. Aade un nuevo botn al
proyecto y en su evento doble clic pon esta lnea:

begin
ShowMessagePos('Cuadro con Coordenadas', Screen.Width div
3,Screen.Height div 3);
End;
Veremos un resultado como este:

- 15 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Sin embargo, deben haber notado algo que no ha sido explicado en ese
cdigo, si de hecho hay algo que no explique, el uso del comando DIV, que
significa Dividir , en resumen lo que hacemos con Screen.Width DIV 3, es
Dividir por 3 el ancho de la pantalla por 3.
3. MessageDlg
A continuacin el MessageDlg, complicadito pero muy eficaz.
El primer dato que recibe la funcin es el texto que deseamos mostrar,
luego el tipo de cuadro que mostraremos segn una lista predefinida por
Windows, el tercero es son los botones que se van a mostrar, y para
terminar el cuarto es ndice que esta relacionado con la ayuda de la
aplicacin que creemos si colocamos un botn de ayuda en el cuadro.
Los tipos de cuadro que exciten estn indicados en la lista que a
continuacin muestro, ten en cuenta que segn el tipo de cuadro Windows
pinta un icono en tu cuadro.

mtIformation
mtWarning
mtError
mtConfirmation
mtCustom

Los tipos de botones que podemos poner son los siguientes:

- 16 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

mbYes
mbNo
mbOk
mbCancel
mbAbort
mbRetry
mbIgnore
mbAll
mbHelp

Cuando pones los tipos de botones que deseas debes ponerlos entre
corchetes ([ ]), y seguidos de una coma. Otra opcin es poner un serie de
botones predefinidos, pero si lo haces no pongas los corchetes. Los tipos de
botones predefinidos son:

mbYesNoCancel
mbAbortRetryIgnore
mbOkCancel

Para probar esto pon el siguiente cdigo en el evento onClick de un Boton:


If MessageDlg ('MessageDlg?', mtwarning,[mbyes,mbno],0) = mrYes then
ShowMessage('Si')
else
ShowMessage('No')
end;
Observars el sgte. Resultado

Veras que si pulsas Yes, usando la opcin ShowMessage mostramos un


mensaje que diga Si, o de lo contrario No. Esto significa que si pulsamos si
podemos decirle que ejecute cualquier cdigo.
Observa que aqu hay ms novedades, y es que MessageDlg devuelve el
valor del botn pulsado por el usuario. El valor devuelto es una constante
que puede tomar los siguientes valores:

mrNone

- 17 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

mrAbort
mrYes
mrOk
mrRetry
mrNo
mrCancel
mrIgnore
mrAll

Observa que el valor de la constante tiene el nombre del botn pulsado, as


en el ejemplo cuando es pulsado el botn mbYes, el valor devuelto es
mrYes. Ten cuidado no vayas a esperar la pulsacin de un botn que nos
has puesto en el cuadro, porque nunca te devolver ese valor la funcin.
4. MessageDlgPos
La variante de MessageDlg es MessageDlgPos, que es igual pero tiene un
par de datos ms, que es, al igual que ShowMessagePos, las coordenadas
donde se situar el cuadro cuando se muestre. Su formato es:
begin
MessageDlgPos ('texto' , tipo de cuadro, botones, ndice de ayuda,
coordenada X, coordenada Y);
End;
Te habrs dado cuenta que todos estos cuadros estn en ingls, pero
tenemos la opcin de ponerlos en castellano. Para eso utiliza la opcin
sgte.:
5. MessageBox
Application.MessageBox('Mensaje','Titulo',mb_okCancel+mb_IconExclamatio
n);
El cdigo de arriba muestra un resultado como este:

- 18 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Fjate , primero el mensaje a mostrar, luego el titulo, despus los botones


que queremos poner, y el icono tambin a nuestra voluntad.
Ahora, se preguntaran, porque este cuadro muestra el mensaje de los
botones en espaol (aceptar y cancelar), y no en ingles (Yes y No) como los
dems; pues muy fcil, el Cuadro de Mensajes que se llama usando el
cdigo Application.MessageBox hace una llamada al API de Windows, el cual
le dice que Windows esta en Espaol, y le da el texto predeterminado para
los botones
Ahora, para comprobar la respuesta de un botn, utilizaremos los sgtes.
Cdigos.

IdAbort

IdCancel

IdIgnore

IdNo

IdOk

IdRetry

IdYes

Los botones que puedes utilizar son solo las combinaciones de botones
predefinidas que list ms arriba. Y los tipos de iconos son:

Mb_IconAsterisk

Mb_IconError

Mb_IconExclamation

Mb_iconHand

Mb_IconInformation

Mb_IconQuestion

Mb_IconStop

- 19 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Mb_IconWarning

Ejemplo de Comprobacin:
CaseOf
Utilizando el mtodo Case . Of . que significa, en caso que esto
haga esto. Para especificar luego del Of, que hacer cuando se pulse cierto
botn.
begin
case
Application.MessageBox('Mensaje','Titulo',mb_okCancel+mb_IconExclamatio
n) of
ID_OK: ShowMessage('Aceptar');
ID_CANCEL: ShowMessage('Cancelar')
end;
end;

6.0 Conociendo Componentes


6.1 Los Mens (MainMenu)

- 20 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Bien, asi es como se ve un men en la


mayora de las aplicaciones informticas hoy
en da, estos mens que tanto nos ayudan en
la mayora de los programas, contienen gran
parte de los comandos para el uso y
personalizacin del programa.
Delphi pone a nuestra disposicin una
herramienta para facilitarnos la tarea,
adems de tratar cada men o submen
como un si fuese un componente ms. Para
empezar a trabajar con los mens, lo primero es colocar un componente
TMainMenu, en el formulario. As que desde la pgina Standard de Delphi,
pincha el segundo componente de izq. a der.; luego hacemos click en el
lugar del formulario donde queremos agregarlo, se creara un componente
llamado MainMenu1, cuyo icono en el Form ser el que esta circulado en
rojo en la imagen de arriba. Si hacemos doble click sobre el veremos algo
parecido a esto.

Bueno, esta la fase de diseo del Men. Delphi nos facilita esta tareta,
porque seria muy difcil ir declarando por cdigo cada uno de los tems del
Men .
Bien, vamos a crear un men simple, bueno al hacer doble click en el icono
del Men nos encontramos con la imagen de arriba, y se encuentra
seleccionado un rectngulo, el mismo es el primer tem del Men, es decir,
es un componente que tiene propiedades, por lo que en el Object Inspector
buscaremos su propiedad Caption, y pondremos hay el nombre que quieras,
en este caso por &Archivo bien, te preguntaras porque &, este smbolo,
Delphi lo reconoce como la rayita que subraya a una letra en los mens,
para poder navegar por los mismos usando la tecla ALT. Al escribir &Archivo
y pulsar ENTER, se crea automticamente un tem debajo de el que ya
tenamos, en el cual vamos, con el mismo procedimiento ha escribir &Salir,
para poder salir del programa mediante ese Men. Bien, si hacemos doble
Click en el Men Salir, (Salir1) nos saldr el Code Explorer, para poner un
cdigo refirindose al evento OnClick, en este caso usaremos una funcin
para cerrar el programa.

- 21 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Para esto existen varias formas. Si el formulario a cerrar, es el formulario


principal de la aplicacin, basta con decir al evento
Begin
Form1.Close; // Form1, puede variar de acuerdo al nombre del Formulario
End;
En caso de que no sea el formulario principal Podemos decir:
Begin
Application.Terminate; // Le dice a la Aplicacin que termine
End;
Ahora ejecuta tu aplicacin y vers que al pulsar sobre el men Archivo, se
te desplegara un men, que dir Salir. Si pinchamos aqu, se cerrar la
aplicacin y volvers al ambiente de diseo de la aplicacin
ShortCuts
Supongo que sabes que es un ShortCut, es un atajo por el teclado a una
accin predefinida por el programador para una accin.
Bueno Delphi nos pone a nuestra disposicin una propiedad en los mens
para eso. Seleccionamos el tem del Menu para hacerle el ShortCut, y luego
en el Object Inspector buscamos la propiedad ShortCut, y le ponemos el
valor que queremos.

Hint: Si quieres crear en un men un separador (una rayita que separe un


tem de otro), solo basta crear un tem que cuyo Caption sea - un guin.
Y vers que en la fase de diseo saldr un rayita larga.
6.1.1 Los Submens.

- 22 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

El trabajo con los submens es igual de los mens, solo que para crearlos
debes hacer click derecho y vers algo as:

Entonces haces Click en el Men CREATE SUBMENU, y automticamente


se crea un submen, el cual tratas igual que un Men.

6.1.2 Mens Emergentes (PopUpMenu).

- 23 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Todo lo que te he contado hasta ahora es aplicable a un men tipo


emergente (PopUp), son iguales, pero lo nico que los diferencia es que los
mens emergentes se despliegan al pulsar sobre un control con el botn
derecho del ratn. Pues para usar un men de este tipo lo nico de que
debes hacer es colocar un control de este tipo sobre el formulario que
contiene el control que har uso del men emergente (puede ser casi
cualquier control, o el mismo formulario), configralo como si se tratase de
un men normal, y ahora en el control que deseas que tenga este men
emergente, seleccinalo en su propiedad PopUpMenu, y ya esta.Prueba tu
programa y pulsa sobre el componente o formulario con el botn derecho
del ratn.

6.2 Otros Componentes

- 24 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

La imagen de Arriba muestra otros componentes muy tiles del Delphi,


todos estn en la paleta Estndar:
Label1: Este componente es una etiqueta, nos sirve para poner texto en
nuestro formulario
Edit1: Este componente es un cuadro de texto, nos sirve para escribir texto
en Runtime y luego poder utilizarlo para otros Fines.
Memo1: Es un cuadro de texto para editar ficheros .txt, o para mostrar un
texto largo.
ComboBox1: Es como una lista de varios cadenas de textos que se
almacenan en un men desplegable.
ListBox1: Es el cuadro blanco abajo del ComboBox1. Este es una lista de
cadenas de textos pero se muestran todas como si fuera una tabla de una
columna (Se puede codificar para 2 o ms columnas)
GroupBox1: Componente que sirve para poner dentro de el componentes
que se identifiquen para una cosa
CheckBox1, CheckBox2 : Casillas de verificacin que al presionarlas se
marcan con una X. Esenciales para editar propiedades.
RadioButton1, RadioButton2: Botones de opcin, cuando presiones uno
se desmarca el otro siempre y cuando el otro este en el mismo GroupBox, o
en un formulario. Si tienes dos GroupBox en un formulario y dos
RadioButton en cada uno de ellos, la seleccin de un RadioButton de un
GroupBox no interfiere en la de los RadioButton del otro GroupBox.

7.0 Nuestra primeras Aplicaciones.

- 25 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

7.1 Procesador de Textos


Bien, comenzar a ensearles como crear un procesador de textos simple, y
luego otras cosas para que el mismo sea ms complicado.
Un Procesador de textos, es una aplicacin que permite al usuario crear y
editar texto, guardarlo, abrirlo, etc. Nuestra aplicacin constara de todas
esas funciones, pero se las enseare por partes.
Este procesador solo nos permitir editar documentos con la extensin txt
Primero a la Propiedad Caption del formulario pnganle Procesador de
Textos. Para hacer esto, seleccionen un espacio del formulario, y busquen
en el inspector de propiedades la propiedad Caption, y escriban lo que les
dije.
7.1.1 Apariencias y Mens
Primeramente insertaremos un Men (MainMenu), esta en la paleta
Standar, en su propiedad NAME, le pondremos MenuPrincipal. Crearemos
un men con la siguiente estructura.

Se darn cuenta de que hay cuatro Mens, y ninguno de sus tems tiene un
ShortCut activado, lo he dejado as para que usted pueda ponrselos como
usted quiera.
Bien ahora insertaremos un Componente Memo de la Paleta Estndar, que
ser donde se escribir el texto. Ahora, en su propiedad Align pondremos
alClient, para que cubra toda el formulario. Luego en la Propiedad Lines
(del tipo StringList, que guardara una lista de string) la editamos haciendo
clic en el boton () que aparece, y al salir el String List Editor le borramos lo
que dice Memo1.
Luego de esto el formulario se vera as:

- 26 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

7.1.1.1 Archivo. Bien, ahora comenzare a explicarles por la parte ms


fcil.
Primero el Boton Abrir del Men Archivo.

Existen varias formas abrir un documento txt, en este caso


utilizaremos un OpenDialog,
componente existente en la
paleta Dialogs. Inserten uno en la aplicacin.
Luego vern que tienen unas propiedades no muy comunes.
Les explicar las siguientes:
FileName: Le dice a la aplicacin cual ser el
archivo al cual har referencia este dilogo.
Filter: Edita las extensiones de archivo que el
dialogo va a buscar en RunTime.
InitialDir: Especifica cual ser el directorio que se
abrir cuando se cargue el OpenDialog
Title: Indica el titulo que tendr el Dialogo, si lo
dejas en blanco solo mostrara el texto Abrir.

Un dialogo se ve as:

- 27 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Bien, en nuestra aplicacin utilizaremos las propiedades:


FileName, Filter y Title
Primeramente vamos a la propiedad Filter (), y se nos abrir una pantalla
llamada Filter Editor (Editor de Filtros).
Donde dice Filter Name
ir el texto que se va a
mostrar en el ComboBox
Tipo del Dialogo, y Filter,
las extensiones que va a
mostrar el.
Ahora
pondremos
siguiente:

Filter Name

Filter

Documentos de Texto (*.txt)

| *.txt

Todos los archivos (*.*)

| *.*

- 28 -

lo

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Luego insertaremos el Componente SaveDialog,


, tambin en la paleta
Dialogs, que sus propiedades casi igual a las del OpenDialog ,este
componente nos servir para guardar el documento, y en su propiedad
Filtro pondremos la siguiente estructura
Filter Name

Filter

Documentos de Texto (*.txt)

| *.txt

Todos los archivos (*.*)

| *.*

Bien en el men archivo existe un elemento llamado Nuevo el cual como


todos saben en Procesador de Texto lo que hace es crear un nuevo
documento, o sea borrar lo que tiene el memo escrito.
Entonces en el evento OnClick del elemento nuevo, o sea hacemos click en
Nuevo en edicin:
Entonces, esto te abrir el Explorador de
cdigos con el cursor en la lnea autocreada
para insertar o escribir cdigo para el evento
OnClick del elemento nuevo.
Para hacer esto pondramos lo siguiente:
Begin
Memo1.Clear; //Limpia el memo
End;
Para programar el elemento guardar, hacemos
click en el elemento guardar para editar su evento OnClick. Lo que
haremos ser utilizar el Componente SaveDialog1 que ya hemos insertado,
y configurado para el procesador de texto.
El procedimiento se vera as
begin
If SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
end;
Con lo anterior lo que hacemos es Que si ejecutamos el SaveDialog1 (En
este caso lo estamos ejecutando con la primera lnea), vamos a hacer lo que
le sigue, utilizando la condicin If Then . Entonces, como
funciona.Mediante el uso de la funcin SaveToFile vamos a guardar las
Lineas del Memo con el nombre escrito en la propiedad FileName del
SaveDialog agregndole la cadena de texto .txt al final. Espero que hayan
entendido (esto ocurre en la 2da lnea, si saben algo de ingles se darn
cuenta).
Ahora, porque hay que agregarle +'.txt' al final. Pues para ser sincero, lo
que hago es que el Nombre del fichero (filename) le agrego la extensin,
porque no se porque el SaveDialog no me la aade automticamente aun
declarndola en el Filter. Si alguien sabe que me escriba y que me diga.0

- 29 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Ahora el Elemento Abrir seria parecido, solo con algunos cambios. Primero
el Cdigo luego la explicacin
Begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Primero ejecutamos el OpenDialog1 y luego mediante la segunda lnea,
Cargamos desde un fichero, las lneas del memo, El nombre fichero sera el
que esta escrito en la propiedad FileName del OpenDialog. Lo pueden ver en
el Lines.LoadFromFile (RUTADELFICHERO), la ruta en este caso es devuelta
por el OpenDialog.FileName.
Ahora para salir del Programa utilizaremos la funcin Terminate. Que la
usaramos en el Elemento Salir del men archivo. Esta funcin lo que hara
sera Terminar la Aplicacin
Begin
Application.Terminate;
End;
7.1.1.2 El men edicin ser el siguiente. Con las Opciones
Estas opciones son de lo ms fciles asi que no me voy a
detener mucho en ellas. Espero que uds. Tengan
conocimientos en Ingles, aunque sea el ms minimo. De
todas formas, les aclaro algo:
Clipboard: Se refiere al portapapeles de Windows, si a
ese espacio en memoria en donde se copia todo lo que le
das Ctrl+C o Click Derecho Copiar. Eso es el Portapapeles
(Clipboard)
Cut, Copy, Paste, SelectAll, Undo: Cortar, Copiar,
Pegar, Seleccionar Todo, Deshacer respectivamente. Solo
Aclarando
Antes de poder hacer uso del portapapeles debemos decirle a la aplicacin
que se va a usar el Clipboard, para esto, aadimos ClipBrd a la clausula
Uses de la unit, o sea

Luego haciendo click en los elementos del men correspondientes


agregamos los siguientes cdigos:

Deshacer:

- 30 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Begin
Memo1.Undo; //Deshacer cambios en el memo1
End;
Cortar:
Begin
Memo1.CutToClipBoard; //Corta el texto seleccionado en el Memo al
Clipboard
End;
Copiar:
Begin
Memo1.CopyToClipBoard; //Copia el texto seleccionado en el Memo al
Clipboard
End;
Pegar:
Begin
Memo1.PasteFromClipboard; //Pega el texto existente en el Clipboard
End;
Seleccionar Todo:
Begin
Memo1.SelectAll; //Selecciona todo el texto en el memo
end;
Eliminar:
Begin
Memo1.ClearSelection; //Borra la seleccin del memo
End;
Insertar Fecha:
Begin
Memo1.Lines.Add(DateTimeToStr(Now)); //Insertamos la fecha actual
End;
Ahora vamos explicar como funciona lo de insertar la fecha, aqu vemos dos
cosas nuevas. Primero la Funcion Add del componente Memo (Aunque
existe en muchos componentes tambin), que sirve para Agregar una lnea
al memo. Esta funcin se le puede especificar una lnea, con contenido
String; Lo segundo Nuevo, es la variable Now, que contiene con formato
DateTime la Hora y Fecha actual del sistema. Entonces lo que vamos a
hacer es insertar esa hora en el memo, o sea poner el contenido de la

- 31 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

variable Now en el memo, pero que pasa, no podemos solamente poner


memo1.Lines.Add(Now); porque? Pues porque Now no esta en formato
String, y nos dara error al compilar el programa. Entonces Hacemos uso de
la funcin DateToStr (Date To String o Fecha to Cadena de texto), funcin
que explicamos al principio de este curso, que sirve para convertir fecha a
cadena de texto.
Ahora podemos compilar el programa y ver el resultado al pulsar en
Insertar Fecha:

7.1.1.3 Estilo. Ahora explicaremos el men estilo.


Este men no es muy necesario, porque lo que va a hacer es cambiar el
Color del Memo, y el tipo y tamao de letra del documento, algo que no es
muy necesario porque este no se guarda con el fichero .txt porque es texto
sin formato. Esto les servir para la hora de escribir que vean mejor el texto:
Lo Primero que harn ser insertar el Dialogo FontFialog y el ColorDialog
(ambos en la paleta dialogs). El primero para la fuente, y
el segundo para el color del memo.
Ya tenemos el men creado, lo hicimos hace rato xDD.
Bien solo nos queda programarlos, cosas que es muy fcil de
hacer y de entender.
Primero el Elemento Fuente:
En el evento OnClick escribiremos lo siguiente
begin
If FontDialog1.Execute then
Memo1.Font := FontDialog1.Font; //Igualando la fuente del Memo a la del
FontDialog1
End;
Primero ejecutamos el FontDialog1. Luego le decimos a la propiedad Font
del Memo que ser igual a la propiedad Font del FontDialog1. O sea que
luego de seleccionar una fuente en el FontDialog1 se cambiara la fuente en
el memo1.
Ahora el Elemento Color:
En el evento OnClick escribiremos lo siguiente
begin
If ColorDialog1.Execute then
Memo1.Color := ColorDialog1.Color; //Igualando el color del Memo al del
ColorDialog1
End;

- 32 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Primero ejecutamos el ColorDialog1. Luego le decimos a la propiedad


Colordel Memo que ser igual a la propiedad Color del ColorDialog1. O sea
que luego de seleccionar un color en el ColorDialog1 se cambiara el color en
el memo1.
7.1.1.4 Ayuda. Ahora explicaremos el men ayuda
Aqu en el Men Ayuda solo crearemos un dialogo de ayuda Acerca de,
para que pongas los datos del Autor, versin e icono del programa. Estoy
seguro que todos saben que es.
Primero crearemos un formulario Cmo? Pues yo les explico, Vayan al
Men File del Delphi, submen New, Form:
Bien, te saldr un formulario
vacio, en el cual vas a poner esa
informacin.
Utiliando
los
componentes Label e Image
vamos a darle forma a este
formulario.
Primero
en
la
Propiedad Caption del Formulario
vamos a ponerle Acerca de.
Luego Cambienle el tamao al
formulario,
pnganlo
mas
chiquito.
Bien ahora vamos a insertar el texto que quieras con el componente label,
que ya les explique al principio. Ahora, lo que es nuevo. El componente
Image, que como su nombre lo indica Imagen, sirve para mostrar imgenes.
Este componente lo podemos encontrar en la paleta Additional.
Ese que tiene el icono de un paisaje. Lo
insertamos. En el formulario Acerca
De(form2)
Entonces en la propiedad Picture:
punticos,
y
buscamos
la
imagen

que

, tocamos los 3
queremos
mostrar
(

). Algo que sea relacionado


con el Procesador De textos. Luego de usar esto, reajustamos el tamao de
el componente en el formulario, para ajustarlo al tamao de la imagen.
Luego de poner lo labels, el Procesador se veria algo, as aunque con tus
datos:
Ese boton de salir, ser para
cerrar ese formulario, y volver al
editor. En el evento OnClick, le
pones lo siguiente:
Begin
Form2.Close; //Form2 es el
nombre del formulario, y close
para cerrarlo
End;

Ahora nos falta hacer para que al pulsar Acerca de en el men ayuda se
muestre este formulario nuevo. Primero en la Clausula uses del formulario 1

- 33 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

agrega: Form2, para que este sepa que va tener cdigo referente a este
formulario.
Entonces en el Elemento Acerca De pondramos lo siguiente:
Begin
Form2.ShowModal; //Mostrar el form2 como una ventana Modal
End;
ShowModal, no lo habamos, visto, sirve Para mostrar el formulario 2 sin la
posibilidad de activar la ventana del editor, es decir, el formulario 2 se lleva
el foco total de la aplicacin, o sea es el nico permitido a estar activo.
7.2 Procesador de Textos
El procesador de Textos que hicimos era una introduccin para que supiera
como trabaja, ahora le vamos a hacer al mismo algunos arreglos.
7.2.1 Lo primero que haremos ser, realizar una condicin para el men
Edicin, si son atentos se darn cuenta, que los elementos Cortar, Copiar,
Pegar, Eliminar, estn habilitada aun si no hay nada seleccionada en el
Memo o en el caso de pegar que la Clipboard no tenga formato Texto. O sea
vamos a hacer para que esto no suceda.
Primero, abriremos el editor del men, ahora
haremos Doble Click en el Menu Edicin,
exactamente donde dice Edicin, para editar el
evento OnClick del Elemento Edicin

El cdigo seria este:


var
seleccion : Boolean; //Variable de tipo boolean(true o false)
begin
if Memo1.Sellength <> 0 then //Comprobamos el tamao de la
seleccin, si es mayor o menor que 0 entonces
begin
Seleccion := true; //Si es mayor que 0 entonces Seleccin=true
end
else //Sino
Seleccion := false; //La seleccin=false

If Clipboard.HasFormat(CF_TEXT) then //Comprueba si la Clipboard tiene


format tipo texto
Pegar1.Enabled:=True //Le dice que se habilite
else
Pegar1.Enabled:=False; //Le dice que se deshabilite
Cortar1.Enabled := Seleccion; //Que va a estar habilitado de acuerdo al valo
de Seleccion

- 34 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Copiar1.Enabled := Seleccion; //Que va a estar habilitado de acuerdo al valo


de Seleccion
Eliminar1.Enabled := Seleccion; //Que va a estar habilitado de acuerdo al
valo de Seleccion
end;
Aqu vemos varias cosas nuevas, primero SelLength, se refiere al tamao
de la seleccin, es decir, a la seleccin, y comprueba en este ejemplo si la
seleccin es Mayor > o Menor < que 0. Creamos una variable de tipo
Boolean, que ya se explico en que consiste. Entonces si el largo de la
seleccin (SelLength) es mayor o menor que 0 (o sea si hay seleccin),
vamos a decirle a la variable que tiene valor True, sino, le decimos que
tiene valor False. Luego que se ejecute la condicin le diremos a la
propiedad Enabled de los elementos del men (que es la que define si esta
o no esta habilitado) que va a ser igual al valor de la variable de tipo
boolean Seleccion. Ahora, tenemos tambin la funcin HasFormat, para
comprobar si el ClipBoard tiene formato y hay que decirle entre parntesis
que tipo de formato va a buscar en el Clipboard, en este caso CF_TEXT,
para buscar texto.
Nota: Si quisiramos buscar una imagen pudiramos usar CF_PICTURE o
CF_BITMAP
7.2.2 Lo segundo a aadirle a nuestro procesador de textos, es la
posibilidad de prevenir la perdida de datos mediante un mensaje al usuario
en caso de que se halla modificado el documento, dicindole que si desea
guardarlo antes de Crear un nuevo documento, cerrar la aplicacin o abrir
un documento nuevo. Seria algo asi:
En este caso, he modificado el
documento, y le di a Nuevo en el
men archivo, y me mostro el
mensaje de la imagen. Si le doy
que Si, me sale el cuadro de
guardar y luego me crea un
nuevo documento en el memo (o
sea le borra el contenido)

Entonces debemos cambiar el cdigo del elemento Nuevo a:


begin
If Memo1.Modified then
Case Application.MessageBox('Desea guardar el documento?','Procesador
de textos',Mb_YesNoCancel+Mb_IconInformation) of
ID_YES:
begin

- 35 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

guardar1.Click;
Memo1.Clear;
end;
ID_NO:Memo1.Clear;
ID_Cancel:
end;
end;
Explicare por partes:
If Memo1.Modified then
Esto revisa si el Memo ha sido modificado entonces ejecuta el cdigo que le
sigue
Case Application.MessageBox('Desea guardar el documento?','Procesador
de textos',Mb_YesNoCancel+Mb_IconInformation) of
El Case Of es un tipo de condicin. Que en este caso la utilizamos
para el Cuadro de mensaje del Tipo MessageBox a nivel de aplicacin.
Este tipo de Mensaje permite mostrar una ventana con una serie de botones
y devuelve un valor indicando el boton que pulso el usuario.
El primer parmetro: Desea guardar el documento? Se refiere al texto que
mostrara el Mensaje. Es de tipo STRING
El segundo Parmetro: Procesador de textos Se refiere al nombre de la
ventana del mensaje. ES de tipo STRING
El tercero: Mb_YesNoCancel+Mb_IconInformation Se refiere a la cantidad de
botones y el icono que mostrara el mensaje respectivamente. Este es la
mas amplia. Este posee varias combinaciones, si no queremos iconos no
ponemos +Mb_IconInformation.
Botones
MB_YesNoCancel
MB_Ok
MB_OkCancel
MB_AbortRetryIgnore
MB_YesNo
MB_RetryCancel

Iconos

- 36 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Mb_IconInformation
Mb_IconQuestion
MB_IconHand (con sonido)
MB_IconAsterisk (con sonido)
Mb_iconWarning (con sonido)
MB_IconError (con sonido)
MB_IconStop (con sonido)

Ahora, cuando nos referimos a:


ID_YES:
begin
guardar1.Click;
Memo1.Clear;
end;
ID_NO:Memo1.Clear;
ID_Cancel:
Esto nos servir para decirle a la
que ha pulsado el usuario. Nos
antecedido por el prefijo ID_, o
boton YES (SI), seria ID_YES: lo
cualquier boton.

aplicacin que hacer de acuerdo al boton


referimos a cada boton por su nombre
sea si queremos hacer algo al pulsar el
que queremos hacer; y asi sirve para

Siendo esta la Opcion de guardar en caso de que se diga que si se quiere


guardar, Primero hacemos el procedimiento Guardar, contenido en el
evento onClick del elemento guardar (guardar1) del men archivo, y luego
borramos el contenido del memo. Si es que no se quiere guardar, solamente
borramos el contenido del memo, y si el usuario le da cancelar no hacemos
nada.
Ahora para la opcin de Abrir y Salir nos sirve casi el mismo cdigo,
aunque con algn cambio en lo que tiene que hacer.
En el elemento Abrir pondramos lo siguiente:
begin
If Memo1.Modified then
Case Application.MessageBox('Desea guardar el documento?',
'Procesador de textos',MB_YESNOCANCEL+MB_ICONINFORMATION) of

- 37 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

ID_YES: //en caso de que devuelva si, Guardar el documento, y despues


abrir el document que quiera el usario
begin
guardar1.Click;
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
ID_NO: //en caso de que devuelva no, abrir el documento sin guardar el
otro
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
ID_Cancel: //no hacer nada si devuelve Cancelar
end
else //En caso de que no este modificado abrir el documento nuevo
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
En el elemento Salir pondramos lo siguiente:
begin
If Memo1.Modified then
Case Application.MessageBox('Desea guardar el
documento?','Procesador de
textos',MB_YESNOCANCEL+MB_ICONINFORMATION) of
ID_YES: //En caso de que el usuario pulse si Guardar y despus Cerrar
begin
guardar1.Click;
Application.Terminate;
end;
ID_NO: Application.Terminate; //En caso de que el usuario pulse no
Cerrar
ID_Cancel:
end
else
Application.terminate; //En caso de que no se modifique Cerrar
end;

- 38 -

Curso de Delphi 7 Por DarK_FirefoX (aht1980ster@hotmail.com)

Ahora en el evento OnCloseQuery (Pedir cerrar aplicacin) el formulario


1(form1) debemos poner el siguiente cdigo, mas o menos el mismo del
elemento salir:
begin
If Memo1.Modified then
Case Application.MessageBox('Desea guardar el
documento?','Procesador de
textos',MB_YESNOCANCEL+MB_ICONINFORMATION) of
ID_YES:
begin
guardar1.Click;
Application.Terminate;
end;
ID_NO: Application.Terminate;
ID_Cancel:

CanClose:=False; //No permitir que se cierre

end
else
Application.terminate;
end;
end.

- 39 -

También podría gustarte