home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / TUTOR07.PRG < prev    next >
Text File  |  1994-06-04  |  5KB  |  149 lines

  1. //----------------------------------------------------------------------------//
  2. //  FiveWin 1.5 - Tutorial
  3. //  (c) A.Linares, F.Pulpón 1993
  4. //
  5. //  Contruir con BUILD Tutor07
  6. //----------------------------------------------------------------------------//
  7.  
  8. // Vamos a continuar utilizando el anterior ejemplo, Tutor06, y añadiremos
  9. // algunos controles más a la Caja de Diálogo y utilizaremos por primera
  10. // vez una base de datos, desde esa Caja de Diálogo
  11.  
  12. #include "FiveWin.ch"
  13.  
  14. static oWnd
  15.  
  16. //----------------------------------------------------------------------------//
  17.  
  18. function Main()
  19.  
  20.    DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 ;
  21.       TITLE OemToAnsi( "Editando nuestra primera Base de Datos" ) ;
  22.       MENU PreparaMenu()
  23.  
  24.    SET MESSAGE OF oWnd ;
  25.       TO OemToAnsi( "FiveWin 1.5, (c) A.Linares & F.Pulpón, 1993" )
  26.  
  27.    ACTIVATE WINDOW oWnd           // MAXIMIZED
  28.  
  29. return nil
  30.  
  31. //----------------------------------------------------------------------------//
  32.  
  33. function PreparaMenu()
  34.  
  35.    local oMenu
  36.  
  37.    MENU oMenu
  38.       MENUITEM OemToAnsi( "&Información" )
  39.       MENU
  40.          MENUITEM "&Acerca de..." ;
  41.             ACTION MsgInfo( OemToAnsi( "Tutorial de FiveWin" + Chr( 13 ) + ;
  42.                             "(c) A.Linares, F.Pulpón, 1993" ) ) ;
  43.             MESSAGE OemToAnsi( "Información acerca de este programa" )
  44.          SEPARATOR
  45.          MENUITEM "&Terminar..."  ;
  46.             ACTION If( MsgYesNo( OemToAnsi( "¿ Desea terminar ?" ) ),;
  47.                        oWnd:End(),) ;
  48.             MESSAGE OemToAnsi( "Terminar la ejecución de este programa" )
  49.       ENDMENU
  50.  
  51.       MENUITEM "&Ficheros"
  52.       MENU
  53.          MENUITEM   "&Clientes..."           ;
  54.             ACTION  Clientes() ;
  55.             MESSAGE OemToAnsi( "Mantenimiento de Clientes" )
  56.  
  57.          MENUITEM   OemToAnsi( "&Almacén" ) ;
  58.             ACTION  MsgInfo( OemToAnsi( "Control del Almacén" ) ) ;
  59.             MESSAGE OemToAnsi( "Control del Almacén" )
  60.       ENDMENU
  61.  
  62.       MENUITEM "&Utilidades"
  63.       MENU
  64.          MENUITEM "&Calculadora..." ;
  65.             ACTION WinExec( "Calc" ) ;
  66.             MESSAGE "Llamar a la calculadora de Windows"
  67.  
  68.          MENUITEM "C&alendario..." ;
  69.             ACTION WinExec( "Calendar" ) ;
  70.             MESSAGE "Llamar al calendario de Windows"
  71.  
  72.          MENUITEM "&Jugar un poco..." ;
  73.             ACTION WinExec( "Sol" ) ;
  74.             MESSAGE "A las cartas..."
  75.       ENDMENU
  76.    ENDMENU
  77.  
  78. return oMenu
  79.  
  80. //----------------------------------------------------------------------------//
  81.  
  82. function Clientes()
  83.  
  84.    local oDlg
  85.    local cNombre    := ""
  86.    local cDireccion := ""
  87.    local getNombre, getDireccion
  88.  
  89.    if ! File( "clientes.dbf" )
  90.       DbCreate( "Clientes.dbf", { { "Nombre",    "C", 40, 0 },;
  91.                                   { "Direccion", "C", 50, 0 },;
  92.                                   { "Telefono",  "C", 12, 0 },;
  93.                                   { "Edad",      "N",  2, 0 },;
  94.                                   { "Productos", "C", 10, 0 },;
  95.                                   { "Nivel",     "N",  2, 0 } } )
  96.    endif
  97.    
  98.    USE Clientes
  99.    if RecCount() == 0
  100.       APPEND BLANK
  101.    endif
  102.    INDEX ON Nombre TO CliNombr
  103.    SET INDEX TO CliNombr
  104.    GO TOP
  105.  
  106.    cNombre    := Clientes->Nombre
  107.    cDireccion := Clientes->Direccion
  108.  
  109.    DEFINE DIALOG oDlg FROM 6, 7 TO 21, 72 TITLE "Mantenimiento de Clientes"
  110.  
  111.    @ 1, 2 SAY "Nombre:" OF oDlg
  112.    @ 1, 8 GET getNombre VAR cNombre OF oDlg  VALID NoEmptyField( cNombre )
  113.  
  114.    @ 2, 2 SAY OemToAnsi( "Dirección:" ) OF oDlg
  115.    @ 2, 8 GET getDireccion VAR cDireccion OF oDlg
  116.  
  117.    @ 8,  3 BUTTON "&Anterior"  OF oDlg SIZE 50, 12 ;
  118.       ACTION ( DbSkip( -1 ),;
  119.                getNombre:cText    := Clientes->Nombre,;
  120.                getDireccion:cText := Clientes->Direccion )
  121.  
  122.    @ 8, 14 BUTTON "&Siguiente" OF oDlg SIZE 50, 12;
  123.        ACTION ( DbSkip( 1 ),;
  124.                 If( EoF(), MsgInfo( OemToAnsi( "Fín de Fichero" ) ),),;
  125.                 If( EoF(), DbGoBottom(),),;
  126.                 getNombre:cText    := Clientes->Nombre,;
  127.                 getDireccion:cText := Clientes->Direccion )
  128.  
  129.    @ 8, 26 BUTTON "&Terminar"  OF oDlg SIZE 50, 12 ACTION oDlg:End()
  130.  
  131.    ACTIVATE DIALOG oDlg
  132.  
  133.    USE
  134.  
  135. return nil
  136.  
  137. //----------------------------------------------------------------------------//
  138.  
  139. static func NoEmptyField( cField )
  140.  
  141.     if empty( cField )
  142.         Alert( "Este campo no puede estar vacio" )
  143.         return .f.
  144.     endif
  145.  
  146. return .t.
  147.  
  148. //---------------------------------------------------------------------------//
  149.