Programacion orientada a objeto avanzada con xHarbour (IX)

8.- Analizando el código fuente del ejemplo_1

8.1 Propiedades del proyecto en Xailer:

Antes de empezar deberemos indicar a Xailer que vamos a usar la librería complements.lib y el motor de base de datos de SQLite:

Propiedades del proyecto

Propiedades del proyecto

otra de las cosas que haremos será configurar el prg que se ejecutará nada mas arrancar el programa, en nuestro caso, es el prg principal de la aplicación:

Propiedades del proyecto, modulo de inicio.

Propiedades del proyecto, modulo de inicio.

8.2. La entrada al programa:

Este es el código de entrada a la aplicación y la forma de cargar el controlador principal. Hay que observar que cambiamos la forma de arrancar de Xailer:

Código de entrada a la aplicacion

Código de entrada a la aplicación

Desviamos la llamada a través de la función Empezar() que será la que realice la carga del controlador principal.

8.3. Método new() del controlador principal:

Desde el método new() del controlador principal de nuestra aplicación realizaremos la ejecución del primer formulario, en este caso MenuFrm(). Vemos el código:

Método new del controlador principal

Método new del controlador principal

observamos las siguientes instrucciones:

  • en la variable menuPrincipal de la clase Controlador guardamos la referencia del objeto creado de MenuFrm().
  • asignamos el controlador al objeto menuPrincipal. Todas las clases que forman parte de la vista guardaran referencia a su controlador.
  • mostramos el formulario.
Asignación del controlador en la clase.

Asignación del controlador en la clase.

en la imagen anterior podemos ver el código usado para guardar y asignar valores del controlador en la clases pertenecientes a la vista.

Ya hemos cargado el formulario principal de la aplicación desde el que ejecutaremos distintas opciones. Todas estas opciones ejecutarán métodos del controlador principal (ver controlador.prg).

Detalle de la ejecución de opciones

Detalle de la ejecución de opciones

En la imagen anterior podemos ver que los métodos llamados desde las opciones del menú ejecutan métodos del controlador principal.

Seguiremos viendo como funciona el controlador en el próximo artículo.

Anuncios

10 comentarios

  1. Hola Jose:

    Probando tu ejemplo me da el siguiente error:

    ***************************** Registro de errores *****************************

    Exe: C:\xailer2\ejemplo 1\ejemplo_1.exe
    Version: 1.0.0.0
    User name: emilio
    Computer name: DESPACHO-PC
    Fecha: 09.09.2011
    Hora: 18:08:25
    Memoria libre: 924576
    Area actual: 1

    ————————- Información del compilador ————————–

    Versión Xailer: Xailer 2.0.1 Version 2.0.1
    Compilador: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6511) PCode Version: 10
    Compilador C/C++: Borland C++ 5.5.1 (32 bit)
    Plataforma: Windows Windows Vista Professional 6.01.7600

    ———————– Información detallada del error ———————–

    Subsistema: BASE
    Código de error: 1131
    Estado: .F.
    Descripción: Error de rango
    Operación: dimensi¢n del array
    Argumentos: [ 1] = Tipo: N Valor: -1
    Fichero:
    Código error SO: 0

    Pila de llamadas:
    ARRAY (0)
    TSQLQUERY:OPEN (345)
    TDATASET:CREATE (234)
    TSQLQUERY:CREATE (39)
    PERSISTENCIACONEXION:CREADATASET (76)
    PERSISTENCIACONCEPTO:LISTA (33)
    CONCEPTOCTR:SHOWBROWSE (71)
    CONTROLADOR:CONCEPTORUN (73)
    MENUFRM:CONCEPTO (40)
    TMENUITEM:ONCLICK (0)
    TMENU:DOACTION (252)
    TMENU:DOACTION (257)
    MENUFRM:WMCOMMAND (924)
    RUNFORM (0)
    TAPPLICATION:RUN (272)
    MAIN (15)

    • Emilio,

      El error lo está dando la clase TDataSet de Xailer en el método Open al crear un array. No se por que estará pasando. Yo uso la versión 2.0.18 de Xailer. Mira a ver si puede ser que no esté la base de datos. En ese caso, avísame para que vuelva a subir el ejemplo al servidor.

      Gracias.

    • A mi me ocurre igual.
      Tras muchas vueltas creo que el problema esta en que la clase TSQLiteDataSource de xAiler solo funciona (segun la documentación) en la versión ENTERPRISE (yo tengo la Profesional)

  2. Hola Jose:
    La base de datos si que está, la verdad es que yo no he usado nunca la SQLite, además como no aparece ningún ICONO correspondiente a SQLIte en la pestaña de DataSets de Xailer, pues no sé como se utiliza.

    Yo estoy utilizando la versión 2.4.0 de Xailer, por si te vale para algo. Lo que voya hacer es crearme una tabla concepto con la misma estructura de la que tu me envias de SQLite, pero en Acces o SQL Server, que si que tengo más experiencia, modificando la capa de persistencia conexion a ver que tal funciona.

    Te digo algo.

    Un saludo.

    • Hola Emilio,

      No se si ha cambiado algo en la versión de Xailer que usas, pero incluyendo en “Propiedades del proyecto – Librerias” la correspondiente a SQLite debería funcionar sin problemas.

      Claro que puedes probar con otro motor de datos, es fácil cambiar la capa de persistencia y sin necesidad de tocar el resto del programa.

      Saludos.

  3. Hola Jose:

    Probado con una base de datos Acces y modificando el método de la clase PersistenciaConexion funciona perfectamente.

    Saludos.
    Emilio Gil.

  4. ¿Quizas el error se deba a que se necesita la version Enterprise de xAiler para compilar el ejemplo?

  5. Estimado José
    Creando el sample para xHarbour + FWH con que reemplazo COMPONENTS?

    gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: