pueda seguir experimentando.
Code: Select all
/*________________________________________________________________________________________*/
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
/* BY AndyGlezL arreglos Mustafa López */
/*________________________________________________________________________________________*/
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
#include "hmg.ch"
FUNCTION Main
REQUEST DBFCDX , DBFFPT ,DBFNTX , DBFDBT
RDDSETDEFAULT( 'DBFCDX','DBFNTX' )
SET CODEPAGE TO SPANISH
SET CENTURY ON
SET DATE FRENCH
SET DATE FORMAT TO 'dd/mm/yyyy'
SET EPOCH TO 2000
PRIVATE Hora_1
PRIVATE Hora_2
PRIVATE Hora_1x
PRIVATE Hora_2x
PRIVATE Hora_To
PRIVATE aReg , nValor, Regs
PRIVATE Num
PRIVATE aStruct := { ;
{ "FACT" , "N", 7, 0 }, ;
{ "FECH" , "D", 8, 0 } ;
}
IF ! FILE("Fact.dbf")
DbCreate( "Fact", aStruct, .T. )
Close Databases
USE Fact
Num := 0
FOR i=1 TO 50000
Num := Num + 1
APPEND BLANK
REPLACE FACT WITH Num
REPLACE FECH WITH DATE()
NEXT
Close Databases
ENDIF
Use Fact New
IF ! file("Fact.cdx")
index on STR(FACT) to Fact
ENDIF
Set Index to Fact
*---------------------------------------------------------------------------------------------------------------------*
DEFINE WINDOW Form_1 AT 0 , 0 WIDTH 555 HEIGHT 320 MAIN NOSIZE NOMAXIMIZE BACKCOLOR { 216 , 191 , 216 }
ON KEY ESCAPE OF Form_1 ACTION Cancela()
DEFINE TIMER TimerMemoryTest OF Form_1 INTERVAL 5000 ACTION ReleaseMemoryTest()
*-------------------------------------------------------------*
_HMG_SYSDATA [ 348 ] := { 199,250,225 }
_HMG_SYSDATA [ 349 ] := { 007,071,041 }
_HMG_SYSDATA [ 350 ] := { 235,237,095 }
_HMG_SYSDATA [ 351 ] := { 069,015,135 }
*-------------------------------------------------------------*
@ 075,310 GRID Grid_1 ;
WIDTH 205 HEIGHT 150 ;
HEADERS {"FACTURA","FECHA"} ;
WIDTHS {80,100} ;
ROWSOURCE "fact" ;
ON CHANGE PositionData() ;
COLUMNFIELDS {"FACT","FECH"} ;
FONTCOLOR { 005,186,010 } ;
BACKCOLOR { 211,218,236 }
@ 010, 015 BUTTON BT_1 OF Form_1 CAPTION "Procesa" ACTION Procesa() WIDTH 100 HEIGHT 20
@ 043, 015 LABEL LB_1 OF Form_1 WIDTH 250 HEIGHT 20 VALUE "..."
@ 043, 345 LABEL LB_2 OF Form_1 WIDTH 200 HEIGHT 20 VALUE "Oprima ESC para cancelar..." BACKCOLOR { 216 , 191 , 216 }
@ 080, 015 BUTTON BT_2 OF Form_1 CAPTION "Cancelar" ACTION Cancela() WIDTH 100 HEIGHT 20
@ 120, 015 LABEL LB_3 OF Form_1 WIDTH 200 HEIGHT 20 VALUE "" BACKCOLOR { 216 , 191 , 216 }
@ 140, 015 LABEL LB_4 OF Form_1 WIDTH 200 HEIGHT 20 VALUE "" BACKCOLOR { 216 , 191 , 216 }
@ 170, 015 LABEL LB_5 OF Form_1 WIDTH 200 HEIGHT 20 VALUE "" BACKCOLOR { 216 , 191 , 216 }
@ 240, 378 LABEL LB_6 OF Form_1 WIDTH 150 HEIGHT 35 VALUE "Registro / Total" BACKCOLOR { 216 , 191 , 216 }
@ 259, 382 LABEL LB_7 OF Form_1 WIDTH 150 HEIGHT 35 VALUE "" FONT "Arial" SIZE 10 BOLD BACKCOLOR { 216 , 191 , 216 }
@ 220, 015 BUTTON BT_3 OF Form_1 CAPTION "Exit" ACTION Form_1.Release WIDTH 100 HEIGHT 30
Chane_Style()
END WINDOW
Form_1.Grid_1.Refresh
Form_1.Grid_1.SetFocus
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN
/*[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]*/
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
*----------------------------------------------------------------*
FUNCTION Chane_Style() // Hace Recuadro en Grid
*----------------------------------------------------------------*
HMG_ChangeWindowStyle ( GetControlHandle("Grid_1","Form_1"), LVS_REPORT, NIL, .T. )
Return
*--------------------------------------------------------------*
Function PositionData() // Nº de Registro / Total
*--------------------------------------------------------------*
aReg := Form_1.Grid_1.Value
nValor := 0
Regs := STR( Form_1.Grid_1.ItemCount )
Select('FACT')
nValor := aReg[1]
Form_1.LB_7.value := ALLTRIM( STR(nValor) ) + SPACE(1) + "/" + SPACE(1) + ALLTRIM( Regs)
Return
*----------------------------------*
FUNCTION Procesa()
*----------------------------------*
Form_1.LB_5.Value := ""
GO TOP
lSalPitando := .T.
Hora_1 := TIME()
Form_1.LB_3.Value := "Inicio: "+ SPACE(13)+ HORA_1 //TIME()
DO WHILE !EOF() .AND. lSalPitando
Form_1.LB_1.Value := "Factura: " + STR(FACT->FACT) + " No. Reg.: " + STR( RecNo(), 9 )
Hora_2 := TIME()
Form_1.LB_4.Value := "Proceso: "+ SPACE(08)+ HORA_2 //TIME()
DBSKIP()
DO EVENTS
ENDDO
Total_Timex()
Form_1.Grid_1.RecNo := FACT->(RecNo() - 1 )
PositionData()
RETURN
*----------------------------------*
FUNCTION Cancela()
*----------------------------------*
lSalPitando := .F.
Total_Timex()
RETURN
*----------------------------------*
FUNCTION Total_Timex()
*----------------------------------*
Hora_1x := STRTRAN(Hora_1, ':')
Hora_2x := STRTRAN(Hora_2, ':')
Hora_To := VAL(Hora_2x) - VAL(Hora_1x)
Form_1.LB_5.Value := " "
Form_1.LB_5.Value := "Total Time: "+ SPACE(15) + ALLTRIM(STR(Hora_To))
RETURN
*------------------------------------------*
PROCEDURE ReleaseMemoryTest()
*-----------------------------------------*
STATIC IniMem := 0
LOCAL EndMem
IF IniMem == 0
IniMem := GetProcessMemoryInfo()[3]
ENDIF
EndMem := GetProcessMemoryInfo()[3]
#define MEM_LIMIT 3 // for example 3 times the initial amount of memory used
IF (EndMem / IniMem) > MEM_LIMIT
RELEASE MEMORY
IniMem := GetProcessMemoryInfo()[3]
ENDIF
RETURN
*---------------------------------------------------------------------------------------------------------*
*---------------------------------------------------------------------------------------------------------*