Un vistazo al .dpr

Anuncio
Publicado en The Cold Sun (http://www.thecoldsun.com)
Inicio > PDF para impresora > PDF para impresora
Un vistazo al .dpr
Table of Contents [hide]
Introducción
Un ejempo
Utilizando el dpr
Introducción
Cuando creamos un projecto nuevo en Delphi el IDE automáticamente crea un archivo con extensión dpr
(delphi project) y, si el proyecto contiene forms, un archivo dfm (delphi form) por cada form del proyecto (y
también una unidad .pas por cada uno).
El archivo con extensión dpr constituye un archivo de proyecto de Delphi. En el se encuentra recogido el
código de inicialización de la aplicación así como todas las unidades y formularios del proyecto.
Delphi esta construido sobre el lenguaje de programación pascal, o más concretamente sobre Object
Pascal que incluye el paradigma de objetos al lenguaje Pascal. Por ello conserva la organización inicial de
pascal en casi su totalidad.
Por más que el IDE de desarrollo nos facilite las cosas y parezca que pasan "mágicamente", lo cierto es
que todo, absolutamente todo, lo que se programa desde delphi acaba siendo un programa de Object
Pascal. Por ello lo primero que encontramos en el dpr es la sentencia program NombreDePrograma;
seguida de las declaraciónes uses (las unidades y formularios que aparecen en el project viewer (del menu
view, project viewer) se leen de aqui) seguido de la declaración de variables, declaración de funciones
(normalmente ninguna puesto que el IDE nunca mete funciones aqui) y por último un begin y un end
dentro de los cuales se crean los formularios de la aplicación.
Un ejempo
Vamos a ver un ejemplo simple:
Project1; {Form1};
program
Forms,
Unit1
uses
in 'Unit1.pas'
{$R *.res}
Application.Initialize;
Application.CreateForm(TForm1,
Form1);
begin
Application.Run;
end.
Este es el código básico de una aplicación vacia. Podemos ver que comienza la declaración con un program
y el nombre del proyecto seguido de una declaración de las unidades usadas. Si no están en el path, hay
que especificar donde encontrarlas. En este caso estamos diciendole que la unidad Unit1 se encuentra en
el archivo Unit1.pas en el directorio actual.
En el cuerpo principal del programa se llama a varios metodos del objeto Application, que es un singleton
(ubicado en la unidad Forms) que representa nuestra aplicación y que contiene varios metodos comunes.
De las declaraciones nos vamos a quedar con dos:
Application.CreateForm es un metodo del objeto application que se encarga de añadir forms a la aplicación
y, en caso de ser el primero (es decir el form principal de la aplicación) realizar las acciones necesarias
para configurarlo como form principal.
Application.Run es el metodo que se encarga de lanzar la ejecución de la aplicación (entrando en un bucle
en el cual procesa los mensajes de windows que le van llegando hasta que recibe un wm_quit que es el
modo habitual de funcionamiento de las aplicaciones de windows).
Si añadimos un nuevo formulario mediante el IDE de Delphi ...
Project1; {Form2};
program
Forms,
Unit1
uses
'Unit1.pas'
Unit2
{Form1},
in 'Unit2.pas'
{$R *.res}
Application.Initialize;
Application.CreateForm(TForm1,
Form1);
begin
Application.CreateForm(TForm2,
Form2);
Application.Run;
end.
Observamos que el entorno automáticamente añade dos lineas, una en la cual define la nueva unidad
del form y otra llamada a CreateForm. Puesto que la llamada que crea el Form2 está en segundo lugar,
cuando el control de ejecución llegue a ese punto ya se habrá creado el Form1 por lo que Form2 ya no
será el formulario principal de la aplicación (y por tanto no se mostrará hasta que no se haga
implicitamente un Form2.Show).
Utilizando el dpr
Todo lo dicho hasta el momento esta muy bien pero, ¿que utilidad podemos sacarle a esto?
En la mayoría de las aplicaciones posiblemente no necesitemos tocar el dpr demasiado aunque hay
algunos casos específicos en los que es interesante hacerlo.
No crear automáticamente dialogos: Todo formulario que se define en Delphi desde el IDE
añade una llamada a Application.CreateForm para el formulario recien definido. Esto hace que los
formularios se creen siempre aunque luego no se utilicen. Dependiendo del tamaño y complejidad
de los formularios, y sobre todo de si dichos formularios tienen código asociado a su creación (por
ejemplo accesos a bases de datos) este proceso puede ser costoso, sobre todo si tenemos en
cuenta que, si el formulario es un dialogo podría no mostrarse nunca. Si este es el caso en que nos
encontramos, es recomendable quitar la linea que crea el form del dpr y realizar la creación en el
mismo lugar en el que estaría la llamada a Show.
Form1.Button1Click(Sender
: TObject);
Form2.ShowModal;
procedure
Podemos
sustituirlo
(quitando la declaración
// del
dpr)
por
...
: TForm2;
var
dlg
:=
TForm2.Create;
dlg.ShowModal;
begin
dlg.Free;
end;
De esta forma el formulario solo es creado cuando se necesita y es liberado (de forma que recuperamos
la memoria asignada en cuanto dejamos de utilizarlo).
Para realizar operaciones antes de arrancar: Por ejemplo si queremos comprobar que no existe
ya una instancia de nuestra aplicación o si queremos crear un tipo de formulario (con distintas fuentes
por ejempo) dependiendo de la configuración de pantalla del usuario o de si es la primera ejecución del
programa.
Application.Initialize;
begin
Application.CreateForm(TMainForm,
MainForm)
if ExisteEntradaRegistroDeWindows('Project')
then
Application.CreateForm(TAsistenteConfig,
AsistenteConfigForm);
else
Application.Run;
end.
Tags: Delphi [1] Tutoriales [2] Enviado por Jorge el Dom, 11/23/2008 - 21:37.
URL de Origen: http://www.thecoldsun.com/es/content/11-2008/un-vistazo-al-dpr
Enlaces:
[1] http://www.thecoldsun.com/es/category/common/delphi
[2] http://www.thecoldsun.com/es/category/content/tutoriales
Descargar