Armando
Te estoy muy agradecido por la respuesta que le diste a mi pregunta.
Te pido el favor si te es posible facilitarme el tutor07 con la sugerencia que me haces, recuerda que son mis primeros pasos en este interesante proyecto aunque en clipper me defiendo un poquito.
Cordialmente
Jairo E Barbosa
Para Armando Picon
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Ok... Haremos el esfuerzo!!! Como dicen los ingleses "wait a moment"
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Bien aqui va el tutor07.prg (Ya me estoy olvidando de programar con Clipper... Debo practicar!!!)
"Por si las _... no he compilado ni ejecutado, porque el Clipper y el Blinker lo tengo en otro lado"
// More work on previuos Tutor06 --> curioso!!!
#include "FiveWin.ch"
static oWnd
//----------------------------------------------------------------------------//
function Main()
DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 ;
TITLE "Working with DataBases" ;
MENU BuildMenu()
SET MESSAGE OF oWnd ;
TO FWVERSION + ", " + FWCOPYRIGHT CENTERED KEYBOARD
ACTIVATE WINDOW oWnd // MAXIMIZED
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Information"
MENU
MENUITEM "&About..." ;
ACTION MsgInfo( "FiveWin Tutorial" + Chr( 13 ) + FWCOPYRIGHT ) ;
MESSAGE "Information about this application"
SEPARATOR
MENUITEM "&End..." ;
ACTION If( MsgYesNo( "Want to end ?" ), oWnd:End(),) ;
MESSAGE "End this application"
ENDMENU
MENUITEM "&Files"
MENU
MENUITEM "&Customers..." ;
ACTION Customers() ;
MESSAGE "Customers maintainance"
MENUITEM "&Stock" ;
ACTION MsgInfo( "Any option from here" ) ;
MESSAGE "Stock maintainance"
ENDMENU
MENUITEM "&Utils"
MENU
MENUITEM "&Calculator..." ;
ACTION WinExec( "Calc" ) ;
MESSAGE "Run Windows calculator"
MENUITEM "C&alendar..." ;
ACTION WinExec( "Calendar" ) ;
MESSAGE "Run Windows calendar"
MENUITEM "&Some fun..." ;
ACTION WinExec( "Sol" ) ;
MESSAGE "Play a game..."
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function Customers()
local oDlg
local cNombre := ""
local cDireccion := ""
local getNombre, getDireccion
if ! File( "clientes.dbf" )
DbCreate( "Clientes.dbf", { { "Nombre", "C", 40, 0 },;
{ "Direccion", "C", 50, 0 },;
{ "Telefono", "C", 12, 0 },;
{ "Edad", "N", 2, 0 },;
{ "Productos", "C", 10, 0 },;
{ "Nivel", "N", 2, 0 } } )
endif
USE Clientes
if RecCount() == 0
APPEND BLANK
endif
INDEX ON Clientes->Nombre TO CliNombr
SET INDEX TO CliNombr
GO TOP
cNombre := Clientes->Nombre
cDireccion := Clientes->Direccion
DEFINE DIALOG oDlg FROM 6, 7 TO 21, 72 TITLE "Customers Management"
@ 1, 2 SAY "Name:" OF oDlg
@ 1, 8 GET getNombre VAR cNombre OF oDlg VALID NoEmptyField( cNombre )
@ 2, 2 SAY "Address:" OF oDlg
@ 2, 8 GET getDireccion VAR cDireccion OF oDlg
@ 8, 3 BUTTON "&Previous" OF oDlg SIZE 50, 12 ;
ACTION ( DbSkip( -1 ),;
getNombre:cText := Clientes->Nombre,;
getDireccion:cText := Clientes->Direccion )
@ 8, 14 BUTTON "&Next" OF oDlg SIZE 50, 12;
ACTION ( DbSkip( 1 ),;
If( EoF(), MsgInfo( "End of file" ),),;
If( EoF(), DbGoBottom(),),;
getNombre:cText := Clientes->Nombre,;
getDireccion:cText := Clientes->Direccion )
/* Esta parte es lo que se ha agregado para lo que quieres*/
@ 8, 26 BUTTON "&Grabar" OF oDlg SIZE 50, 12;
ACTION ( DbAppend(),;
Clientes->Nombre := cNombre,;
Clientes->Direccion := cDireccion )
/* Esta parte se ha modificado*/
@ 8, 38 BUTTON "&End" OF oDlg SIZE 50, 12 ACTION oDlg:End()
ACTIVATE DIALOG oDlg
USE
return nil
//----------------------------------------------------------------------------//
static function NoEmptyField( cField )
if Empty( cField )
MsgAlert( "Empty field not allow here!" )
return .f.
endif
return .t.
//---------------------------------------------------------------------------//
/* Tambien se puede utilizar una funcion como esta para agregar registros
FUNCTION Grabar(Nombre, Direccion)
APPEND BLANK
Clientes->Nombre := Nombre
Clientes->Direccion := Direccion
RETURN NIL
*/
"Por si las _... no he compilado ni ejecutado, porque el Clipper y el Blinker lo tengo en otro lado"
// More work on previuos Tutor06 --> curioso!!!
#include "FiveWin.ch"
static oWnd
//----------------------------------------------------------------------------//
function Main()
DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 ;
TITLE "Working with DataBases" ;
MENU BuildMenu()
SET MESSAGE OF oWnd ;
TO FWVERSION + ", " + FWCOPYRIGHT CENTERED KEYBOARD
ACTIVATE WINDOW oWnd // MAXIMIZED
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Information"
MENU
MENUITEM "&About..." ;
ACTION MsgInfo( "FiveWin Tutorial" + Chr( 13 ) + FWCOPYRIGHT ) ;
MESSAGE "Information about this application"
SEPARATOR
MENUITEM "&End..." ;
ACTION If( MsgYesNo( "Want to end ?" ), oWnd:End(),) ;
MESSAGE "End this application"
ENDMENU
MENUITEM "&Files"
MENU
MENUITEM "&Customers..." ;
ACTION Customers() ;
MESSAGE "Customers maintainance"
MENUITEM "&Stock" ;
ACTION MsgInfo( "Any option from here" ) ;
MESSAGE "Stock maintainance"
ENDMENU
MENUITEM "&Utils"
MENU
MENUITEM "&Calculator..." ;
ACTION WinExec( "Calc" ) ;
MESSAGE "Run Windows calculator"
MENUITEM "C&alendar..." ;
ACTION WinExec( "Calendar" ) ;
MESSAGE "Run Windows calendar"
MENUITEM "&Some fun..." ;
ACTION WinExec( "Sol" ) ;
MESSAGE "Play a game..."
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function Customers()
local oDlg
local cNombre := ""
local cDireccion := ""
local getNombre, getDireccion
if ! File( "clientes.dbf" )
DbCreate( "Clientes.dbf", { { "Nombre", "C", 40, 0 },;
{ "Direccion", "C", 50, 0 },;
{ "Telefono", "C", 12, 0 },;
{ "Edad", "N", 2, 0 },;
{ "Productos", "C", 10, 0 },;
{ "Nivel", "N", 2, 0 } } )
endif
USE Clientes
if RecCount() == 0
APPEND BLANK
endif
INDEX ON Clientes->Nombre TO CliNombr
SET INDEX TO CliNombr
GO TOP
cNombre := Clientes->Nombre
cDireccion := Clientes->Direccion
DEFINE DIALOG oDlg FROM 6, 7 TO 21, 72 TITLE "Customers Management"
@ 1, 2 SAY "Name:" OF oDlg
@ 1, 8 GET getNombre VAR cNombre OF oDlg VALID NoEmptyField( cNombre )
@ 2, 2 SAY "Address:" OF oDlg
@ 2, 8 GET getDireccion VAR cDireccion OF oDlg
@ 8, 3 BUTTON "&Previous" OF oDlg SIZE 50, 12 ;
ACTION ( DbSkip( -1 ),;
getNombre:cText := Clientes->Nombre,;
getDireccion:cText := Clientes->Direccion )
@ 8, 14 BUTTON "&Next" OF oDlg SIZE 50, 12;
ACTION ( DbSkip( 1 ),;
If( EoF(), MsgInfo( "End of file" ),),;
If( EoF(), DbGoBottom(),),;
getNombre:cText := Clientes->Nombre,;
getDireccion:cText := Clientes->Direccion )
/* Esta parte es lo que se ha agregado para lo que quieres*/
@ 8, 26 BUTTON "&Grabar" OF oDlg SIZE 50, 12;
ACTION ( DbAppend(),;
Clientes->Nombre := cNombre,;
Clientes->Direccion := cDireccion )
/* Esta parte se ha modificado*/
@ 8, 38 BUTTON "&End" OF oDlg SIZE 50, 12 ACTION oDlg:End()
ACTIVATE DIALOG oDlg
USE
return nil
//----------------------------------------------------------------------------//
static function NoEmptyField( cField )
if Empty( cField )
MsgAlert( "Empty field not allow here!" )
return .f.
endif
return .t.
//---------------------------------------------------------------------------//
/* Tambien se puede utilizar una funcion como esta para agregar registros
FUNCTION Grabar(Nombre, Direccion)
APPEND BLANK
Clientes->Nombre := Nombre
Clientes->Direccion := Direccion
RETURN NIL
*/
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com