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