Professional Documents
Culture Documents
fraguibo1@hotmail.com
Pgina:
Todas las prcticas han sido, diseadas, montadas y comprobado, su correcto funcionamiento por el Autor: Francisco Guillamon (Fraguibo) Todos los derechos estn reservados por el autor. Ao de realizacin: 2004 2005
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
MUY IMPORTANTE:
Este es un pequeo Cursillo , esta dirigido para todos aquellos, que empiezan en la programacin, pero que tengan algunas nociones, a un que sean pequeas de la programacin en Clipper .
Durante las prcticas iremos montando y ensamblando, poco a poco un programa completo, para el control de un Archivo de Pelculas , empezando desde la primera lnea de Cdigo hasta el archivo final ArchiPel.exe . Todas las practicas han sido escritas, realizadas y comprobadas, por el Autor, en un PC Pentium-4 de 30 GH , con 500 Mg de memoria Ram , Disco duro de 80 Gigas y Sistema Operativo Windows XP Profesional . Han colaborado en la correccin de errores, los siguientes compaeros del Foro de C3Compilador : manuel@telecable.es, xevicomas@terra.es, truesoft@usuarios.retecal.es y Bruno Cantero www.c3compiler.com El Autor; Francisco Guillamon.
fraguibo1@hotmail.com
Pgina:
fraguibo1@hotmail.com
Pgina:
Practica 1
Configuracin del Area de Trabajo.
Lo primero de todo lo que tenemos que hacer, es configurar nuestra Area de Trabajo en el Disco Duro , para instalar todo el Sistema de C3 . As que empezaremos, creando una Carpeta Nueva , con el nombre de C3 en el Disco Duro , en donde instalaremos todo el sistema del C3 , tal como se muestra a continuacin: C:/ C3 Bin Res Help C3 Html Gui Html Tools32 Html Include Res Lib32 Samples Res Source Sys => => => => => => => => => => => => => => => => => Directorio de C3 Carpeta del compilador C3 y el Enlazador Carpeta Para Guardar Iconos, Anagramas y Bitmaps. Carpeta de las Ayudas Carpeta de Ayuda del C3 Carpeta donde se encuentran las funciones de C3 Carpeta de Ayuda de la GUI Carpeta donde se encuentran las aplicaciones GUI Carpeta de Ayuda de Tools32 Carpeta donde se encuentra las aplicaciones Tools32 Carpeta donde se encuentran los archivos ( *.ch ) Carpeta Con tres archivos varios. Carpeta donde se encuentran los archivos ( *.Lib) Carpeta donde se encuentran los ejemplos Carpeta donde se encuentran los iconos Capeta Carpeta donde se encuentra los ( *.prg ) de errores
A continuacin instalaremos en la Carpeta Bin , el programa Make.exe de Clipper y los programas Tlink32.exe y Rlink32.dll de Bordland. Seguidamente crearemos otra nueva Carpeta , en el directorio Principal de C3 con el nombre de Herramientas , en donde colocaremos las herramientas, que tenemos que utilizar para poder terminar completamente, cualquier programa que construyamos. Las herramientas que necesitamos son, un constructor de archivos de Recursos ( * .rc ), un constructor de Libreras ( * .dll ), un constructor de Libreras ( * lib ) y un constructor de ficheros de Ayuda ( * .hlp ) Para uno de los constructores de Recursos y Libreras ( * .dll ), crearemos dentro de la carpeta de Herramientas , una carpeta con el nombre de WorkShop , en la cual instalaremos, el creador de recursos Resource WorkShop y al instalar el Resource WorkShop , en la carpeta WorkShop , se crearan automticamente dos carpetas ms, que es en donde se instalara todo el sistema del Resource WorkShop , tal como se muestra a continuacin: C:\ C3 Herramientas WorkShop Bin RCExpert
=> Carpeta con algunos ficheros del WorkShop => Carpeta con el Resource WorkSohp y sus utilidades => Carpeta con algunos ficheros del WorkShop
Para otro de los constructores de Recursos ( * .rc ), crearemos tambin dentro de la carpeta de Herramientas , una carpeta llamada ResourceBord , en la cual instalaremos, el creador de Recursos de Bordland , tal como se muestra a continuacin:
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
Para el creador de Libreras ( * .lib ), crearemos tambin dentro de la carpeta de Herramientas , una carpeta llamada Construir Lib , en la cual instalaremos, el creador de Libreras ( * lib ), tal como se muestra a continuacin: C:\ C3 Herramientas Construir Lib
Para el creador de ficheros de Ayuda ( * hlp ), crearemos tambin dentro de la carpeta de Herramientas , una carpeta llamada Crear Ayudas , en la cual instalaremos los ficheros para la creacin de Ayudas ( * hlp ), tal como se muestra a continuacin: C:\ C3 Herramientas Crear Ayudas
A continuacin crearemos tambin, en el directorio Principal de C3 , otra nueva Carpeta con el nombre de Prcticas , que ser en donde iremos colocando, todos los trabajos que vayamos realizando, una vez que ya estn terminados. Cuando hayamos terminado de instalar, todo el directorio de Trabajo del C3 , este deber de haber quedado ms o menos as:
C:/ C3 Bin Res Help C3 Html Gui Html Tools32 Html Include Res Lib Samples Res Source Sys Gui OldGui Projects Herramientas Crear Ayudas Construir Lib ResourceBord WorkShop Bin RCExpert Practicas => => => => => => => => => => => => => => => => => => => => => => => => => => => => Directorio de C3 Carpeta del compilador C3 y el Enlazador Carpeta con los Iconos, los Anagramas y Bitmaps. Carpeta de las Ayudas Carpeta de Ayuda del C3 Carpeta donde se encuentran las funciones de C3 Carpeta de Ayuda de la GUI Carpeta donde se encuentran las aplicaciones GUI Carpeta de Ayuda de Tools32 Carpeta donde se encuentra las aplicaciones Tools32 Carpeta donde se encuentran los archivos ( *.ch ) Carpeta Con tres archivos varios. Carpeta donde se encuentran los archivos ( *.lib) Carpeta donde se encuentran los ejemplos Carpeta donde se encuentran los iconos Capeta Carpeta donde se encuentra los ( *.prg ) de errores Carpeta donde Instalaremos el IDE Carpeta con varios ejemplos en *.prg para el IDE Carpeta con unos archivos de configuracin Carpeta de las Herramientas. Carpeta con el sistema para crear ficheros *.hlp Carpeta con los ficheros para crear Libreras *.lib Carpeta con los ficheros del Resource de Bordland. Carpeta con algunos ficheros del WorkShop Carpeta con el Resource WorkSohp y sus utilidades Carpeta con algunos ficheros del WorkShop Carpeta para colocar las prcticas realizadas
Cuando todo esto este terminado, ya tendremos todo el sistema instalado y a punto para empezar a programar.
fraguibo1@hotmail.com
Pgina:
Prctica - 2
La Ventana Principal.
Este programa ha sido diseado, para trabajar con una resolucin, de pantalla de 800x600 lneas , si ustedes tienen otra configuracin, traten de adaptarla a esta resolucin para que la ventana del programa, no se les salga del la pantalla. Una vez hecha esta pequea aclaracin, vamos a empezar a construir nuestro primer programa. Lo primero que vamos hacer, ser construir la Ventana Principal , en donde iremos colocando poco a poco, todos los mdulos de que consta el programa, hasta que lo tengamos todo montado y funcionando. En la primera lnea de nuestro programa, colocaremos un pequeo comentario del primer modulo del programa, lo cual deberemos de hacer, con todos los mdulos de que conste nuestro programa, para as poder localizar ms rpidamente, un Modulo que tengamos que Corregir o Modificar . ***************************************************************************
Procedure Main() Local Principal Application:Title := "ArchiPel" Application:Initialize() Application:CreateForm( TPrincipal(), @ Principal ) Application:Run() Return ***************************************************************************
Declaracin de Mtodos.
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
Seguidamente construiremos, la Declaracin de Mtodos , la cual constara de los siguientes Comandos internos de C3 , Class , From , TForm , Public EndClass y Mtodo Create Constructor , tal como se muestra a continuacin:
// Modulo de la Declaracin de Mtodos.
Class TPrincipal From TForm Public : Method Create Constructor EndClass ***************************************************************************
Modulo Principal.
Por ultimo en esta practica, construiremos el Modulo de Principal , el cual de momento solo constara de Cinco Lneas , pero lo iremos ampliando, a medida que vayamos avanzando en el curso. Para el Modulo Principal , vamos a utilizar los comandos internos de C3 Method Super , Class Return y la Data , Caption junto con las funciones Create() ::SetBounds() , Space() , tal como se indica a continuacin:
// Declaracin del Modulo Principal.
Method Create( oOwner ) Class TPrincipal Super:Create( oOwner ) ::SetBounds( 0, 0, 800, 570 ) ::Caption:=Space(76)+" Archivo de Pelculas " Return Cuando hayamos terminado de construir, nuestros cuatro primeros Mdulos , ya tendremos nuestro primer, Fichero (*. prg ) listo para Compilarlo y ver el resultado el cual nos mostrara una Ventana , vaca de Windows con el titulo "Archivo de Pelculas" En esta Practica se adjunta el fichero, ArchiPel.prg , para que puedan consultarlo mientras montan el suyo, junto los ficheros que hacen falta, para la compilacin y el enlazado, Do.bat , ArchiPel.mak y el ejecutable ArchiPel.exe , para que puedan ver el resultado de esta Practica . ***************************************************************************
fraguibo1@hotmail.com
Pgina:
Prctica - 3
El Men Principal en C3.
En todos los programas comerciales, lo primero que se nos muestra, es el Men Principal , pues en esta practica, vamos a construir el Men Principal del programa.
Declaracin de Mtodos.
As que lo primero que aremos, como ya dijimos en la Prctica anterior , que iramos ampliando este Mdulo , con forme fusemos avanzando en nuestro programa, as que ahora aadiremos al modulo, Declaracin de Mtodos las siguientes lneas, Method MenuPrin y Method Terminar, que sern los Mtodos para crear el Men Principal y Salir del Programa , tal como se indica a continuacin:
// Modulo de la Declaracin de Mtodos.
Class TPrincipal From TForm Public: Method Create Constructor Method MenuPrin Method Terminar EndClass ***************************************************************************
Modulo Principal.
A continuacin tambin ampliaremos el Modulo Principal , para lo cual le aadiremos el Evento ::OnCloseQuery , con los comandos internos de C3 oSender , ::Brush y las variables Salir , Color y la funcin que vamos a crear ::MenuPrin() tal como se muestra a continuacin:
// Modulo de la Declaracin de Mtodos.
Method Create( oOwner ) Class TPrincipal Super:Create( oOwner ) ::SetBounds( 0, 0, 800, 570 ) ::Caption:=Space(76)+ "Archivo de Pelculas" ::Brush:Color := 15400959 ::MenuPrin() ::OnCloseQuery := { | oSender, Salir | ::Terminar( @ Salir ) } Return
***************************************************************************
Menu Principal.
Seguidamente crearemos el modulo del Men Principal , para lo cual vamos a utilizar las variables Locales Menu , ns , junto con los comandos internos de C3 , Method Class , ::Menu , Return y las Funciones, TMainMenu() , Create() , Close() BeginMenu() , MenuItem() , Separador() , EndMenu() , tal como se muestra a continuacin:
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
Menu:MenuItem( ns + Consultar Listado,Listados por Varios Sistemas.) Menu:BeginMenu() Menu:MenuItem( "Listado Por Codigo","Listado por Nmero de Codigo",, .T. ) Menu:MenuItem( "Listado Por Alfabeto", "Listado por Orden Alfabtico.",, .T. ) Menu:MenuItem( "Listado Por Temas","Listado por Temas.",, .T. ) Menu:MenuItem( "Listado Por Aos","Listado por Ao de Produccin.",, .T. ) Menu:MenuItem( "Listado por Direccin","Listado por Directores.",, .T. ) Menu:EndMenu()
// Men Para Imprimir.
Menu:MenuItem( ns + "Imprimir","Imprimir Fichas o Listados." ) Menu:BeginMenu() Menu:MenuItem( "Imprimir Fichas","Imprimir Fichas de Pelculas.",, .T. ) Menu:Separator() Menu:MenuItem( "Listado Por Codigo","Listado por Nmero de Codigo",, .T. ) Menu:MenuItem( "Listado Por Alfabeto", "Listado por Orden Alfabtico.",, .T. ) Menu:MenuItem( "Listado Por Temas","Listados por Temas.",, .T. ) Menu:MenuItem( "Listado por Direccin","Listado por la Direccin.",, .T. ) Menu:EndMenu()
// Men Para Salir del Programa.
fraguibo1@hotmail.com
Pgina:
Por ultimo en esta practica, construiremos el Modulo , para Cerrar y Salir del programa. As para construir este Modulo , vamos a utilizar los comandos internos de C3 Method , Class If , Else , EndIf y Return , junto con la funcin MessageDlg() y las constantes mbOkCancel y poActiveCenter , tal como se indica a continuacin:
// Modulo Para Cerrar y Salir del Programa.
Method Terminar(Salir) Class TPrincipal If MessageDlg( "Esto finaliza la ejecucin y cierra el programa.", mtConfirmation, ; mbOkCancel,poActiveCenter ) == mrOk Salir := .T. Else Salir := .F. EndIf Return Nil ********************************************************************************** Ahora solo hay que hacer el montaje del fichero ArchiPel.prg , para ello solo tienen que aadir, las nuevas lneas de cdigo, expuestas en esta practica, en sus correspondiente mdulos, del fichero ArchiPel.prg de la practica anterior. En esta Practica se adjunta el fichero, ArchiPel.prg , para que puedan consultarlo mientras montan el suyo, junto los ficheros que hacen falta, para la compilacin y el enlazado, Do.bat , ArchiPel.mak y el ejecutable ArchiPel.exe , para que puedan ver el resultado de esta Practica . NOTA: Como abran podido comprobar, en esta leccin hemos utilizado, los siguientes Comandos internos de Clipper y la funcin tambin de Clipper. Local Public If Else EndIf Return Space()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
11
fraguibo1@hotmail.com
Pgina:
12
Practica - 4
Terminar el Men Principal.
En esta cuarta leccin, vamos a completar y terminar el Men Principal , as que empezaremos, colocando un Icono en la aplicacin y un Anagrama o una Foto en el Men . Tambin vamos a construir, la Barra de Estado del Men , en donde aparecer el Texto de las opciones , as como la Fecha y Hora actual .
Declaracin de Mtodos.
Seguidamente en modulo Declaracin de Mtodos , aadiremos las siguientes lneas Data Imagen y Method BarraHora , para lo cual vamos a utilizar, los comandos internos de C3 , Private: , Method y Data junto con la variable Image , tal como se muestra a continuacin: /* * Modulo de la Declaracin de Mtodos. */ Class TPrincipal From TForm Private: Data Image Public: Method Create Constructor Method MenuPrin
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
// Nueva Lnea.
13
// Nueva Lnea.
***************************************************************************
Modulo Principal.
A continuacin en el Modulo Principal, tambin aadiremos las siguientes lneas ::Icon:Name:= "Test" , ::Image:=TImage():Create( Self ), ::Image:SetPos( 131, 2 ) ::Image:Picture:Bitmap:Name:= "Copryn" y ::BarraHora() , para lo cual vamos a utilizar, los comandos internos de C3, Icon , Image , Picture , Bitmap junto con la variable de entorno, Name y las funciones TImage() , Create() , SetPos() y la nueva funcin, que vamos a crear seguidamente BarraHora() , tal como se muestra a continuacin: /* * Modulo Principal. */ Method Create( oOwner ) Class TPrincipal Super:Create( oOwner ) ::SetBounds( 0, 0, 800, 570 ) ::Icon:Name := "Test" ::Caption:=Space(76)+ "Archivo de Pelculas" ::Brush:Color := clAqua ::Image := TImage():Create( Self ) ::Image:SetPos( 166, 40 ) ::Image:Picture:Bitmap:Name := "Copryn" ::MenuPrin() ::BarraHora() ::OnCloseQuery := { | oSender,Salir | ::Terminar( @ Salir ) } Return ***************************************************************************
// Nueva Lnea.
14
ns :=Space(8) // Crear Barra de Estado. BarraStado := TStatusBar():Create( Self ) BarraStado:Reversed := .T. // Mostrar los Mensajes en la Barra de Estado. PanelMensa := TStatusPanel():Create( BarraStado ) Application:OnShowHint := { | cHint | PanelMensa :Caption := ns +If( Empty( cHint ), ; "Seleccione una opcin." , cHint ) } // Colocar Hora y Fecha en la Barra de Estado. Reloj := TStatusPanel():Create(BarraStado) Reloj :Width :=372 oTimer := TTimer():Create( Self ) oTimer:OnTimer := { || Reloj :Caption :=" Son las: " + Time() + " del " + ; Cdow(Date()) + " dia " + Left(Dtoc(Date()),2) + " de " + ; cMonth(Date()) + " del Ao " + Right(Dtoc(Date()),4) } Return *************************************************************************** Con esto tenemos todo el Men Principal , totalmente terminado, ahora ya solo nos queda montar esta ultima Prctica , el su lugar correspondiente, de nuestro programa ArchiPel.prg y compilarlo. Con esta leccin se adjunta, la carpeta Res que contiene, el Icono de la aplicacin junto con el Anagrama del Programa y el Icono de una Mano , que utilizaremos ms adelante en otras Practicas . Los Iconos y Bitmaps de la carpeta Res , hay que copiarlos a nuestra carpeta Res , que tenemos en el directorio C:\C3\Bin\Res de nuestro Ordenador. Los archivos Do.Bat , el archivo Samples.rc que es en donde se encuentran, Configurados , los Iconos y el Anagrama , el nuevo archivo ArchiPel.mak , el archivo completo ArchiPel.prg , para que puedan consultarlo, mientras montan esta prctica y el archivo final ArchiPel.exe , para que puedan comprobar el resultado final. Nota: Para construir el Icono de la aplicacin y el archivo Samples.rc , se ha utilizado el Resource WorkSohp. En todas las Variables declaradas en el mdulo Declaracin de Mtodos , cuando las tengamos que utilizar, en la parte del programa que nos hagan falta, siempre hay que anteponerles Cuatro Puntos , tal como se muestra a continuacin: ::Image Observacin: Como abran podido comprobar en esta practica, hemos utilizado los siguientes comandos internos de Clipper , junto con las siguientes Funciones. Local If Return Space() Empty() Time() Cdow()
fraguibo1@hotmail.com Pgina:
15
fraguibo1@hotmail.com
Pgina:
16
Practica - 5
Inicio del Programa.
Una vez terminado el Men Principal , vamos a construir la Base de Datos , con su correspondiente ndice . As que vamos a empezar configurando, el Inicio de Programa y para ello vamos a utilizar los comandos internos de C3 , Resquet DbfCdx que es la configuracin de la Base de datos , con el archivo de ndice Cdx , y RDDSETDEFAULT(DBFCDX), que es la configuracin, para poder utilizar el ndice Cdx , tal como se muestra a continuacin: /* * Modulo de entrada y comienzo del programa. */ Procedure Main() Local Principal Request DbfCdx RDDSETDEFAULT("DBFCDX") set(_SET_DATEFORMAT,"dd/mm/yyyy") Application:Title := "ArchiPel" Application:Icon:Name := "Test" Application:Initialize() Application:CreateForm( TPrincipal(), @ Principal ) Application:Run() Return *************************************************************************** // Nueva Lnea // Nueva Lnea
// Nueva Lnea.
17
Modulo Principal.
A continuacin en el modulo Principal, tambin aadiremos la siguiente lnea ::BaseDatos() , que es la que llamada al modulo, que nos creara la Base de Datos con su correspondiente ndice Cdx , tal como se muestra a continuacin: // Modulo Principal. Method Create( oOwner ) Class TPrincipal Super:Create( oOwner ) ::SetBounds( 0, 0, 800, 570 ) ::Icon:Name := "Test" ::Caption:=Space(76)+"Archivo de Pelculas" ::Brush:Color := clAqua ::Image := TImage():Create( Self ) ::Image:SetPos( 166, 40 ) ::Image:Picture:Bitmap:Name := "Copryn" ::MenuPrin() ::BarraHora() ::BaseDatos() ::OnCloseQuery := { | oSender ,Salir | ::Terminar( @ Salir ) } Return ***************************************************************************
// Nueva Lnea.
18
Nota: Los cuatro ltimos registros de la Base de Datos , R1 , R2 , R3 y R4 , los hubisemos podido sustituir por un Campo Memo , pero luego en la Base de Datos , el campo Memo hace que esta ocupe mucho espacio, as que se a optado por hacer cuatro registros independientes, para que la Base de Datos no ocupe tanto espacio. ***************************************************************************
19
***************************************************************************
fraguibo1@hotmail.com
Pgina:
20
Practica - 6
Buscar Base de Datos.
En esta leccin vamos a construir Modulo que nos permita la entrada de Datos , as que lo primero que haremos ser, aadir al modulo de la Declaracin de Mtodos , los siguientes mtodos Method BusBaseDatos, este mtodo nos buscara la base de datos Method VenMenAuto, este mtodo nos mostrara las ventanas, de los mensajes automticos, LLamaMensage este mtodo mostrara los mensajes, en la ventana de mensajes, ContaTiempo y este nos calculara el tiempo, que deber de permanecer el mensaje en la pantalla, tal como se muestra a continuacin:
Declaracin de Mtodos.
/* * Modulo de la Declaracin de Mtodos. */ Class TPrincipal From TForm Private: Data Image Public: Method Method Method Method Method Method Method Method Method EndClass
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo
// // // //
***************************************************************************
/* * Modulo del Menu Principal. */ // Men de las Altas. Menu :BeginMenu() Menu :MenuItem( ns +" Alta de Fichas "," Dar de Alta Nuevas "+; " Fichas. ",{|oSender|::BusBaseDatos(1,1,,1)})
fraguibo1@hotmail.com
Pgina:
21
Nota: Las variables de la entrada de la funcin, BuscaBaseDatos( x,tr,va,me ) equivale a los siguientes parmetros: x =1 Buscar si Existe la Ficha. tr =1 Presenta una Ficha Nueva Para Rellenar. me =1 Mensage a Mostrar. ***************************************************************************
Ventana de Mensajes.
Seguidamente vamos a construir el modulo, que nos presentara las Ventanas , para los mensajes que tengamos que mostrar, a lo largo del programa. Para la construccin de este Modulo , vamos a utilizar los siguientes comandos internos de C3, Method, Class, Local y if/endif, las variables Venta y Meve1 , la variable interna de C3, bsDialog , la variable de entorno de C3, Brush , las datas BorderStyle Color, Position y Caption , la constante de C3, poActiveCenter y las funciones Space(), Tform(), Create(), SetBounds(), showModal() y las
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
22
dos que vamos a construir nosotros, una llamaMensage() y otra ContaTiempo , tal como se muestra a continuacin: /* * Modulo Para la Ventana de Mensajes Automticos. */ Method VenMenAuto( c1 , c2 , mv , co ) Class TPrincipal Local Venta , Meve1 Meve1 :=Space( 48 )+' Aviso Muy Grave ' // Crear la Ventana. Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0 , 0 , c1 , c2 ) Venta :Brush:Color := co Venta :Position := poActiveCenter if mv =1 Venta :Caption := Meve1 ::LLamaMensage( Venta , 22 , 20 ,clYellow," Arial Black ", 22 ,clRed, 1 ) ::ContaTiempo( 4000 , Venta ) Endif Venta :ShowModal() Return Nil Nota: Las variables de entrada de la funcin VenMenAuto( c1 , c2 , mv , co ) , corresponden a los siguientes parmetros: c1 y c2 => Corresponden al tamao de la ventana a mostrar. mv => Corresponde al mensaje que queremos mostrar. co => Corresponde al color de la ventana. Las constantes internas de C3, bsDialog muestra una ventana con los bordes normales, la poActiveCenter , muestra la ventana centrada en la pantalla, las siguientes constantes so de color, as la clYellow corresponde al color Amarillo y la clRed corresponde al color Rojo Claro. ***************************************************************************
23
// Ventana Para Mostrar los Mensajes. Men := TLabel():Create( ve ) Men :SetBounds( c1 , c2 ) Men :Brush:Color:= cp Men :BorderStyle := bsSingle Men :Transparent:=.f. Men :Font:Name:= nf Men :Font:Size:= .t. Men :Font:Size := tf Men :Font:Color := cl // Mensajes que hay que Mostrar. if me=1 Men :Caption:= La Base de Datos No Existe '+Chr(13)+; ' Sin Ella No Puedo Realizar '+Chr(13)+; ' Ninguna Clase de Gestin. ' Endif Retur nil Nota: Las variables de entrada de la funcin LLamaMensage( ve , c1 , c2 , cp , nf , tf , cl , me ) corresponden a los siguientes parmetros: ve c1 y c2 cp nf tf cl me => => => => => => => Ventana que llama el mensaje. Posicin del mensaje dentro de la ventana. Color de la ventana. Tipo de letra a utilizar, por defecto(Arial) Tamao de la letra que esta utilizando. Color de la letra que se esta utilizando. Mensaje que necesitamos mostrar.
La constante interna de C3, bsSingle muestra un marco, al rededor del mensaje. **************************************************************************
24
oTimer :OnTimer:= {|oSender| oTimer :Destroy(), ve :Close(), ve :Destroy()} Return Nil Nota: Las variables de entrada de la funcin ContaTiempo( ti,ve ) , corresponden a los siguientes parmetros: ve => Ventana que llama al contador. ti => Tiempo que debe de permanecer el mensaje en pantalla. Una vez terminada esta Practica , solo nos queda colocar los mdulos en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado de esta practica, solo tenemos que ejecutar el programa ArchiPel.exe y pulsar en la opcin Alta de Fichas , del menu principal y nos aparecer en la pantalla, una ventana con el siguiente mensaje: La Base de Datos No Existe' ' Sin Ella No Puedo Realizar' ' Ninguna Clase de Gestin.' Lo cual nos demuestra que la practica ha sido realizada correctamente, pero ustedes se preguntaran Como existiendo la Base de Datos el Programa nos dice que NO existe pues la razn es muy sencilla y consiste, en que el Modulo Para Buscar la Base de Datos , no la hemos configurado correctamente, para as poder comprobar el resultado de esta prctica, pero en la prxima prctica, ya lo configuraremos correctamente, tal como debe de ir en nuestro programa. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.bak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Private Public Return Chr() File()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
25
fraguibo1@hotmail.com
Pgina:
26
Practica - 7
En esta practica vamos a seguir construyendo, el Modulo que nos permita la entrada de Datos , as que lo primero que haremos ser, aadir al modulo de la Declaracin de Mtodos , los siguientes mtodos Method SayDatos, este mtodo nos mostrara los datos que tengamos que mostrar, Method BuscaFicha , este mtodo comprueba, si la ficha ya esta archivada Method FichaVacia, este mtodo nos construir la ficha vaca, Method FichaRecNue este mtodo nos mostrara una ficha, vaca para rellenar o una ya rellenada para corregir, Method Archivar este mtodo nos archivara, una ficha nueva o una que hayamos corregido y Method CrearBoton este mtodo nos creara los Botones, que vayamos a utilizar en las ventanas, tal como se muestra a continuacin:
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LlamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Fin del Modulo de Mtodos
***************************************************************************
fraguibo1@hotmail.com
Pgina:
27
/* * Modulo Para Buscar la Base de Datos. */ Method BusBaseDatos( x,tr,va,me ) Class TPrincipal if ! File( 'FiPelicu.dbf' ) // Si no la Encuentra nos Avisa que no Existe. ::VenMenAuto( 514,200,1, clFuchsia) Retur nil Else if x =1 // Hacer Ficha Nueva para rellenar. ::buscaFicha( tr,me ) Endif Endif Retur nil
Nota: La variable de la entrada de la funcin BusBaseDatos( x,tr,va,me ) , equivale a los siguientes parmetros: x =1 Buscar si Existe la Ficha. tr =2 Presenta una Ficha Para Corregir. me =2 Mensage a Mostrar. La constante de C3, clFuchsia , es una constante de color y equivale al color Violeta Claro. **************************************************************************
Buscar Fichas.
A continuacin vamos a construir el mdulo, para comprobar si la ficha ya esta archivada, si la encuentra cuando queremos, hacer una ficha nueva, nos avisa con un mensaje, de que la ficha ya esta archivada y nos vuelve al Men Principal , pero si no la encuentra, nos presenta una ficha nueva para rellenar. Para construir este mdulo vamos a utilizar, los siguientes comandos internos de C3 Method, Class, Local, if/endif, Use, Index, New Via, Close Data y Return , las variables Venta, edit, n, fi, oNU y mos , la variable de entorno de C3, Font , las datas BorderStyle, Position, Caption, Name y Size , las constantes de entorno de C3, bsDialog, poActiveCenter y oSender , junto con las funciones, Space(), Tform(), Create(), SetBounds(), Tedit(), Close() Destroy(), ShowModal() , Empety(), OrSetFocus(), DbSeek(), Recno() Eof() y las funciones que hemos creado nosotros, ::SayDatos(), ::CreaBoton() y ::VenMenAuto() , tal como se indica a continuacin: /* * Modulo para Buscar Fichas. */ Method BuscaFicha( tr,me ) Class TPrincipal Local venta, edit, n:=0 , fi :=Space(34) , oNU, mos, bf, co // Creamos la ventana. Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0, 0, 474, 210 ) Venta :Position := poActiveCenter
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
28
if tr =1 // Hacer Fichas Nuevas. bf := "Comprobar si Esta Ficha ya Esta Archivada" Venta :Caption := Space(40)+" Hacer Fichas Nuevas " ::SayDatos( mos,Venta,30,10,,'Arial Black',25,,, .t. ,; 'Ficha Para dar de Alta' ) endif Edit := TEdit():Create(Venta) Edit :SetBounds( 30, 70, 410, 0 ) Edit :Font:Name:= "Arial" Edit :Font:Size:= 14 edit :caption:= fi edit :OnExit:={|oSender| fi := Edit :Caption ,Venta :Close(), Venta :Destroy()} // Botn Para Comprobar si Existe la Ficha. ::CrearBoton( Venta,110,122,245,30,9,bf ,{|oSender| fi := Edit :Caption,; venta :Close(), venta :Destroy()}) Venta :ShowModal() // Abre Base de Datos y Busca la Ficha. if !Empty( fi ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( fi ) n :=Recno() if !eof() if x =1 // Si la Encuentra Nos Avisa con un Mensaje. ::VenMenAuto( 570,170,2, clLime) close data return nil endif endif endif Close Data // Si no hay Nada que Buscar Vuelve al Men. if n =0 return nil endif Return Nil ***************************************************************************
Crear Botones.
A continuacin vamos a construir, un mdulo que nos creara los Botones , que tengamos que utilizar, a lo largo de todo el programa, as que en este mdulo vamos a utilizar, los comandos internos de C3, Method, Class, Local y Return , la variable Botn , la variable de entorno de C3, Font y Cursor las datas Name Size y Caption , junto con las funciones, Tbutton(), Create(), SetBounds() y el evento OnClick, tal como se indica a continuacin: /* * Modulo Para Crear Botones.
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
29
*/ Method CrearBoton( ve,c1,c2,c3,c4,tf,tv,ac ) Class TPrincipal Local Boton // Crear Boton. Boton := TButton():Create( ve ) Boton :SetBounds( c1,c2,c3,c4 ) Boton :Cursor:Name:=crHandPoint Boton :Font:Size:= tf Boton :Caption := tv Boton :OnClick := ac Retur Nil Nota: Las variables de la entrada de la funcin CrearBoton( ve,c1,c2,c3,c4,tf,tv,ac ) , equivale a los siguientes parmetros: ve => Ventana a la que pertenece el Botn. c1,c2,c3,c4 => Tamao del Botn. tf => Tipo de Letra a utilizar. tv => Nombre del Botn. ac => Accin a realizar, cuando se pulse el Botn. ***************************************************************************
// Nueva Lnea.
30
::LLamaMensage( Venta,30,26 ,clAqua," Arial Black ", 22 ,clBlack,2) ::ContaTiempo( 4000 , Venta ) Endif Venta :ShowModal() Return Nil
Nota: Las variables de entrada de la funcin VenMenAuto( c1 , c2 , mv , co ) , corresponden a los siguientes parmetros: c1 y c2 => Corresponden al tamao de la ventana a mostrar. mv => Corresponde al mensaje que queremos mostrar. co => Corresponde al color de la ventana. Las constantes internas de C3, bsDialog muestra una ventana con los bordes normales, la poActiveCenter , muestra la ventana centrada en la pantalla, las siguientes constantes son de color, as la clYellow corresponde al color Amarillo , la clRed corresponde al color Rojo Claro , la clAqua corresponde al color Azul Claro y la clBlack corresponde al color Negro .
***************************************************************************
/* * Modulo Para Mostrar Mensajes. */ Method LLamaMensage( ve , c1 , c2 , cp , nf , tf , cl , me ) Class TPrincipal Local Men // Ventana Para Mostrar los Mensajes. Men := TLabel():Create( ve ) Men :SetBounds( c1 , c2 ) Men :Brush:Color:= cp Men :BorderStyle := bsSingle Men :Transparent:=.f. Men :Font:Name:= nf Men :Font:Size:= .t. Men :Font:Size := tf Men :Font:Color := cl // Mensajes que hay que Mostrar. if me=1 Men :Caption:= La Base de Datos No Existe '+Chr(13)+; ' Sin Ella No Puedo Realizar '+Chr(13)+; ' Ninguna Clase de Gestin. ' elseif me=2 Men :Caption:=' La Ficha que Usted Quiere dar '+Chr(13)+; ' de Alta ya Esta Archivada. ' ::ContaTiempo( 4000,ve ) Endif
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// // // //
Pgina:
31
Retur nil Nota: Las variables de entrada de la funcin LLamaMensage( ve , c1 , c2 , cp , nf , tf , cl , me ) corresponden a los siguientes parmetros: ve c1 y c2 cp nf tf cl me => => => => => => => Ventana que llama el mensaje. Posicin del mensaje dentro de la ventana. Color de la ventana. Tipo de letra a utilizar, por defecto(Arial) Tamao de la letra que esta utilizando. Color de la letra que se esta utilizando. Mensaje que necesitamos mostrar.
La constante interna de C3, bsSingle muestra un marco, al rededor del mensaje. **************************************************************************
Mostrar Datos.
Como ultimo ejercicio de esta practica, vamos a construir un mdulo, para mostrar datos o montar fichas vacas, etc, etc., as para montar este mdulo vamos a utilizar, los siguientes comandos internos de C3, Method, Class y Return, las variables de entorno de C3, Brush y Font , las datas Caption, Color, Name, Alignament Transparent y Size , junto con las funciones, Tlabel(), Create() y SetBounds() tal como se muestra a continuacin: /* * Modulo Para Mostrar Datos. */ Method SayDatos( va,ve,c1,c2,co,nf,tf,cf,al,ts,md ) Class TPrincipal va :=TLabel():Create( ve ) va :Caption:= md va :SetBounds( c1,c2 ) va :Brush:Color:= co va :Font:Name:= nf va :Font:Size:= tf va :Font:Color:= cf va :Transparent:= ts va :Alignment:= al Retur Nil Nota: Las variables de entrada de la funcin SayDatos( va,ve , c1 , c2 , co , nf , tf , cf , al,ts,md ) corresponden a los siguientes parmetros: va ve c1,c2 co nf tf cf al ts => => => => => => => => => Variable de la Funcin que la llama. Ventana que llama a la Funcin. Coordenadas para los Datos. Color del Fondo de los Datos. Tipo de Letra. Tamao de la Letra. Color de la Letra. Alineamiento de la Escritura. Transparencia de la Escritura.
fraguibo1@hotmail.com Pgina:
32
md => Escritura que se tiene que mostrar. Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo tenemos que ejecutar el programa ArchiPel.exe y pulsar en la opcin Alta de Fichas , del menu principal y nos aparecer en la pantalla una ventana, con el siguiente mensaje que nos pedir:
***************************************************************************
fraguibo1@hotmail.com
Pgina:
33
fraguibo1@hotmail.com
Pgina:
34
Practica - 8
En esta practica vamos a terminar de construir, el Modulo que nos permita la entrada de Datos , as que lo primero que haremos ser, aadir al modulo de la Declaracin de Mtodos , las siguientes Variables , oNU,oTE,oNA,oDU,oCL,oTN,oTO,oAN,oA1,oA2 oA3,oA4,oA5,oA6,oDR,oPR,oGI,oFO,oMU,oDI,oR1,oR2,oR3,oR4 , que son las que corresponden a los Registros de la Base de Datos y los siguientes mtodos Method FichaVacia , este mtodo nos mostrara una Ficha Vaca, Method FichaRecNue , este mtodo nos presenta una Ficha nueva Vaca, con todas las entradas activas, para poder rellenar los datos que nos pide y Method Archivar , este mtodo nos gravara, los datos del ficha en la Base de Datos , tal como se muestra a continuacin:
Buscar Fichas.
A continuacin vamos a completar el mdulo para Buscar Fichas , as que le aadiremos tres nuevas lneas, para que compruebe si la ficha ya esta archivada y si no la encuentra, que nos presente una Ficha Vaca , para poder rellenarla y guardarla, en la Base de Datos , a continuacin se muestran las nuevas lneas de cdigo: /* * Modulo para Buscar Fichas. */ Method BuscaFicha( tr,me ) Class TPrincipal
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
35
Local venta,edit, n:=0 ,fi :=Space(34) ,mos,bf // Creamos la ventana. Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0, 0, 474, 210 ) Venta :Position := poActiveCenter if tr =1 // Hacer Fichas Nuevas. bf:="Comprobar si Esta Ficha ya Esta Archivada" Venta :Caption := Space(40)+" Hacer Fichas Nuevas " ::SayDatos( mos,Venta,30,10,,'Arial Black',25,,, .t. ,'Ficha Para dar de Alta' ) endif Edit := TEdit():Create(Venta) Edit :SetBounds( 30, 70, 410, 0 ) Edit :Font:Name:= "Arial" Edit :Font:Size:= 14 edit :caption:= fi edit :OnExit:={|oSender| fi := Edit :Caption ,Venta :Close(), Venta :Destroy()} // Boton Para Comprobar si Existe la Ficha. ::CrearBoton( Venta,110,122,245,30,9,bf ,{|oSender| fi := Edit :Caption,; venta :Close(), venta :Destroy()}) Venta :ShowModal() // Abre Base de Datos y Busca la Ficha. if !Empty( fi ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( fi ) n :=Recno() if !eof() if tr =1 // Si la Encuentra Nos Avisa con un Mensaje. ::VenMenAuto( 570,170,2,2, clLime) close data return nil endif endif endif Close Data // Si no hay Nada que Buscar Vuelve al Men. if n =0 return nil endif if me =1 // Si no la Encuentra nos Presenta una Ficha Nueva. ::FichaRecNue(, fi,1 ) endif Return Nil ***************************************************************************
36
A continuacin vamos a construir una Ficha Vaca , para poder entrar datos, corregir y mostrar, las fichas que ya estn archivadas, as para la construccin de este mdulo, vamos a utilizar los siguientes comandos internos de C3, Method, Class y Return , la variable de entorno de C3, Brush , las datas AutoSize, Color, BorderStyle y Transparent , junto con las funciones, Tlabel(), Create(), SetBounds() y la funcin que creamos nosotros, en la practica anterior, SayDatos , tal como se muestra a continuacin: /* * Mdulo Para Construir una Ficha Vaca. */ Method FichaVacia( va,ve,c1,c2,c3,c4,co,nf,tf,cf,al ) Class TPrincipal // Crea el Recuadro Para la Ficha. va := TLabel():Create( ve ) va :AutoSize := .f. va :SetBounds( c1,c2,c3,c4 ) va :Brush:Color := co va :BorderStyle := bsSingle va :Transparent := .f. // Crear una Ficha Vaca. ::SayDatos( va,ve,20,30,co ,,,,,.f., 'Titulo Nacional : ') ::SayDatos( va,ve,496,30,co ,,,,,.f., 'Numero : .' ) ::SayDatos( va,ve,20,60,co ,,,,,.f., 'Titulo Original :' ) ::SayDatos( va,ve,496,60,co ,,,,,.f., 'Tema : ' +Repli(' . ',3)) ::SayDatos( va,ve,20,90,co ,,,,,.f., 'Nacionalidad : . ' ) ::SayDatos( va,ve,496,90,co ,,,,,.f., 'Color : ' +Repli(' . ',8)) ::SayDatos( va,ve,20,120,co ,,,,,.f., 'Duracin : ' +Repli(' . ',4)) ::SayDatos( va,ve,496,120,co ,,,,,.f., 'Ao : ' +Repli(' . ',9)) ::SayDatos( va,ve,20,150,co ,,,,,.f., '1 Actor : ' +Repli(' . ',5)) ::SayDatos( va,ve,384,150,co ,,,,,.f., '2 Actor : . .' ) ::SayDatos( va,ve,20,180,co ,,,,,.f., '3 Actor : ' +Repli(' . ',5)) ::SayDatos( va,ve,384,180,co ,,,,,.f., '4 Actor : . .' ) ::SayDatos( va,ve,20,210,co ,,,,,.f., 'Distribucin : . .' ) ::SayDatos( va,ve,384,210,co ,,,,,.f., 'Produccin :' ) ::SayDatos( va,ve,20,240,co ,,,,,.f., 'Guionista : ' +Repli(' . ',4)) ::SayDatos( va,ve,384,240,co ,,,,,.f., 'Fotografa : .' ) ::SayDatos( va,ve,20,270,co ,,,,,.f., 'Msica : ' +Repli(' . ',5)) ::SayDatos( va,ve,384,270,co ,,,,,.f., 'Direccin : .' ) ::SayDatos( va,ve,20,310,co ,,,,,.f., 'Argumento : ' ) Return Nil Nota: Las variables de la entrada de la funcin, FichaVacia( va,ve,c1,c2,c3,c4,co,nf,tf,cf,al ) equivale a los siguientes parmetros: va ve c1,c2,c3,c4 co nf tf cf al => => => => => => => => Variable de la Funcin. Ventana que llama a esta Ficha. Coordenadas del recuadro de la Ficha. Color del fondo del Recuadro. Tipo de Letra a utilizar. Tamao de la Letra que se va a utilizar. Color de la Letra que se va a utilizar. Alineamiento de la Letra.
**************************************************************************
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
37
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
**************************************************************************
38
Seguidamente construiremos un mdulo, que nos mostrara una ficha para entrada de Datos nuevos y que luego, como vayamos avanzando en estas practicas, aadindole unas cuantas lneas de codigo ms, lo utilizremos tambin para corregir los datos de las Fichas que ya este archivada en la Base de Datos . Para la construccin de este mdulo, vamos a utilizar los siguientes comandos internos de C3, Method/Return, Class, Local, If/ElseIf/Endif, Use, Index, New Via, Do While/EndDo, Close Data y oSender , las variables locales, Venta oVar, mos, cd, cf, tv, arco, nuco y carco, junto con las variables Privadas , que hemos declarado en el modulo Declaracin de Mtodos , la variable de entorno de C3, Font , las datas BorderStyle, Position, Caption, Alignment y Size , el evento OnExit , junto con las funciones, Array(), Space(), dbGotop() OrdSetFocus(), Eof(), dbSkip(), Tform(), Create(), SetBounds(), Tedit() ShowModal, Close(), Destry() y la que vamos a construir a continuacin nosotros archivar , tal como se muestra a continuacin: /* * Modulo de Entrada de Fichas Nuevas y Corregir Datos. */ Method FichaRecNue( x,x1,x2 ) Class TPrincipal Local Venta, oVar, mos ,cd, cf, tv, arco, nuco, carco oVar :=Array(22) if x2 =1 ::oTN :=Space(34); ::oNU :=0; ::oTO :=Space(34); ::oTE :=Space(10); ::oNA :=Space(20) ::oCL :=Space(6); ::oDU :=Space(6); ::oAN :=Space(6); ::oA1 :=Space(25) ::oA2 :=Space(25) ;::oA3 :=Space(25); ::oA4 :=Space(25); ::oDR :=Space(25) ::oPR :=Space(25); ::oGI :=Space(25); ::oFO :=Space(25); ::oMU :=Space(25) ::oDI :=Space(25); ::oR1 :=Space(94); ::oR2 :=Space(94) ::oR3 :=Space(94) cf :=clLime arco := "Archivar Esta Ficha" carco := "Cancelar Archivar Ficha" nuco :=0 tv:= Space(54)+ 'Rellenar los datos para una ficha nueva' // Recuperamos la Ultima Ficha Para Numeracin Automtica. Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'NU','FiPelicu' )) FiPelicu ->(DbGoTop()) While FiPelicu ->(!Eof()) ::oNU := FiPelicu -> NU FiPelicu ->(DbSkip()) EndDo Close Data ::oNU := ::oNU+1 // Poner Nmero de Codigo Automtico. Cd :=StrZero(:: oNU,10 ) endif // Ficha Nueva Para Entrada o Corregir Datos. Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0, 0, 696, 500 ) Venta :Position := poActiveCenter Venta :Caption:=tv
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
39
// Llama Ficha Vaca. ::FichaVacia( mos,Venta,10,10,670,404, cf,,,,) // Entrada del Numero de Codigo Automtico. oVar[1] := TLabel():Create( Venta ) oVar[1] :SetBounds(570,28) oVar[1] :Brush:Color:=clWhite oVar[1] :BorderStyle := bsSingle oVar[1] :Transparent:=.f. oVar[1] :Font:Size:=12 oVar[1] :Caption:=' '+ Cd // Entrada del Titulo Nacional. oVar[2] := TEdit():Create( Venta ) oVar[2] :SetBounds( 124, 28, 300, 0 ) oVar[2] :Font:Size:=11 oVar[2] :Caption:= ::oTN oVar[2] :OnExit:={|oSender| ::oTN := oVar[2] :Caption} // Entrada del Titulo Original. oVar[3] := TEdit():Create( Venta ) oVar[3] :SetBounds( 124, 58, 300, 0 ) oVar[3] :Font:Size:=11 oVar[3] :Caption:= ::oTO oVar[3]:OnExit:={|oSender| ::oTO := oVar[3] :Caption} // Entrada del Tema. oVar[4] :=TEdit():Create( Venta ) oVar[4] :SetBounds(580, 58, 90, 0 ) oVar[4] :Font:Size:=11 oVar[4] :Caption:= ::oTE oVar[4] :OnExit:={|oSender| ::oTE := oVar[4] :Caption} // Entrada de la Nacionalidad. oVar[5] := TEdit():Create( Venta) oVar[5] :SetBounds(124, 88, 160, 0 ) oVar[5] :Font:Size:=11 oVar[5] :Caption:= ::oNA oVar[5] :OnExit:={|oSender| ::oNA := oVar[5] :Caption} // Entrada del Color. oVar[6] := TEdit():Create( Venta) oVar[6] :SetBounds(622, 88, 48, 0 ) oVar[6] :Font:Size:=11 oVar[6] :Caption:= ::oCL oVar[6] :OnExit:={|oSender| ::oCL := oVar[6] :Caption} // Entrada de la Duracin. oVar[7] := TEdit():Create( Venta ) oVar[7] :SetBounds(124, 118, 48, 0 ) oVar[7] :Font:Size:=11 oVar[7] :Alignment:=taRightJustify oVar[7] :Caption:= ::oDU oVar[7] :OnExit:={|oSender| ::oDU := oVar[7] :Caption} // Entrada de la Fecha. oVar[8] := TEdit():Create( Venta )
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
40
oVar[8] :SetBounds(628, 118, 42, 0 ) oVar[8] :Font:Size:=11 oVar[8] :Caption:= ::oAN oVar[8] :OnExit:={|oSender| ::oAN := oVar[8] :Caption} // Entrada de la Distribuidora. oVar[9] := TEdit():Create( Venta ) oVar[9] :SetBounds( 124, 148, 190, 0 ) oVar[9] :Font:Size:=11 oVar[9] :Caption:= ::oA1 oVar[9] :OnExit:={|oSender| ::oA1 := oVar[9] :Caption} // Entrada del Productor. oVar[10] := TEdit():Create( Venta ) oVar[10] :SetBounds( 480, 148, 190, 0 ) oVar[10] :Font:Size:=11 oVar[10] :Caption:= ::oA2 oVar [ 10] :OnExit:={|oSender| ::oA2 := oVar[10] :Caption} // Entrada del Guionista. oVar[11] := TEdit():Create( Venta ) oVar[11] :SetBounds( 124, 178, 190, 0 ) oVar[11] :Font:Size:=11 oVar[11] :Caption:= ::oA3 oVar[11] :OnExit:={|oSender| ::oA3 := oVar[11] :Caption} // Entrada del Director de Fotografa. oVar[12] := TEdit():Create( Venta ) oVar[12] :SetBounds( 480, 178, 190, 0 ) oVar[12] :Font:Size:=11 oVar[12] :Caption:= ::oA4 oVar[12] :OnExit:={|oSender |::oA4 := oVar[12] :Caption} // Entrada del Director de Msica. oVar[13] := TEdit():Create( Venta ) oVar[13] :SetBounds( 124, 208, 190, 0 ) oVar[13] :Font:Size:=11 oVar[13] :Caption:= ::oDR oVar[13] :OnExit:={|oSender| ::oDR := oVar[13] :Caption} // Entrada del Director. oVar[14] := TEdit():Create( Venta ) oVar[14] :SetBounds( 480, 208, 190, 0 ) oVar[14] :Font:Size:=11 oVar[14] :Caption:= ::oPR oVar[14] :OnExit:={|oSender| ::oPR := oVar[14] :Caption} // Entrada del 1 Artista. oVar[15] := TEdit():Create( Venta ) oVar[15] :SetBounds( 124, 238, 190, 0 ) oVar[15]: Font:Size:=11 oVar[15] :Caption:= ::oGI oVar[15] :OnExit:={|oSender| ::oGI := oVar[15] :Caption} // Entrada del 2 Artista. oVar[16] := TEdit():Create( Venta ) oVar[16] :SetBounds( 480, 238, 190, 0 ) oVar[16] :Font:Size:=11
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
41
oVar[16] :Caption:= ::oFO oVar[16] :OnExit:={|oSender| ::oFO := oVar[16 ]:Caption} // Entrada del 3 Artista. oVar[17] := TEdit():Create( Venta ) oVar[17] :SetBounds( 124, 268, 190, 0 ) oVar[17] :Font:Size:=11 oVar[17] :Caption:= ::oMU oVar[17] :OnExit:={|oSender| ::oMU := oVar[17] :Caption} // Entrada del 4 Artista. oVar[18] := TEdit():Create( Venta ) oVar[18] :SetBounds( 480, 268, 190, 0 ) oVar[18] :Font:Size:=11 oVar[18] :Caption:= ::oDI oVar[18] :OnExit:={|oSender| ::oDI := oVar[18] :Caption} // Entrada del Argumento. oVar[19] := TEdit():Create( Venta ) oVar[19] :SetBounds( 110, 310, 560, 0 ) oVar[19] :Font:Size:=11 oVar[19] :Caption:= ::oR1 oVar[19] :OnExit:={|oSender| ::oR1 := oVar[19] :Caption} oVar[20]:= TEdit():Create( Venta ) oVar[20] :SetBounds( 110, 333, 560, 0 ) oVar[20] :Font:Size:=11 oVar[20] :Caption:= ::oR2 oVar[20] :OnExit:={|oSender| ::oR2 := oVar[20] :Caption} oVar[21] := TEdit():Create( Venta ) oVar[21] :SetBounds( 110, 356, 560, 0 ) oVar[21] :Font:Size:=11 oVar[21] :Caption:= ::oR3 oVar[21] :OnExit:={|oSender| ::oR3 := oVar[21] :Caption} oVar[22] := TEdit():Create( Venta ) oVar[22] :SetBounds( 110, 379, 560, 0 ) oVar[22] :Font:Size:=11 oVar[22] :Caption:= ::oR4 oVar[22] :OnExit:={|oSender| ::oR4 := oVar[22] :Caption} // Boton Para Archivar. ::CrearBoton( Venta,21,430,214,23,9,arco ,{|oSender|::Archivar( ::oNU, ; ::oTN,::oTO,::oTE,::oNA,::oCL,::oDU,::oAN,::oA1,::oA2,::oA3,::oA4, ; ::oDR,::oPR,::oGI,::oFO,::oMU,::oDI,::oR1,::oR2,::oR3,::oR4,nuco,x1 ),; Venta:Close(),Venta:Destroy()}) // Boton Para Cancelar. ::CrearBoton( Venta,470,430,200,23,9,carco, ; {|oSender|Venta:Close(),Venta:Destroy()}) Venta :ShowModal() Return Nil ***************************************************************************
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
42
fraguibo1@hotmail.com
Pgina:
43
***************************************************************************
fraguibo1@hotmail.com
Pgina:
44
Practica - 9
En esta prctica lo primero que vamos hacer, ser terminar de construir, el Modulo que nos permita la entrada de Datos y tambin Corregir las los Datos de las Fichas , as que lo primero que haremos ser, configurar la opcin Corregir Fichas , del Men Principal , tal como se muestra a continuacin:
fraguibo1@hotmail.com
Pgina:
45
Las variables de la entrada de la funcin, BuscaFicha( x,me ) equivale a los siguientes parmetros: x => Trabajo a Realizar. me => Mensaje a Mostrar. **************************************************************************
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea // Nueva Lnea // Nueva Lnea // Nueva Lnea // Nueva Lnea // Nueva Lnea
fraguibo1@hotmail.com
Pgina:
46
edit :OnExit:={|oSender| f i:= Edit :Caption, Venta :Close(), Venta :Destroy()} // Boton Para Comprobar si Existe la Ficha. ::CrearBoton( Venta ,110,122,245,30,9, bf ,{|oSender| fi := Edit :Caption,; venta :Close(), venta :Destroy()}) Venta :ShowModal() // Abre Base de Datos y Busca la Ficha. if !Empty( fi ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( fi ) n :=Recno() if !eof() if x =1 // Si la Encuentra Nos Avisa con un Mensaje. ::VenMenAuto(570,170,2,2,clLime) close data return nil elseif x =2 // Nueva Lnea. close data // Nueva Lnea. ::FichaRecNue(, fi,2 ) // Nueva Lnea. return nil // Nueva Lnea. endif endif endif Close Data // Si no hay Nada que Buscar Vuelve al Men. if n =0 return nil endif if me =1 // Si no la Encuentra nos Presenta una Ficha Nueva. ::FichaRecNue(, fi,1 ) elseif me =2 // Nueva Lnea. // Si no la Encuentra nos Avisa con un Mensaje. // Nueva Lnea. ::VenMenAuto(560,170,2,6,co) // Nueva Lnea. endif Return Nil Nota: Las variables de la entrada de la funcin, FichaRecNue( x,x1,x2 ) siguientes parmetros: x1 => La Ficha a Buscar. x2 => Presenta la Ficha Para Rectificar.
equivale a los
**************************************************************************
Mostrar Mensajes.
Seguidamente en el Mdulo para Mostrar Mensajes , le aadiremos un nuevo mensaje para cuando busque una ficha y no la encuentre, que nos muestre un mensaje diciendonos que la ficha que buscamos no se encuentra en la Base de Datos. Una vez que este colocado este nuevo mensaje, el mdulo deber de quedar tal como se muestra a continuacin:
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
47
/* * Modulo Para Mostrar Mensajes. */ Method LLamaMensage( ve,c1,c2,cp,nf,tf,cl,me ) Class TPrincipal Local Men // Ventana Para Mostrar los Mensajes. Men := TLabel():Create( ve ) Men :SetBounds(c1,c2) Men :Brush:Color:= cp Men :BorderStyle := bsSingle Men :Transparent:=.f. Men :Font:Name:= nf Men :Font:Size:= .t. Men :Font:Size := tf Men :Font:Color := cl // Mensajes que hay que Mostrar . if me =1 Men :Caption:=' La Base de Datos No Existe '+Chr(13)+; ' Sin Ella No Puedo Realizar' +Chr(13)+; ' Ninguna Clase de Gestin. ' elseif me =2 Men :Caption:=' La Ficha que Usted Quiere dar '+Chr(13)+; ' de Alta ya Esta Archivada. ' ::ContaTiempo(4000,ve) elseif me =3 Men :Caption:=' Esta Ficha ha Sido Archivada '+Chr(13)+; Space(12)+' Correctamente. ' elseif me =5 Men:Caption:=' Espere por Favor a que Termine '+Chr(13)+; ' de Archivar Esta Ficha. ' elseif me =6 men :Caption:= ' La Ficha que Usted Busca No ' +Chr(13)+; ' se Encuentra en Este Archivo ' ***************************************************************************
48
if x2 =1 ::oTN :=Space(34); ::oNU :=0;: :oTO :=Space(34); ::oTE :=Space(10) ::oNA :=Space(20); ::oCL :=Space(6); ::oDU :=Space(6); ::oAN :=Space(6) ::oA1 :=Space(25);: :oA2 :=Space(25); ::oA3 :=Space(25); ::oA4 :=Space(25) ::oDR :=Space(25); ::oPR :=Space(25); ::oGI :=Space(25); ::oFO :=Space(25) ::oMU :=Space(25); ::oDI :=Space(25); ::oR1 :=Space(94); ::oR2 :=Space(94) ::oR3 :=Space(94); ::oR4 :=Space(94) tv :=Space(54)+ 'Rellenar los datos para una ficha nueva' cf :=clLime arco := "Archivar Esta Ficha" carco := "Cancelar Archivar Ficha" nuco :=0 // Recuperamos la Ultima Ficha Para Numeracin Automtica. Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'NU','FiPelicu' )) FiPelicu ->(DbGoTop()) While FiPelicu ->(!Eof()) ::oNU := FiPelicu -> NU FiPelicu ->(DbSkip()) EndDo Close Data ::oNU := ::oNU +1 Cd :=StrZero( ::oNU ,10) elseif x2=2 // Abre Base de Datos y Busca la Ficha. if !Empty( x1 ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( x1 ) // Iguala las Variables. ::oNU :=FiPelicu->NU; ::oTN :=FiPelicu->TN; ::oTO :=FiPelicu->TO ::oTE :=FiPelicu->TE; ::oNA :=FiPelicu->NA; ::oCL :=FiPelicu->CL ::oDU :=FiPelicu->DU; ::oAN :=FiPelicu->AN; ::oA1 :=FiPelicu->A1 ::oA2 :=FiPelicu->A2; ::oA3 :=FiPelicu->A3; ::oA4 :=FiPelicu->A4 ::oDR :=FiPelicu->DR; ::oPR :=FiPelicu->PR; ::oGI :=FiPelicu->GI ::oFO :=FiPelicu->FO; ::oMU :=FiPelicu->MU; ::oDI :=FiPelicu->DI ::oR1 :=FiPelicu->R1; ::oR2 :=FiPelicu->R2; ::oR3 :=FiPelicu->R3 ::oR4 :=FiPelicu->R4 tv :=Space(52)+ 'Aqu Tiene la Ficha que Usted Quiere Corregir' cf :=clYellow arco := "Corregir Esta Ficha" carco := "Cancelar Corregir Ficha" nuco :=1 if !eof() Close Data endif endif Cd :=StrZero( ::oNU ,10) endif // Nueva Lnea. // // // // // // // // // // // // // // // // // // // // // // // Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Lnea. Lnea. Lnea. Lnea. Lnea. Lnea . Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea.
El resto del modulo hay que dejarlo igual que estaba en la prctica anterior. **************************************************************************
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
49
fraguibo1@hotmail.com
Pgina:
50
Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo tenemos que ejecutar el programa ArchiPel.exe y pulsar en la opcin Corregir Fichas , del menu principal y nos aparecer en la pantalla una ventana, con el siguiente mensaje que nos pedir:
fraguibo1@hotmail.com
Pgina:
51
fraguibo1@hotmail.com
Pgina:
52
Practica - 10
Dar de Baja Fichas.
En esta practica vamos a construir, el Modulo que nos permita, dar de Baja o Borrar una Ficha , este Modulo en principio lo utilizaremos, para dar de Baja o Borrar fichas pero tambin lo utilizaremos, para Imprimir y Consulta r fichas . Para empezar esta prctica, lo primero que haremos ser, configurar el Modulo de Declaracin de Mtodos , en donde le aadiremos dos nuevos Mtodos , llamados conBoImpri y BorraFicha , tal como se muestra a continuacin:
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha
53
Nota: Las variables de la entrada de la funcin, BuscaBaseDatos( x,tr,va,me ) equivale a los siguientes parmetros: x =1 Buscar si Existe la Ficha. tr =3 Presenta una Ficha Para Corregir. me =2 Mensage a Mostrar. ***************************************************************************
Buscar Fichas.
A continuacin configuraremos tambin el modulo Buscar Fichas , en donde primero aadiremos, siete nuevas lneas de Codigo en el primer If/EndIf , el cual una vez aadidas estas nuevas lneas de Codigo , deber de quedar tal como se muestra a continuacin: if tr =1 // Hacer Fichas Nuevas. bf := "Comprobar si Esta Ficha ya Esta Archivada" Venta :Caption := Space(40)+ "Hacer Fichas Nuevas" ::SayDatos( mos,Venta, 30,10,, 'Arial Black' ,25,,,.t.,; 'Ficha Para dar de Alta' ) elseif tr =2 // Corregir Fichas co :=clYellow bf := "Buscar Esta Ficha Para Rectificarla" Venta :Caption := Space(41)+ "Corregir Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Corregir' ) elseif tr =3 // Borrar Fichas co :=clRed bf := "Buscar Esta Ficha Para Borrarla" Venta :Caption := Space(44)+ "Borrar Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Borrar' ) endif
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
Seguidamente terminaremos de configurar este Modulo , aadindole cuatro nuevas lneas de Codigo , en la parte de Abre Base de Datos y Busca la Ficha , el cual una vez aadidas estas nuevas lneas de Codigo , deber de quedar como se muestra a continuacin: // Abre Base de Datos y Busca la Ficha. if !Empty( fi ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( fi ) n :=Recno() if !eof() if tr =1 // Si la Encuentra Nos Avisa con un Mensaje. ::VenMenAuto(570,170,2,2,clLime) close data return nil elseif tr =2 close data ::FichaRecNue(, fi ,2)
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
54
return nil elseif tr =3 close data ::ConBoImpri( fi ,2) return nil endif endif endif
***************************************************************************
Configurar Mensajes.
Seguidamente vamos a continuar configurando el modulo, aadindole dos nuevas opciones, junto con dos nuevos mensajes, tal como se muestra a continuacin: // Mensajes que hay que Mostrar. elseif me =7 men :Caption:=' Esta Usted Seguro de Querer '+Chr(13)+; Space(8)+' Borrar Esta Ficha ' elseif me =8 men :Caption:=' Esta Ficha ha Sido Borrada '+Chr(13)+; Space(10)+' Correctamente '
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
**************************************************************************
55
n :=Recno() // Iguala las Variables. ::oNU :=FiPelicu->NU; ::oTN :=FiPelicu->TN; ::oTO :=FiPelicu->TO ::oTE :=FiPelicu->TE; ::oNA :=FiPelicu->NA; ::oCL :=FiPelicu->CL ::oDU :=FiPelicu->DU; ::oAN :=FiPelicu->AN; ::oA1 :=FiPelicu->A1 ::oA2 :=FiPelicu->A2; ::oA3 :=FiPelicu->A3; ::oA4 :=FiPelicu->A4 ::oDR :=FiPelicu->DR; ::oPR :=FiPelicu->PR; ::oGI :=FiPelicu->GI ::oFO :=FiPelicu->FO; ::oMU :=FiPelicu->MU; ::oDI :=FiPelicu->DI ::oR1 :=FiPelicu->R1; ::oR2 :=FiPelicu->R2; ::oR3 :=FiPelicu->R3 ::oR4 :=FiPelicu->R4 if !eof() Close Data Cd :=StrZero( ::oNU ,10) // Si la Encuentra Nos la Muestra . Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0, 0, 696, 490 ) Venta :Position := poActiveCenter if x1 =2 mb :=" Cancelar Borrar Ficha " Venta :Brush:Color := clRed Venta :Caption:=Space(44)+' Aqu Tiene la Ficha que '+; ' Usted a Solicitado Para Borrar ' endif // Muestra Ficha Vaca. ::FichaVacia( mos,Venta ,10,10,670,394,clAqua,,,,) // Muestra los Datos de la Ficha . ::SayDatos(mos,Venta,124,25,clAqua,,14,,,.f.,::oTN) ::SayDatos(mos,Venta,570,25,clAqua,,14,,,.f.,Cd) ::SayDatos(mos,Venta,124,55,clAqua,,14,,,.f.,::oTO) ::SayDatos(mos,Venta,584,55,clAqua,,14,,taRightJustify,.f.,::oTE) ::SayDatos(mos,Venta,124,85,clAqua,,14,,,.f.,::oNA) ::SayDatos(mos,Venta,622,85,clAqua,,14,,taRightJustify,.f.,::oCL) ::SayDatos(mos,Venta,124,115,clAqua,,14,,,.f.,::oDU) ::SayDatos(mos,Venta,622,115,clAqua,,14,,taRightJustify,.f.,::oAN) ::SayDatos(mos,Venta,124,145,clAqua,,14,,,.f.,::oA1) ::SayDatos(mos,Venta,466,145,clAqua,,14,,,.f.,::oA2) ::SayDatos(mos,Venta,124,175,clAqua,,14,,,.f.,::oA3) ::SayDatos(mos,Venta,466,175,clAqua,,14,,,.f.,::oA4) ::SayDatos(mos,Venta,124,205,clAqua,,14,,,.f.,::oDR) ::SayDatos(mos,Venta,466,205,clAqua,,14,,,.f.,::oPR) ::SayDatos(mos,Venta,124,235,clAqua,,14,,,.f.,::oGI) ::SayDatos(mos,Venta,466,235,clAqua,,14,,,.f.,::oFO) ::SayDatos(mos,Venta,124,265,clAqua,,14,,,.f.,::oMU) ::SayDatos(mos,Venta,466,265,clAqua,,14,,,.f.,::oDI) ::SayDatos(mos,Venta,114,310,clAqua,,11,,,.f.,::oR1) ::SayDatos(mos,Venta,114,330,clAqua,,11,,,.f.,::oR2) ::SayDatos(mos,Venta,114,350,clAqua,,11,,,.f.,::oR3) ::SayDatos(mos,Venta,114,370,clAqua,,11,,,.f.,::oR4)
fraguibo1@hotmail.com
Pgina:
56
if x1 =2 // Boton Para Borrar. ::CrearBoton( Venta ,135,420,200,23,9," Borrar Esta Ficha ",; {|oSender|::BorraFicha( x ), Venta :Close(), Venta :Destroy()}) // Boton Para Cancelar. ::CrearBoton( Venta ,370,420,200,23,9,mb,; {|oSender| Venta :Close(), Venta :Destroy()}) endif Venta :ShowModal() endif endif Return Nil ***************************************************************************
Borrar Ficha.
Por ultimo en esta prctica vamos a construir el Modulo , que nos Borrara o nos Dar de Baja , la Ficha que hayamos seleccionado. Para la construccin de este Modulo , vamos a utilizar los siguientes Comandos internos de C3 Method/Return, Class, Local, If/EndIf, .AND., Use Reindex, New Via, pack y Close Data, las Variables Venta, Borra y n , la variable de entorno de C3, Brush , las datas BorderStyle, Color, Position y Caption , junto con la funciones Tform(), Create(), setBounds(), ShowModal() Space(), empty(), OrdSetFocus(), Close()2, Destroy(), dbSeek(), Recno() Delete() y las funciones creadas por nosotros en anteriores prcticas, CrearBoton() VenMenAuto() y LlamaMensage() , tal como se muestra a continuacin: */ * Modulo para Borrar Ficha. */ Method BorraFicha( x ) Class TPrincipal Local venta,Borra :=.F., n :=0 // Ventana de Confirmacin. Venta := TForm():Create() Venta :BorderStyle:=bsDialog Venta :SetBounds(0,0,530,200 ) Venta :Brush:Color:=clRed Venta :Position:=poActiveCenter venta :Caption:=Space(48)+ 'Aviso Muy Grave' // LLama Mensage de Confirmacin. ::LLamaMensage( Venta ,20,18,clYellow," Arial Black" ,22,clRed,7) : :CrearBoton( venta ,80,124,140,23,9, "SI" ,; {|oSender|Borra:=.T., Venta :Close(), Venta :Destroy()}) :: CrearBoton( venta ,300,124,140,23,9, "NO" ,; {|oSender| Venta :Close(), Venta :Destroy()}) venta :showModal() // Borra la Ficha. if Borra .AND. !Empty(x)
fraguibo1@hotmail.com
Pgina:
57
if Borra:=.T. Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) if DbSeek( x ) n :=Recno() DbDelete() Pack Close Data ::VenMenAuto(520,170,2,8,clRed) endif endif endif return nil *************************************************************************** Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo tenemos que ejecutar el programa ArchiPel.exe pulsar en la opcin Borrar Fichas , del menu principal y nos aparecer en la pantalla, una ventana pidindonos el nombre de una Ficha Para Borrar , podemos introducir el nombre de una de las fichas, que tenemos guardadas en la Base de Datos , de las practicas anteriores Al Pulsar Enter o con el Ratn en el boton de "Buscar Esta Ficha Para Borrarla", si la ficha no se encuentra en la Base de Datos , nos mostrara un mensaje dicindonos, que la ficha no existe, pero si la encuentra nos la mostrara en pantalla. Al Pulsar Enter o con el Ratn en el boton de Borrar Esta Ficha , nos mostrara una ventana que nos preguntara , Esta Usted Seguro de Querer Borrar Esta Ficha , si le pulsamos con el ratn en el SI , nos Borrara la Ficha mostrndonos un mensaje, que nos dir que la Ficha ha sido Borrada Correctamente y nos volver al Men Principal. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Use Index Close Data Return Public Private .AND. Pack
La Antorcha de los Grandes Exitos (Fraguibo)
Chr() Array() Space() Create() Empety() dbSeek() Recno() Eof() dbDelete() StrZero()
fraguibo1@hotmail.com Pgina:
58
Practica - 11
Consultar Fichas.
Empezaremos esta prctica, configurando la entrada Consultar Fichas del Men Principal , tal como se muestra a continuacin: // Men Para Consultar las Fichas. Menu :MenuItem( ns+"Consultar Fichas","Buscar Fichas" +; " Para Consultar." ,{|oSender|::BusBaseDatos(1,4,,2)})
Nota: Las variables de la entrada de la funcin, BuscaBaseDatos( x,tr,va,me ) equivale a los siguientes parmetros: x =1 Buscar si Existe la Ficha. tr =3 Presenta una Ficha Para Consultar. me =2 Mensage a Mostrar. ***************************************************************************
Buscar Fichas.
A continuacin configuraremos tambin el modulo Buscar Fichas , en donde primero aadiremos, siete nuevas lneas de Codigo en el primer If/EndIf , el cual una vez aadidas estas nuevas lneas de Codigo , deber de quedar tal como se muestra a continuacin: if tr =1 // Hacer Fichas Nuevas. bf := "Comprobar si Esta Ficha ya Esta Archivada" Venta :Caption := Space(40)+ "Hacer Fichas Nuevas" ::SayDatos( mos,Venta, 30,10,, 'Arial Black' ,25,,,.t.,; 'Ficha Para dar de Alta' ) elseif tr =2 // Corregir Fichas co :=clYellow bf := "Buscar Esta Ficha Para Rectificarla" Venta :Caption := Space(41)+ "Corregir Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Corregir' ) elseif tr =3 // Borrar Fichas co :=clRed bf := "Buscar Esta Ficha Para Borrarla" Venta :Caption := Space(44)+ "Borrar Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Borrar' )
elseif tr=4 // Consultar Fichas. co:=clFuchsia bf:="Buscar Esta Ficha Para Consultar" Venta:Caption := Space(42)+"Consultar Fichas" ::SayDatos(mos,Venta,30,10,,'Arial Black',25,,,.t.,; 'Ficha Para Consultar')
La Antorcha de los Grandes Exitos (Fraguibo)
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
Pgina:
fraguibo1@hotmail.com
59
Seguidamente terminaremos de configurar este Modulo , aadindole cuatro nuevas lneas de Codigo , en la parte de Abre Base de Datos y Busca la Ficha , el cual una vez aadidas estas nuevas lneas de Codigo , deber de quedar como se muestra a continuacin: // Abre Base de Datos y Busca la Ficha. if !Empty( fi ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) DbSeek( fi ) n :=Recno() if !eof() if tr =1 // Si la Encuentra Nos Avisa con un Mensaje. ::VenMenAuto(570,170,2,2,clLime) close data return nil elseif tr =2 close data ::FichaRecNue(, fi ,2) return nil elseif tr =3 close data ::ConBoImpri( fi ,2) return nil
***************************************************************************
// Si la Encuentra Nos la Muestra. Venta:= TForm():Create() Venta:BorderStyle := bsDialog Venta:SetBounds( 0, 0, 696, 490 ) Venta:Position := poActiveCenter if x1=1 mb:="Salir de Consultar Ficha" Venta:Caption:=Space(52)+'Aqu Tiene la Ficha'+; ' que Usted a Solicitado' elseif x1=2
La Antorcha de los Grandes Exitos (Fraguibo)
fraguibo1@hotmail.com
Pgina:
60
mb:="Cancelar Borrar Ficha" Venta:Brush:Color := clRed Venta:Caption:=Space(44)+'Aqu Tiene la Ficha que'+; ' Usted a Solicitado Para Borrar' endif ***************************************************************************
Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo tenemos que ejecutar el programa ArchiPel.exe pulsar en la opcin Consultar Fichas , del menu principal y nos aparecer en la pantalla una ventana pidindonos el nombre de una Ficha Para Consultar , podemos introducir el nombre de una de las fichas, que tenemos guardadas en la Base de Datos , de las practicas anteriores Al Pulsar Enter o con el Ratn en el boton de "Buscar Esta Ficha Para Consultar" si la ficha no se encuentra en la Base de Datos , nos mostrara un mensaje dicindonos, que la ficha no existe, pero si la encuentra nos la mostrara en pantalla, lo cual nos demuestra que la prctica ha sido realizada correctamente. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. ***************************************************************************
fraguibo1@hotmail.com
Pgina:
61
fraguibo1@hotmail.com
Pgina:
62
Practica - 12
Listados.
En esta practica vamos a construir el Modulo , para mostrar los Listados de varias formas, por Nmero de Codigo , por Orden Alfabtico , por Temas , por Aos y por ultimo por Directores .
Declaracin de Mtodos.
Empezaremos esta practica, configurando el Modulo, de Declaracin de Mtodos, en el que le aadiremos una nueva lnea de Codigo , tal como se muestra a continuacin: Public: Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha Listados
// Nueva Lnea.
***************************************************************************
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le aadiremos unas cuantas lneas de Cdigo , en la seccin Men Para Mostrar Listados , en donde iremos configurando, las distintas llamadas al Mdulo , de Mostrar Listados , tal como se muestra a continuacin: // Men Para Mostrar Listados. Menu :MenuItem(ns+" Consultar Listado "," Listados por "+; " Varios Sistemas. ") Menu :BeginMenu() Menu :MenuItem(" Listado Por Codigo "," Listado por "+; " Nmero de Codigo ",{|oSender|::BusBaseDatos(2,1,'NU',)}) Menu :MenuItem(" Listado Por Alfabeto "," Listado por "+; " Orden Alfabtico. ",{|oSender|::BusBaseDatos(2,2,'TN',)}) Menu :MenuItem(" Listado Por Temas "," Listado por "+; " Temas. ",{|oSender|::BusBaseDatos(2,3,'TE',)}) Menu :MenuItem(" Listado Por Aos "," Listado por Ao "+; " de Produccin. ",{|oSender|::BusBaseDatos(2,5,'AN',)})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// // // // // // // // // // //
Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva
Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea.
Pgina:
63
Menu :MenuItem(" Listado por Direccin "," Listado por "+; "Directores. ",{|oSender|::BusBaseDatos(2,4,'DI',)}) Menu :EndMenu() // Nueva Lnea.
***************************************************************************
Mostrar Listados.
Por ultimo en esta prctica vamos a construir el Mdulo , para mostrarnos los Listados segn la opcin que hayamos elegido en el Men Principal. Para la construccin de este Mdulo , vamos a utilizar los siguientes, comandos internos de C3, Method/Return, Class, Local, If/EndIf, Use, index, New Via, While/Heido, Close Data y oSender , las variables Venta, String y aArray , las variables de entorno de C3, Brush, HeaderFont y Color , las Datas BorderStyle, Color, Position, Caption, Name, Size, Sizes, Header AlignMents, Bold, RowSelect, ShowFooter, AutoExpand y Items , junto con las funciones, Tform(), Create(), SetBounds(), Space(), TStringGrid() ordSetFocus(), dbGotop(), Eof(), aadd(), StrZero(), dbSkip(), SetFocus Close(), Destroy(), ShowModal() y la creada por nosotros en prcticas anteriores CrearBoton() , junto con las constantes de entorno de C3, bsDialog, taCenter poActiveCenter, taRightJustify y taLeftJustify , tal como se muestra a continuacin: /* * Modulo Para Mostrar Listados. */ Method Listados( tr,va ) Class TPrincipal Local venta, String, aArray
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
64
// Ventana Para Mostrar el Listado. Venta := TForm():Create() Venta :BorderStyle:=bsDialog Venta :SetBounds(0,0,796,522 ) Venta :Brush:Color:=clAqua Venta :Position:=poActiveCenter if tr =1 venta :Caption:=Space(76)+' Listado por Nmero de Codigo ' elseif tr =2 venta :Caption:=Space(76)+' Listado por Orden Alfabtico ' elseif tr =3 venta :Caption:=Space(82)+' Listado por Temas ' elseif tr =5 venta :caption:=Space(75)+' Listado por Ao de Produccin ' elseif tr =4 venta :Caption:=Space(79)+' Listado por Directores ' endif String := TStringGrid():Create( venta ) String :SetBounds( 12, 12, 766, 424 ) String :Font:Name:=" Arial " String :Font:Size:=10 String :Header := {" Codigo "," Titulo "," 1 Actor "," 2 Actor "," Tema ",; " Direccin "," Ao "," Distribucin "} String :Alignments:={taRightJustify,taLeftJustify,taLeftJustify,; taLeftJustify,taLeftJustify,taLeftJustify,taCenter,taLeftJustify} String :HeaderFont:Bold := .T. String :Sizes := { 82,220,150,150,84,150,48,150} String :RowSelect := .T. String :ShowFooter := .F. String :AutoExpand := .T. // Extrae los Datos Para los Listados. Use FiPelicu Index FiPelicu New Via ' DbfCdx ' FiPelicu ->(OrdSetFocus( va ,' FiPelicu ')) FiPelicu ->(DbGoTop()) aArray := {} While FiPelicu ->(!Eof()) aadd( aArray ,{StrZero( FiPelicu -> NU ,10), FiPelicu -> TN , FiPelicu -> A1 ,; FiPelicu -> A2 , FiPelicu -> TE , FiPelicu -> DI , FiPelicu -> AN , FiPelicu -> DR }) FiPelicu ->(dbSkip()) EndDo Close Data String :Items := aArray String :SetFocus() ::CrearBoton( venta ,125,451,215,23,9," Salir del Listado ",; {|oSender|Venta:Close(),Venta:Destroy()}) venta :showmodal() return nil //*********************************************************************//
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
65
Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo tenemos que ejecutar el programa ArchiPel.exe pulsar en la opcin Consultar Listados , del menu principal y nos aparecer en la pantalla varias formas de poder consultar los Listados , escogeremos la forma que ms se adapte a nuestras necesidades y nos aparecer el Listado , de todas las Fichas que tengamos guardadas en la Base de Datos , de las practicas anteriores, lo cual nos demuestra que la prctica ha sido realizada correctamente. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Use Index Close Data Return While/EndDo File() dbGoTop() Space() Create() Eof() aadd() StrZero() dbSkip()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
66
Practica - 13
Imprimir.
En esta practica vamos a construir el Modulo , que nos permitir Imprimir todas las Fichas, tanto las que terminemos de Rellenar , como las que Corrijamos y las que tengamos, almacenadas en la Base de Datos.
Declaracin de Mtodos.
Empezaremos esta practica, configurando el Modulo, de Declaracin de Mtodos, en el que le aadiremos una nueva lnea de Codigo , tal como se muestra a continuacin: Public: Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha Listados PrintFicha
// Nueva Lnea.
***************************************************************************
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le aadiremos unas lneas de Cdigo , en la seccin Men Para Imprimir , en donde configuraremos la llamada al Mdulo , de Imprimir Fichas , tal como se muestra a continuacin: // Men Para Imprimir. Menu :MenuItem (ns+"Imprimir","Imprimir Fichas o Listados." ) Menu :BeginMenu() Menu :MenuItem( "Imprimir Fichas","Imprimir Fichas de " +; "Pelculas." ,{|oSender|::BusBaseDatos(1,5,,2)}) Menu :EndMenu()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
67
Buscar Fichas.
A continuacin vamos a seguir configurando, el Modulo de Buscar Fichas , en donde le aadiremos un Variable Local y varias lneas de Cdigo , tal como se muestra a continuacin: /* * Modulo Buscar Fichas. */ Method BuscaFicha( tr,me ) Class TPrincipal Local venta,edit ,n:=0, fi :=Space(34) ,mos,bf,co, on // Creamos la ventana. Venta := TForm():Create() Venta :BorderStyle := bsDialog Venta :SetBounds( 0, 0, 474, 210 ) Venta :Position := poActiveCenter if tr =1 // Hacer Fichas Nuevas. bf := "Comprobar si Esta Ficha ya Esta Archivada" Venta :Caption := Space(40)+ "Hacer Fichas Nuevas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; 'Ficha Para dar de Alta' ) elseif tr =2 // Corregir Fichas co :=clYellow bf := "Buscar Esta Ficha Para Rectificarla" Venta :Caption := Space(41)+ "Corregir Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Corregir' ) elseif tr =3 // Borrar Fichas on :=2 co :=clRed bf := "Buscar Esta Ficha Para Borrarla" Venta :Caption := Space(44)+ "Borrar Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black',25 ,,,.t.,; ' Ficha Para Borrar' ) elseif tr =4 // Consultar Fichas. tr :=3 on :=1 co :=clFuchsia bf := "Buscar Esta Ficha Para Consultar" Venta :Caption := Space(42)+ "Consultar Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; 'Ficha Para Consultar' ) elseif tr =5 // Consultar Fichas. tr :=3 on :=3
La Antorcha de los Grandes Exitos (Fraguibo)
// Nueva Variable.
// Nueva Lnea.
// // // //
fraguibo1@hotmail.com
68
co :=clFuchsia bf := "Buscar Esta Ficha Para Imprimir" Venta :Caption := Space(43)+ "Imprimir Fichas" ::SayDatos( mos,Venta ,30,10,, 'Arial Black' ,25,,,.t.,; ' Ficha Para Imprimir' ) endif
// // // // //
En el resto del Mdulo no hay que modificar nada, ya que debe de quedar tal como estaba en la Prctica Anterior. ***************************************************************************
// // // // //
Pgina:
69
Seguidamente le aadiremos un nuevo Botn , para llamar al Mdulo de Imprimir , tal como se muestra a continuacin: if x1 =1 // Boton Para Imprimir. ::CrearBoton( Venta ,135,420,200,23,9, "Imprimir Esta Ficha" ,; {|oSender|::PrintFicha(x,2,::oNU,::oTN,::oTO,::oTE,::oNA,; ::oCL,::oDU,::oAN,::oA1,::oA2,::oA3,::oA4,::oDR,::oPR,::oGI,; ::oFO,::oMU,::oDI,::oR1,::oR2,::oR3,::oR4),Venta:Close(),; Venta :Destroy()}) elseif x1 =2 // Boton Para Borrar. ::CrearBoton( Venta ,135,420,200,23,9, "Borrar Esta Ficha" ,; {|oSender|::BorraFicha( x ), Venta :Close(), Venta :Destroy()}) endif // Boton Para Cancelar. ::CrearBoton( Venta ,370,420,200,23,9, mb ,; {|oSender| Venta :Close(), Venta :Destroy()}) ***************************************************************************
Imprimir Fichas.
A continuacin vamos a construir el Mdulo , que nos Imprimir las Fichas , con su correspondiente Marco , Igual que si fuese una Ficha Comercial . Para la construccin de este Mdulo , vamos a utilizar los siguientes comandos internos de C3, Method/return, Class, Local, If/EndIf, Use, Index, New Via Close Data y Printer , a dems de la Variables , que ya definimos en el Mdulo de Declaracin de Mtodos , las siguientes Variables Locales, n y cd , la Data Orientation , las Variables de Entorno, poPortrait, TA_LEFT y TA_RIGHT junto con las Funciones, Empty(), OrdSetFocus(), dbSeek(), Recno(), Eof() BeginDoc(), NewPage(), AllTrim(), Str(), StrZero(), EndDoc()2, Preview() Print() , junto con las tres que construiremos nosotros, despus de terminar este Mdulo PrintRecuBox(), PrintSombraBox() y PrintTexto() , a hora construiremos la Ficha tal como se muestra a continuacin: Method PrintFicha( x,in,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14 ,; x15,x16,x17,x18,x19,x20,x21,x22 ) Class TPrincipal Local n:=0 ,Cd if in =1 // Abre Base de Datos y Busca la Ficha Para Imprimir. if !Empty( x ) Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( 'TN','FiPelicu' )) dbSeek( x ) n :=Recno() // Iguala las Variables Desde la Base de Datos. ::oNU:= FiPelicu ->NU;::oTN:= FiPelicu ->TN;::oTO:= FiPelicu ->TO ::oTE:= FiPelicu ->TE;::oNA:= FiPelicu ->NA;::oCL:= FiPelicu ->CL ::oDU:= FiPelicu ->DU;::oAN:= FiPelicu ->AN;::oA1:= FiPelicu ->A1 ::oA2:= FiPelicu ->A2;::oA3:= FiPelicu ->A3;::oA4:= FiPelicu ->A4 ::oDR:= FiPelicu ->DR;::oPR:= FiPelicu ->PR;::oGI:= FiPelicu ->GI
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
70
::oFO:= FiPelicu ->FO;::oMU:= FiPelicu ->MU;::oDI:= FiPelicu ->DI ::oR1:= FiPelicu ->R1;::oR2:= FiPelicu ->R2;::oR3:= FiPelicu ->R3 ::oR4:= FiPelicu ->R4 if FiPelicu ->(!Eof()) Close Data endif endif elseif in =2 // Iguala Variables Entrada de Datos. ::oNU:= x1 ;::oTN:= x2 ;::oTO:= x3 ;::oTE:= x4 ;::oNA:= x5 ;::oCL:= x6 ::oDU:= x7 ;::oAN:= x8 ;::oA1:= x9 ;::oA2:= x10 ;::oA3:= x11 ;::oA4:= x12 ::oDR:= x13 ;::oPR:= x14 ;::oGI:= x15 ;::oFO:= x16 ;::oMU:= x17 ;::oDi:= x18 ::oR1:= x19 ;::oR2:= x20 ;::oR3:= x21 ;::oR4:= x22 endif Cd :=::oNU // Si la Encuentra Nos Monta la Ficha. Printer:Orientation := poPortrait Printer:BeginDoc() Printer:NewPage() // Recuadro Cabecera de la Ficha. PrintRecuBox({18,17,192,131}) PrintSombraBox({18,17,192,131}) // Cabecera de la Ficha. PrintTexto("Nmero de Ficha:","Arial",22,.f.,{22,20,188,34},TA_LEFT) PrintTexto(AllTrim(Str(::oNU)),"Arial",22,.f.,{22,20,188,34},TA_RIGHT) // Recuadro de la Ficha. PrintRecuBox({18,30,192,131}) // Ficha de la Pelcula. PrintTexto( "Titulo Nacional:","arial", 11,.f.,{22,34,50,50},TA_LEFT) PrintTexto(AllTrim(::oTN) ,"Arial", 14,.f.,{52,33,110,50},TA_LEFT) PrintTexto( "Codigo:","Arial", 11,.f.,{144,34,160,50},TA_LEFT) PrintTexto(StrZero( Cd, 10) ,"Arial", 14,.f.,{160,33,188,50},TA_RIGHT) PrintTexto( "Titulo Original:","Arial", 11,.f.,{22,41,50,60},TA_LEFT) PrintTexto(AllTrim(::oTO) ,"Arial", 14,.f.,{52,40,110,60},TA_LEFT) PrintTexto( "Tema:","Arial", 11,.f.,{144,41,160,60},TA_LEFT) PrintTexto(AllTrim(::oTE) ,"Arial", 14,.f.,{160,40,188,60},TA_RIGHT) PrintTexto( "Nacionalidad:","Arial", 11,.f.,{22,48,50,70},TA_LEFT) PrintTexto(AllTrim(::oNA) ,"Arial", 14,.f.,{52,47,110,70},TA_LEFT) PrintTexto( "Color:","arial", 11,.f.,{144,48,160,70},TA_LEFT) PrintTexto(AllTrim(::oCL) ,"Arial", 14,.f.,{160,47,188,70},TA_RIGHT) PrintTexto( "Duracin:","arial", 11,.f.,{22,55,50,80},TA_LEFT) PrintTexto(AllTrim(::oDU) ,"Arial", 14,.f.,{52,54,110,80},TA_LEFT) PrintTexto( "Ao:","arial", 11,.f.,{144,55,160,80},TA_LEFT) PrintTexto(AllTrim(::oAN) ,"Arial", 14,.f.,{160,54,188,80},TA_RIGHT) PrintTexto( "1 Actor:","arial", 11,.f.,{22,62,50,90},TA_LEFT) PrintTexto(AllTrim(::oA1) ,"Arial", 14,.f.,{52,61,110,90},TA_LEFT) PrintTexto( "2 Actor:","arial", 11,.f.,{114,62,140,90},TA_LEFT) PrintTexto(AllTrim(::oA2), "Arial", 14,.f.,{140,61,188,90},TA_LEFT) PrintTexto( "3 Actor:","arial", 11,.f.,{22,69,50,100},TA_LEFT) PrintTexto(AllTrim(::oA3) ,"Arial", 14,.f.,{52,68,110,100},TA_LEFT)
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
71
PrintTexto( "4 Actor:","arial", 11,.f.,{114,69,140,100},TA_LEFT) PrintTexto(AllTrim(::oA4) ,"Arial", 14,.f.,{140,68,188,100},TA_LEFT) PrintTexto( "Distribucin:","arial", 11,.f.,{22,76,50,110},TA_LEFT) PrintTexto(AllTrim(::oDR) ,"Arial", 14,.f.,{52,75,110,110},TA_LEFT) PrintTexto( "Produccin:","arial", 11,.f.,{114,76,140,110},TA_LEFT) PrintTexto(AllTrim(::oPR) ,"Arial", 14,.f.,{140,75,188,110},TA_LEFT) PrintTexto( "Guionista:","arial", 11,.f.,{22,83,50,120},TA_LEFT) PrintTexto(AllTrim(::oGI) ,"Arial", 14,.f.,{52,82,110,120},TA_LEFT) PrintTexto( "Fotografa:","arial", 11,.f.,{114,83,140,120},TA_LEFT) PrintTexto(AllTrim(::oFO) ,"Arial", 14,.f.,{140,82,188,120},TA_LEFT) PrintTexto( "Msica:","arial", 11,.f.,{22,90,50,130},TA_LEFT) PrintTexto(AllTrim(::oMU) ,"Arial", 14,.f.,{52,89,110,130},TA_LEFT) PrintTexto( "Director:","arial", 11,.f.,{114,90,140,130},TA_LEFT) PrintTexto(AllTrim(::oDI) ,"Arial", 14,.f.,{140,89,188,130},TA_LEFT) // Argumento de la Pelcula. PrintTexto( "Argumento:","arial", 11,.f.,{22,97,50,150},TA_LEFT) PrintTexto(AllTrim(::oR1) ,"Arial", 11,.f.,{24,103,188,160},TA_LEFT ) PrintTexto(AllTrim(::oR2) ,"Arial", 11,.f.,{24,109,188,170},TA_LEFT) PrintTexto(AllTrim(::oR3) ,"Arial", 11,.f.,{24,115,188,180},TA_LEFT) PrintTexto(AllTrim(::oR4) ,"Arial", 11,.f.,{24,121,188,190},TA_LEFT ) // Termina de Montar la Ficha. Printer:EndDoc() Printer:Preview() // Enviamos la Ficha a la Impresora. Printer:Print() return nil ***************************************************************************
Marco de la Ficha.
Seguidamente vamos a construir el Mdulo , para hacer un Recuadro dentro del cual se escribir la Ficha. Para la construccin de este Mdulo , vamos a utilizar los siguientes Comandos internos de C3, Static, Procedure/Return, Printer y Handle , junto con las Funciones, millimeter2Printer() y Rectangle() , tal como se muestra a continuacin:
/* * Modulo Para Generar un Recuadro. */ Static Procedure PrintRecuBox( aPoints ) aPoints :=Printer:Millimeter2Printer( aPoints ) Rectangle(Printer:Handle ,aPoints[1],aPoints[2],aPoints[3],aPoints[4] ) Return
fraguibo1@hotmail.com
Pgina:
72
Nota: Este Mdulo lo utilizaremos en prximas prcticas, para construir el Marco de los Listados. *********************************************************************
73
Funciones, Len(), SetTextAling(), Millimeter2Print() y ExtTextOut() tal como se muestra a continuacin: /* * Modulo Para Imprimir el Texto. */ Static Procedure PrintTexto( cText,nole,tale,tile,aRect,nAlign ) aRect :=Printer:Millimeter2Printer( aRect ) Printer:Font:Name := nole Printer:Font:Size := tale Printer:Font:Bold := tile If nAlign ==TA_LEFT SetTextAlign(Printer:Handle,TA_LEFT) ExtTextOut(Printer:Handle ,aRect[1],aRect[2], ETO_CLIPPED,; aRect,cText, Len( cText ) , 0) ElseIf nAlign ==TA_RIGHT SetTextAlign(Printer:Handle,TA_RIGHT) ExtTextOut(Printer:Handle ,aRect[3],aRect[2], ETO_CLIPPED,; aRect,cText, Len( cText ),0) Else SetTextAlign(Printer:Handle,TA_CENTER) ExtTextOut(Printer:Handle ,aRect[1]+(aRect[3]-aRect[1] )/2,; aRect[2], ETO_CLIPPED ,aRect,cText, Len( cText ),0) EndIf Printer:Font:Bold:=.f. Return Nota: Este Mdulo lo utilizaremos en prximas Prcticas , para Imprimir los Listados. *********************************************************************
Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, lo primero que tenemos que hacer, es poner en Marcha la Impresora y a continuacin ejecutar el programa ArchiPel.exe, pulsar en las opciones Alta de Fichas , del menu principal y dar de Alta una Ficha , luego Pulsar el Boton, Imprimir Esta Ficha y nos saldr la ficha Impresa , tambin podemos realizar la misma operacin, para Imprimir Fichas que tengamos guardadas en la Base de Datos con las opciones Corregir Fichas, Consultar Fichas e Imprimir Fichas , y si todo funciona bien, nos demuestra que la prctica ha sido realizada correctamente. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica.
fraguibo1@hotmail.com
Pgina:
74
Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo.
Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Use Index Close Data Procedure/Return Static Empty() dbSekk() Space() Create() Eof() Str() StrZero() Recno() AllTrim() Len()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
75
fraguibo1@hotmail.com
Pgina:
76
Practica - 14
Imprimir.
En esta practica vamos a construir el Modulo , que nos permitir Imprimir los Listados de Tres Formas Distintas , por el Nmero de Codigo , por Orden Alfabtico y por ultimo Por Temas , a un que podemos modificar la llamada al Modulo de Imprimir y podemos Imprimir el Listado , de la forma que ms nos interese.
Declaracin de Mtodos.
Empezaremos esta practica, configurando el Modulo, de Declaracin de Mtodos, en el que le aadiremos una nueva lnea de Codigo , tal como se muestra a continuacin: Public: Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha Listados PrintFicha PrintListados
// Nueva Lnea.
***************************************************************************
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le aadiremos unas lneas de Cdigo , en la seccin Men Para Imprimir , en donde configuraremos la llamada al Mdulo , de Imprimir los Listados , tal como se muestra a continuacin: // Men Para Imprimir. Menu :MenuItem (ns+"Imprimir","Imprimir Fichas o Listados." ) Menu :BeginMenu() Menu :MenuItem( "Imprimir Fichas","Imprimir Fichas de " +; "Pelculas." ,{|oSender|::BusBaseDatos(1,5,,2)}) Menu:Separator() Menu:MenuItem( "Listado Por Codigo","Listado por Nmero" +; " de Codigo" ,{|oSender|::BusBaseDatos(3,1,,)}) Menu:MenuItem( "Listado Por Alfabeto", "Listado por Orden" +; " Alfabtico." ,{|oSender|::BusBaseDatos(3,2,,)})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
Pgina:
77
***************************************************************************
***************************************************************************
Imprimir Listados.
A continuacin vamos a construir el Mdulo , que nos Confeccionara los Listados con su correspondiente Marco , Igual que si fuese un Listado Comercial . Para la construccin de este Mdulo , vamos a utilizar los siguientes comandos internos de C3, Method/return, Class, Local, If/EndIf, Use, Index, New Via Close Data, While/EndDo y Printer , la Variable Local, nLines, las variables de entorno de C3, Font, poPortrait, TA_LEFT, TA_RIGHT, TA_CENT y PageNumber , las Datas, Orientation, Name y Bold , junto con las Funciones OrdSetFocus(), Eof(), BeginDoc(), NewPage(), EndDoc(), dbGoTop() Preview(), dbSkip(), Print() , junto con las tres que construiremos nosotros, en la practica anterior, PrintRecuBox(), PrintSombraBox(), PrintTexto() y la que construiremos nosotros, cuando terminemos de construir este Modulo , para Imprimir los Listados , tal como se muestra a continuacin:
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
78
/* * Modulo Para Imprimir los Listados. */ Method PrintListados( tr,va ) Class TPrincipal Local nLines Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( va,'FiPelicu' )) Printer:Orientation := poPortrait Printer:BeginDoc() Printer:Font:Name := "Arial" nLines := 46 FiPelicu ->( DbGoTop() ) While FiPelicu ->(!Eof()) If nLines > 45 Printer:NewPage() // Recuadro Cabecera de la Ficha. PrintRecuBox({18,17,192,34}) PrintSombraBox({18,17,192,34}) if tr =1 PrintTexto(" Listado por Numero de Codigo "," Arial ",22,.f.,; {22,21,188,34},TA_LEFT) elseif tr =2 PrintTexto(" Listado por Orden Alfabtico "," Arial ",22,.f.,; {22,21,188,34},TA_LEFT) elseif tr =3 PrintTexto(" Listado por Temas "," Arial ",22,.f.,; {22,21,188,34},TA_LEFT) elseif tr =4 PrintTexto(" Listado por Directores "," Arial ",22,.f.,; {22,21,188,34},TA_LEFT) endif // Numeracin de las Paginas. PrintTexto(" Pgina: "+LTrim(Str(Printer:PageNumber)),; "Arial" ,12,.f.,{22,24,188,34},TA_RIGHT) // Recuadro del Listado. PrintRecuBox({18,38,192,278}) PrintSombraBox({18,38,192,278}) // Ttulos de las Columnas. PrintTexto(" Codigo "," Arial ",11,.f.,{20,40,42,54},TA_CENTER) PrintTexto(" Titulo "," Arial ",11,.f.,{42,40,118,54},TA_CENTER) PrintTexto(" Tema "," Arial ",11,.f.,{118,40,142,54},TA_CENTER) PrintTexto(" Director "," Arial ",11,.f.,{142,40,188,54},TA_CENTER) // Lneas Verticales de Separacin. PrintLinea({18,46,192,46}) PrintLinea({44,38,44,278}) PrintLinea({118,38,118,278})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
79
PrintLinea({142,38,142,278}) Printer:Font:Bold := .F. nLines := 1 EndIf // Imprime el Listado. PrintTexto(AllTrim(StrZero( FiPelicu ->NU,10))," Arial ",11,.f.,; {20,45+nLines * 5,42,56+nLines * 5+10},TA_RIGHT) PrintTexto( FiPelicu ->TN," Arial ",11,.f.,; {46,45+nLines * 5,118,56+nLines * 5+10},TA_LEFT) PrintTexto( FiPelicu ->TE," Arial ",11,.f.,; {120,45+nLines * 5,142,56+nLines * 5+10},TA_LEFT) PrintTexto( FiPelicu ->DI," Arial ",11,.f.,; {144,45+nLines * 5,188,56+nLines * 5+10},TA_LEFT) // Salta al Siguiente Registro. FiPelicu ->( DbSkip() ) nLines ++ EndDo Close Data // Termina de Confeccionar el Listado. Printer:EndDoc() Printer:Preview() // Manda el Listado a la Impresora. Printer:Print() Return ***************************************************************************
80
Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, lo primero que tenemos que hacer, es poner en Marcha la Impresora y a continuacin ejecutar el programa ArchiPel.exe, pulsar en la opciones Imprimir y de las diferentes opciones que hay escoger una, y si todo funciona bien, nos demuestra que la prctica ha sido realizada correctamente. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo.
Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Use Index Close Data Procedure/Return Static While/EndDo File() dbGoTop() dbSkip() Eof()
***************************************************************************
fraguibo1@hotmail.com
Pgina:
81
fraguibo1@hotmail.com
Pgina:
82
Practica - 15
Ayuda y Copryng.
En esta practica vamos a construir el Modulo , que nos presentara la Ayuda y el Copryng del Programa , a un que cada Programador puede hacerlo, como ms practico le parezca, por que si fuese un Programa , que necesitase gran cantidad de Ayuda , entonces hubisemos utilizado, un Archivo de Ayuda con extensin *. HLP.
Declaracin de Mtodos.
Empezaremos esta practica, configurando el Modulo, de Declaracin de Mtodos, en el que le aadiremos una nueva lnea de Codigo , tal como se muestra a continuacin: Public: Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha Listados PrintFicha PrintListados AyudaCopryng
// Nueva Lnea.
***************************************************************************
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le aadiremos unas lneas de Cdigo , en la seccin Men Para la Ayuda y el Copryng , en donde configuraremos la llamada al Mdulo , de Ayuda y del Copryng , tal como se muestra a continuacin: // Men del Control de Ayuda y Copryng. Menu:MenuItem( ns+"Ayuda","Ayuda Copryng del Programa.") Menu:BeginMenu() Menu:MenuItem( "Ayuda","Ayuda del Programa." ,; {|oSender|::AyudaCopryng( 1," Ayuda" )}) Menu:MenuItem( "Copryng","Copryng del Programa." ,; {|oSender|::AyudaCopryng( 2,"Copryng" )}) Menu:EndMenu()
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea. // Nueva Lnea.
Pgina:
83
Mostrar Mensajes.
A continuacin vamos a seguir configurando, el Modulo de Mostrar Mensajes en donde le aadiremos Dos nuevos Mensajes , uno para el Copryng y otro para la Ayuda , tal como se muestra a continuacin:
Mensaje de Copryng.
elseif me =4 Men:Caption:=Chr(13)+; Space(10)+' ARCHIPEL Versin 1.0 Ao: 2004-2005 '+; Chr(13)+' (c) La Antorcha de los Grandes Exitos '+; ' (Fraguibo) '+Chr(13)+Space(17)+' Autor: Francisco '+; ' Guillamon Bou '+Chr(13)+Space(13)+' Telfono: 964033349 '+; ' y 699833680 '+Chr(13)+Space(17)+; ' e-mail: fraguibo1@hotmail.com '+Chr(13)+; ' Web: http://spaces.msn.com/members/fraguibo/ '+Chr(13) // // // // // // // // // Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Nueva Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea. Lnea.
Mensaje de Ayuda.
elseif me =9 Men:Caption:=Chr(13)+; ' Este Programa por su gran Claridad ' +Chr(13)+; ' en Todas sus Opciones de uso, no ' +Chr(13)+; ' Hace Falta Ningn Tipo de Ayuda. ' +Chr(13) // // // // // Nueva Nueva Nueva Nueva Nueva Lnea. Lnea. Lnea. Lnea. Lnea.
El resto del Modulo lo dejaremos, tal como lo tenamos configurado en las Practicas anteriores. ***************************************************************************
Ayuda y Copryng.
Por ultimo en esta prctica vamos a construir el Mdulo , que nos mostrara la Ayuda y el Copryng del Programa. Para la construccin de este Mdulo , vamos a utilizar los siguientes comandos internos de C3, Method/return, Class, Local, If/EndIf, la Variable Local, Venta, las variables de entorno de C3, bsDialog y poActiveCenter , las variables de Color clLime y clBlack , las Datas, BorderStyle, Caption y Position , junto con las Funciones, TForm(), Create(), Space(), SetBounds(), Close(), Destroy() ShowModal(), junto con las dos que construiremos nosotros, en practicas anteriores LLamaMensaje() y CrearBoton(), tal como se muestra a continuacin: /* * Ayuda y Copryng del Programa. */ Method AyudaCopryng( x,nv ) Class TPrincipal Local Venta // Creamos la ventana. Venta := TForm():Create() Venta :BorderStyle := bsDialog
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
84
Venta :Caption := Space(34)+ nv Venta :SetBounds( 0, 0, 366, 248 ) Venta :Position := poActiveCenter if x =1 // LLama a la Ayuda. ::LLamaMensage( Venta ,24,22,clLime,,14,clBlack,9) elseif x =2 // LLama al Copryng. ::LLamaMensage( Venta ,26,20,clLime,,11,clBlack,4) endif // Boton para salir. ::CrearBoton( Venta ,120,170,106,26,11," Salir ",{|oSender| Venta :Close(),; Venta :Destroy()}) Venta :ShowModal() Return Nil *************************************************************************** Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, lo primero que tenemos que hacer, es ejecutar el programa ArchiPel.exe, pulsar en la opcin Ayuda , del menu principal y pulsar primero en Ayuda y nos saldr el siguiente mensaje:
Este Programa por su gran Claridad. en Todas sus Opciones de uso, no Hace Falta Ningn Tipo de Ayuda.
Luego pulsamos en Salir y a continuacin realizamos la misma operacin, con la opcin Copryng y se nos mostrara el Copryng del Programa, y si todo funciona bien nos demuestra que la prctica, ha sido realizada correctamente. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. Observacin: Como abran podido comprobar, en esta practica tambin hemos utilizado, los siguientes comandos internos de Clipper , junto con las siguientes Funciones. If/EndIf Local Chr() Space()
Bueno Compaeros y Amigos , con esta Practica se podra dar por terminado, este pequeo y practico cursillo, pero realizaremos unas practicas ms, para decorar nuestro programa y asi practicaremos un poquito ms.
fraguibo1@hotmail.com
Pgina:
85
fraguibo1@hotmail.com
Pgina:
86
Practica - 16
Modificar Consultar Listados.
Una vez terminado el Curso Prctico , vamos a realizar unas Prcticas ms, mejorar nuestro Programa , as que empezaremos modificando, todo el sistema de los Listados tanto la forma de Consultar los Listados , como la forma de enviar los Listados a la Impresora . En esta practica vamos a Reconstruir , todo el sistema de Consultar los Listados , as que empezaremos aadiendo, en el Modulo Declaracin de Mtodos, un nuevo Mtodo llamado Method ListaImpri.
Declaracin de Mtodos.
Empezaremos esta practica, configurando el Modulo, de Declaracin de Mtodos, en el que le aadiremos, como ya hemos dicho anteriormente, una nueva lnea de Codigo , tal como se muestra a continuacin: Public: Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method Method
Create Constructor MenuPrin Terminar BarraHora BaseDatos BusBaseDatos VenMenAuto LLamaMensage ContaTiempo SayDatos BuscaFicha CrearBoton FichaVacia FichaRecNue Archivar conBoImpri BorraFicha ListaImpri Listados PrintFicha PrintListados AyudaCopryng
// Nueva Lnea.
***************************************************************************
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le sustituiremos todas las lneas de Cdigo , del Men Para Mostrar Listados. por estas, dos nuevas Lneas de Codigo , tal como se muestra a continuacin: // Men Para Mostrar Listados. Menu:MenuItem( ns +" Consultar Listado "," Listados por "+; " Varios Sistemas. ",{|oSender|::BusBaseDatos(2,,,)})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// Lnea Modificada.
Pgina:
87
El resto de Codigo del Men , debe de quedar todo tal como estaba, en nuestra Prctica Anterior. ***************************************************************************
// Lnea Modificada.
El resto de Codigo de este Modulo , debe de quedar todo tal como estaba, en nuestra Prctica Anterior. ***************************************************************************
// Nueva Funcin.
88
if x =1 // Consultar Listado Normal. String :Header := {" Codigo "," Titulo "," 1 Actor "," 2 Actor "," Tema ",; " Direccin "," Ao "," Distribucin "} String :Alignments:={taRightJustify,taLeftJustify,taLeftJustify,; taLeftJustify,taLeftJustify,taLeftJustify,taCenter,taLeftJustify} String :HeaderFont:Bold := .T. String :Sizes := { 82,220,150,150,84,150,48,150} EndIf String :RowSelect := .T. String :ShowFooter := .F. String :AutoExpand := .T. If x =1 // Boton Para Listar por Codigo. ::CrearBoton( venta, 36,475,157,23,9 ,"Listado por Codigo" ,; {|oSender| venta :Caption:= Cap1, ::Listados( String, 'CO')}) // Boton Para Listar Alfabticamente. ::CrearBoton( venta, 224,475,157,23,9 ,"Listado por Alfabeto" ,; {|oSender| venta :Caption:= Cap2 ,::Listados( String, 'TN')}) // Boton Para Listar por Temas. :: CrearBoton( venta, 412,475,157,23,9 ,"Listado por Temas" ,; . {|oSender| venta :Caption:= Cap3, ::Listados( String, 'TE')}) // Boton Para Salir del Listado. ::CrearBoton( venta, 600,475,157,23,9 ,"Salir del Listado" ,; {|oSender| Venta :Close() ,Venta :Destroy()}) EndIf String :SetFocus() venta :showModal() Retur nil ***************************************************************************
Modificar Listado.
Por ultimo en esta practica vamos a Modificar , el Mdulo Para Mostrar Listados , el cual deber de quedar tal como se muestra a continuacin: /* * Modulo Para Mostrar Listados. */ Method Listados( tr,va ) Class TPrincipal Local aArray // Extrae los Datos Para los Listados. Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( va,'FiPelicu' )) FiPelicu ->(DbGoTop()) aArray := {} While FiPelicu ->(!Eof()) If vl =1 aadd( aArray ,{StrZero( FiPelicu ->NU,10), FiPelicu ->TN, FiPelicu ->A1,; FiPelicu ->A2, FiPelicu ->TE, FiPelicu ->DI, FiPelicu ->AN, FiPelicu ->DR})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
// Funcin Modificada.
89
EndIf FiPelicu ->(DbSkip()) EndDo Close Data tr :Items := aArray return nil *************************************************************************** Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las practicas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, lo primero que tenemos que hacer, es ejecutar el programa ArchiPel.exe, pulsar en la opcin Listados , del menu principal y se nos presentara la Ventana de los Listados , con cuatro Botones para poder consultar los Listados , automticamente de tres formas distintas, sin tener que Salir al Men Principal. Como abran podido comprobar, en esta Prctica hemos mejorado, mucho la forma de presentar el Listado y tambin la forma de escoger las opciones , para consultar el Listado ya que ahora ya no tenemos que Salir , al Men Principal para cambiar la forma de presentar el Listado. Como en todas las practicas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo.
fraguibo1@hotmail.com
Pgina:
90
Practica - 17
Modificar Imprimir Listados.
En esta prctica vamos a Reconstruir , todo el sistema de Imprimir los Listados , as que empezaremos por Reconstruir el Men Principal.
Men Principal.
A continuacin seguiremos configurando el Men Principal , en donde le sustituiremos todas las lneas de Cdigo , del Men Para Imprimir. que configuran, la Impresin de los Listados , por estas dos nuevas Lneas de Codigo , tal como se muestra a continuacin: // Men Para Imprimir. Menu :MenuItem( ns +" Imprimir "," Imprimir Fichas o Listados. ") Menu :BeginMenu() Menu :MenuItem(" Imprimir Fichas "," Imprimir Fichas de "+; " Pelculas. ",{|oSender|::BusBaseDatos(1,5,,2)}) Menu:Separator() Menu :MenuItem(" Imprimir Listados "," Imprimir los Listados ",; {|oSender|::BusBaseDatos(3,,,)}) Menu :EndMenu()
El resto de Codigo del Men , debe de quedar todo tal como estaba, en nuestra Prctica Anterior. ***************************************************************************
// Lnea Modificada.
El resto de Codigo de este Modulo , debe de quedar todo tal como estaba, en nuestra Prctica Anterior. ***************************************************************************
// Lnea Modificada.
fraguibo1@hotmail.com Pgina:
91
Seguidamente le aadiremos una nueva Opcin , en el IF/EndIF del Camption de la Ventana , tal como se muestra a continuacin: // Ventana Para Mostrar e Imprimir el Listado. Venta := TForm():Create() Venta :BorderStyle:=bsDialog Venta :SetBounds(0,0,799,546 ) Venta :Brush:Color:=clAqua if x =1 venta :Caption:=Space(70)+' Escoja una Opcin Para ver el Listado ' elseif x =2 // Nueva Opcin. venta :Caption:=Space(68)+' Escoja una Opcin Para Imprimir el Listado endif A continuacin tambin, le vamos ha aadir una nueva Opcin, en IF/EndIF de la Configuracin de la Ventana , tal como se muestra a continuacin: // Marco del Listado. String := TStringGrid():Create( venta ) String :SetBounds( 12, 12, 766, 450 ) String :Font:Name:= "Arial" String :Font:Size:= 9 if x =1 // Consultar Listado Normal. String :Header := {" Codigo "," Titulo "," 1 Actor "," 2 Actor "," Tema ",; " Direccin "," Ao "," Distribucin "} String :Alignments:={taRightJustify,taLeftJustify,taLeftJustify,; taLeftJustify,taLeftJustify,taLeftJustify,taCenter,taLeftJustify} String :HeaderFont:Bold := .T. String :Sizes := { 82,220,150,150,84,150,48,150} elseif x =2 // Nueva Opcin. // Consultar Listado Para Imprimir. String :Header := {" Codigo "," Titulo "," Tema "," Direccin "} String :Alignments:={taCenter,taLeftJustify,taLeftJustify,taLeftJustify} String :HeaderFont:Bold := .T. String :Sizes := {120,350,104,150} endif String :RowSelect := .T. String :ShowFooter := .F. String :AutoExpand := .T. Por ultimo tambin le a aadiremos, Cinco Nuevos Botones al IF/EndIF , que nos muestra los Botones , que se tienen que utilizar, en cada una de las dos Opciones del Modulo , tal como se muestra a continuacin: elseif x =2 ::CrearBoton( venta ,36,475,120,23,9," Listado por Codigo ",; {|oSender| venta :Caption:= Cap1,tr :=1 ,va :='CO',; ::Listados( String ,'CO',2)}) ::CrearBoton( venta, 184,475,120,23,9," Listado por Alfabeto ",; {|oSender| venta :Caption:= Cap2,tr :=2, va :='TN',; ::Listados( String ,'TN',2)}) ::CrearBoton( venta ,334,475,120,23,9," Listado por Temas ",; {|oSender| venta :Caption:= Cap3,tr :=3, va :='TE',; ::Listados( String ,'TE',2)})
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com
// Nuevo Boton.
// Nuevo Boton.
// Nuevo Boton.
Pgina:
92
::CrearBoton( venta ,484,475,120,23,9," Imprimir Listado ",; {|oSender|::PrintListados( tr,va )}) ::CrearBoton( venta ,632,475,120,23,9," Salir de Imprimir ",; {|oSender| Venta :Close(), Venta :Destroy()}) endif
// Nuevo Boton.
// Nuevo Boton.
El resto de Codigo de este Modulo , debe de quedar todo tal como estaba, en nuestra Prctica Anterior. ***************************************************************************
Modificar Listado.
Por ultimo en esta prctica, vamos a seguir configurando este Modulo , aadirle una nueva Opcin , para que nos muestre el Listado , antes de mandarlo a la Impresora , el cual deber de quedar tal como se muestra a continuacin: /* * Modulo Para Mostrar Listados. */ Method Listados( tr,va ) Class TPrincipal Local aArray // Extrae los Datos Para los Listados. Use FiPelicu Index FiPelicu New Via 'DbfCdx' FiPelicu ->(OrdSetFocus( va,'FiPelicu' )) FiPelicu ->(DbGoTop()) aArray := {} if vl =1 aadd( aArray ,{StrZero( FiPelicu ->NU,10), FiPelicu ->TN, FiPelicu ->A1,; FiPelicu ->A2, FiPelicu ->TE, FiPelicu ->DI, FiPelicu ->AN, FiPelicu ->DR}) elseif vl =2 // Nueva Opcin. aadd( aArray ,{StrZero( FiPelicu ->NU,10),Space(6)+ FiPelicu ->TN Space(6)+ FiPelicu ->TE,Space(6)+ FiPelicu ->DI}) endif FiPelicu ->(DbSkip()) EndDo Close Data tr :Items := aArray return nil *************************************************************************** Una vez terminada esta Practica , solo nos queda colocar los nuevos mdulos y las modificaciones hechas en los mdulos, que ya tenamos creados en las prcticas anteriores en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, lo primero que tenemos que hacer, es ejecutar el programa ArchiPel.exe, pulsar en la opcin Imprimir , del menu principal y pulsar, en la opcin Imprimir Listados y se nos presentara, la Ventana de Imprimir los Listados , con Cinco Botones , tres de ellos son para poder consultar los Listados , antes de mandarlos a la Impresora
fraguibo1@hotmail.com
Pgina:
93
Al pulsar el Boton Imprimir Listado , nos manda a la Impresora el Listado , que estamos viendo en la Pantalla , bien sea por Codigo, por Orden Alfabtico o por Tema y si queremos Cambiar el Listado de una forma a otra, solo tenemos que pulsar el Boton correspondiente, para que pase de una forma a otra. Como abran podido comprobar, en esta Prctica tambin hemos mejorado, mucho la forma de Imprimir el Listado y tambin la forma de escoger las opciones , ya que ahora podemos ver lo que vamos a Imprimir , antes de mandarlo a la Impresora , mientras que en nuestro Programa del Curso , hasta que no tenamos el Listado Impreso , no sabamos exactamente lo que habamos Imprimido. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo.
fraguibo1@hotmail.com
Pgina:
94
Practica - 18
Men Principal.
En esta Prctica seguiremos configurando el Men Principal , en donde le vamos Colocar , una Barra de Iconos, para hacer ms atractiva su presentacin y as tambin parecer, mucho ms Profesional.
Declaracin de Mtodos.
Empezaremos esta Prctica, terminando de configurar, la declaracin de Clases, en donde le aadiremos una nueva Lnea , para declarar un nuevo Mtodo . tal como se muestra a continuacin: Method BotonBarra // Nueva Lnea.
El resto de la Declaracin de Mtodos , debe de que tal como la tenamos configurada en la Prctica anterior. ***************************************************************************
***************************************************************************
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
95
Men Principal.
Seguidamente vamos a terminar de configurara el Men Principal , as que con la Funcin que hemos creado anteriormente, vamos a colocar los diferentes Bitmaps , en la Barra de Opciones del Men Principal , tal como se muestra a continuacin: // Declaracin de los Botones. ::BarraBotones:=TToolBar():Create(Self) ::BarraBotones:EdgeBorders:Bottom:=.T. TToolButton():Create(::BarraBotones):Style:=tbsSeparator // Alta de Fichas Nuevas. ::BotonBarra(::BarraBotones," Nueva "," Nueva Ficha|Dar de Alta a "+; " Nuevas Fichas .",{|oSender|::BusBaseDatos(1,1,,1)}) // Corregir o Modificar Fichas. ::BotonBarra(::BarraBotones," Corregir "," Corregir Fichas|Corregir "+; " las Fichas .",{|oSender|::BusBaseDatos(1,2,,2)}) // Dar de Baja o Borrar Fichas. ::BotonBarra(::BarraBotones," Eliminar "," Baja de Fichas|Dar de Baja "+; " las Fichas .",{|oSender|::BusBaseDatos(1,3,,2)}) // Consultar Fichas. ::BotonBarra(::BarraBotones," Consultar "," Consultar Fichas|Consultar "+; " las Fichas .",{|oSender|::BusBaseDatos(1,4,,2)}) // Imprimir Fichas. ::BotonBarra(::BarraBotones," Impresora "," Imprimir Fichas|Imprimir "+; " las Fichas .",{|oSender|::BusBaseDatos(1,5,,2)}) // Consultar Listados. ::BotonBarra(::BarraBotones," Consultar "," Consultar Listados|Consultar "+; " los Listados .",{|oSender|::BusBaseDatos(2 ,,,)}) // Imprimir Listados. ::BotonBarra(::BarraBotones," Impresora "," Imprimir Listados|Imprimir "+; " los Listados .",{|oSender|::BusBaseDatos(3,,,)}) // Terminar y Salir del Programa. ::BotonBarra(::BarraBotones," Salir "," Cerrar y Salir|Cerrar y Salir "+; " del Programa .",{|oSender|::Close}) // Boton de Ayuda y Copryng. ::BotonBarra(::BarraBotones," Ayuda "," Copryng|Copryng del "+; " Programa .",{|oSender|::AyudaCopryng(2,"Copryng")}) El resto del Men Principal debe de quedar, tal como lo tenamos configurado en la Prctica anterior. ***************************************************************************
96
as para configurar este fichero, lo podemos abrir con nuestro Editor de Texto ascil, o con el Bloc de Notas de Windows y le aadiremos las siguientes lneas, tal como se muestra a continuacin: Nueva Corregir Eliminar Consultar Impresora Salir Ayuda Bitmap Bitmap Bitmap Bitmap Bitmap Bitmap Bitmap "Res\Nueva.bmp" "Res\Corregir.bmp" "Res\Eliminar.bmp" "Res\Consultar.bmp" "Res\Impresora.bmp" "Res\Salir.bmp" "Res\Ayuda.bmp"
El resto del fichero debe de quedar tal como estaba, antes de aadirle estas lneas de Cdigo. Cuando hayamos terminado de configurar estas lneas, pulsamos en Guardar y luego en Salir , con lo que ya tenemos el Fichero Configurado. *************************************************************************** Una vez terminada esta Practica , solo nos queda colocar las modificaciones hechas en su lugar correspondiente, de nuestro programa principal ArchiPel.prg y compilarlo. Luego para poder ver el resultado, solo que tenemos que ejecutar el programa ArchiPel.exe y nos aparecer el Men Principal , con una Barra de Iconos debajo de la Barra de Opciones , con los que con solo pulsar sobre ellos, podemos acceder a cualquier Opcin del Programa. Como abran podido comprobar, en esta Prctica tambin hemos mejorado, mucho la presentacin de nuestro Men Principal , as como la forma de acceder, a cualquier Opcin del Programa. Como en todas las prcticas, aqu tambin se incluyen los ficheros Do.bat ArchiPel.mak , Samples.rc y el archivo ArchiPel.exe , para que puedan comprobar el resultado de esta practica. Tambin se incluye el archivo ArchiPel.prg , para que puedan ustedes consultarlo mientras realizan las practicas montando el suyo. NOTA: Con esta ltima Prctica doy por terminado, este pequeo Cursillo el cual espero, que haya sido de utilidad, para todos aquellos que quieren o estn empezando, a utilizar el nuevo Compilador C3 de 32 bits . Desde aqu, les doy mi agradecimiento, a los compaeros: Manuel, Xevi, Truesoft y especialmente a Bruno Cantero , por haberme ayudado a corregir, algunos errores y al mismo tiempo animado, a escribir este pequeo cursillo, a todos ellos un cordial saludo. El autor: Francisco Guillamon Bou
fraguibo1@hotmail.com
Pgina:
97
fraguibo1@hotmail.com
Pgina:
98
ndice de contenidos
Nota del Autor ..................................................................................................... 3 Practica 1 ............................................................................................................... 4 Configuracin del entorno de trabajo .................................................................... 4
Practica 2 ....................................................................................................... 7
La Ventana Principal ............................................................................................. 7 Modulo de Cabecera ...............................................................................................7 Inicio del Programa ................................................................................................7 Declaracin de Mtodos ..........................................................................................7 Modulo Principal ....................................................................................................8
Practica 3 ......................................................................................................... 9
El Men Principal .................................................................................................. 9 Declaracin de Mtodos ..........................................................................................9 Modulo Principal ....................................................................................................9 Cerrar y salir del programa .................................................................................. 10 Practica 4 ............................................................................................................... 13 Terminar el Men Principal ..................................................................................13 Colocar un Icono y un Anagrama ..........................................................................13 Declaracin de Mtodos ........................................................................................13 Modulo Principal ..................................................................................................14 Barra de Estado del Men .....................................................................................14 Practica 5 ................................................................................................................ 17 Inicio del Programa ..............................................................................................17 Declaracin de Mtodos ........................................................................................17 Modulo Principal ..................................................................................................18 La Base de Datos (*.DBF) ....................................................................................18 El ndice (*.CDX) ................................................................................................19 Practica 6 ................................................................................................................ 21 Declaracin de Mtodos ........................................................................................21 Men Principal (Altas) .........................................................................................21 Buscador Base de Datos ........................................................................................ 21 Ventana Para Mensajes ......................................................................................... 22 Configurar Mensajes .............................................................................................23 Contador de Tiempo .............................................................................................24 Practica 7 ................................................................................................................ 27 Declaracin de Mtodos ........................................................................................27 Buscar Base de Datos ...........................................................................................27 Buscar Fichas ....................................................................................................... 28 Crear Botones .......................................................................................................29 Ventana Para Mensajes ......................................................................................... 30 Configurar Mensajes .............................................................................................31 Mostrar Datos .......................................................................................................32 Practica 8 ................................................................................................................ 35 Declaracin de Mtodos ........................................................................................35 Buscar Fichas ....................................................................................................... 35 Construir Ficha Vaca ...........................................................................................37 Configurar Mensajes .............................................................................................38 Ficha Para Entrada de Datos .................................................................................38 Archivar Fichas .................................................................................................... 39 Practica 9 ................................................................................................................ 43 Configurar Men Principal ....................................................................................45 Reconstruir Buscar Base de Datos .........................................................................45
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
99
Configurar Buscar Fichas ...................................................................................... 46 Mostrar Mensajes .................................................................................................47 Corregir Ficha o Entrada de Datos ........................................................................ 48 Archivar Fichas .................................................................................................... 49 Practica 10 ................................................................................................................ 52 Dar de Baja o Borrar Fichas ..................................................................................52 Declaracin de Mtodos ........................................................................................52 Configurar Men Principal ....................................................................................52 Buscar Ficha .........................................................................................................53 Configurar Mensajes .............................................................................................54 Borrar, Consultar o Imprimir Fichas ......................................................................54 Borrar Ficha ......................................................................................................... 56 Practica 11 .............................................................................................................. 59 Consultar Fichas ................................................................................................... 59 Buscar Ficha ......................................................................................................... 59 Borrar, Consultar o Imprimir Fichas ......................................................................60 Practica 12 .............................................................................................................. 63 Listados ............................................................................................................... 63 Declaracin de Mtodos ........................................................................................63 Men Principal ..................................................................................................... 64 Mostrar Listados ...................................................................................................64 Practica 13 .............................................................................................................. 67 Imprimir ...............................................................................................................67 Declaracin de Mtodos ........................................................................................67 Men Principal ..................................................................................................... 67 Buscar Ficha ......................................................................................................... 68 Corregir Ficha o Entrada de Datos ........................................................................ 69 Borrar, Consultar o Imprimir Fichas ......................................................................69 Imprimir Fichas ....................................................................................................70 Marco de la Ficha ................................................................................................. 72 Sombra del Marco ................................................................................................73 Imprimir Texto de la Ficha ...................................................................................73 Practica 14 .............................................................................................................. 77 Imprimir ...............................................................................................................77 Declaracin de Mtodos ........................................................................................77 Men Principal ..................................................................................................... 77 Busca Base de Datos .............................................................................................78 Imprimir Listado ..................................................................................................78 Lneas del Listado ................................................................................................80 Practica 15 .............................................................................................................. 83 Modificar Imprimir o Consultar Listados ...............................................................83 Men Principal ..................................................................................................... 83 Busca Base de Datos .............................................................................................84 Nueva Ventana Imprimir/Listado ..........................................................................84 Modificar Listado .................................................................................................85 Practica 16 .............................................................................................................. 87 Modificar Imprimir o Consultar Listados ...............................................................87 Men Principal ..................................................................................................... 87 Busca Base de Datos .............................................................................................87 Nueva Ventana Imprimir/Listado ..........................................................................87 Modificar Listados ...............................................................................................89 Practica 17 .............................................................................................................. 91 Modificar Imprimir Listados .................................................................................91 Men Principal ..................................................................................................... 91 Busca Base de Datos .............................................................................................91
La Antorcha de los Grandes Exitos (Fraguibo) fraguibo1@hotmail.com Pgina:
100
Nueva Ventana Listados .......................................................................................91 Modificar Listados ...............................................................................................93 Practica 18 .............................................................................................................. 95 Men Principal ..................................................................................................... 95 Declaracin de Mtodos ........................................................................................95 Mtodo Boton Barra .............................................................................................95 Configurar Men Principal ....................................................................................96 Carpeta Res ..........................................................................................................96 Configurar Fichero Samples.rc ..............................................................................96
fraguibo1@hotmail.com
Pgina:
101