Para Armando Picon

Post Reply
jaba
Posts: 109
Joined: Tue Dec 12, 2006 12:39 am
Location: CALI COLOMBIA

Para Armando Picon

Post by jaba »

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
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

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
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

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
*/
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
Post Reply