Archivo: miniprint_list.prg
***Creado por Jose Miguel (Valencia)*** #include "minigui.ch" PROCEDURE main() ***CODIGO DE PAGINA español*** REQUEST HB_CODEPAGE_ESWIN HB_SETCODEPAGE("ESWIN") ***Inicializacion RDD DBFCDX Nativo*** REQUEST DBFCDX , DBFFPT RDDSETDEFAULT( "DBFCDX" ) ***DATOS DE INICIALIZACION*** Set Navigation Extended //TAB y ENTER SET DATE FORMAT "dd-mm-yyyy" SET EPOCH TO YEAR(DATE())-50 ***crear fichero de datos para este ejemplo*** IF .NOT. FILE("TARIFAS.DBF") aArq:={} Aadd( aArq , { 'CODTAR' , 'C' , 10 , 0 } ) Aadd( aArq , { 'NOMTAR' , 'C' , 50 , 0 } ) Aadd( aArq , { 'IMPORTE' , 'N' , 13 , 2 } ) DBCreate( "TARIFAS" , aArq ) Use TARIFAS Alias TARIFAS new FOR N=1 TO 50 APPEND BLANK REPLACE CODTAR WITH "E"+STRZERO(N,3) REPLACE NOMTAR WITH "Nombre articulo "+LTRIM(STR(N)) REPLACE IMPORTE WITH N+1000 NEXT TARIFAS->( DBCLOSEAREA() ) ENDIF ***fin crear fichero de datos para este ejemplo*** ***crear fichero indice para este ejemplo*** IF .NOT. FILE("TARIFAS.CDX") FERASE('TARIFAS.CDX') Use TARIFAS Alias TARIFAS new shared Index on CODTAR TAG ORDEN1 to TARIFAS.CDX TARIFAS->( DBCLOSEAREA() ) ENDIF ***fin crear fichero indice para este ejemplo*** Lis_TarCodigo() procedure Lis_TarCodigo() TituloImp:="Listado de tarifas" DEFINE WINDOW W_Imp1 ; AT 10,10 ; WIDTH 400 HEIGHT 275 ; TITLE 'Imprimir: '+TituloImp ; MAIN ; ON RELEASE CloseTables() @ 15,10 LABEL L_CodTar1 ; VALUE 'Desde codigo' ; WIDTH 90 HEIGHT 25 @ 10,100 TEXTBOX T_CodTar1 ; WIDTH 100 ; VALUE '' ; TOOLTIP 'Codigo tarifa' ; MAXLENGTH 10 @ 45,10 LABEL L_CodTar2 ; VALUE 'Hasta codigo' ; WIDTH 90 HEIGHT 25 @ 40,100 TEXTBOX T_CodTar2 ; WIDTH 100 ; VALUE 'ZZZZZZZZZZ' ; TOOLTIP 'Codigo tarifa' ; MAXLENGTH 10 @ 70,10 CHECKBOX C_Cuadro ; CAPTION 'Imprimir cuadros en lineas' ; WIDTH 200 VALUE .F. draw rectangle in window W_Imp1 at 110,010 to 112,390 fillcolor{255,0,0} //Rojo aIMP:=Impresoras("LISTADO") @125,10 LABEL L_Impresora ; VALUE 'Impresora' ; WIDTH 90 HEIGHT 25 @120,100 COMBOBOX C_Impresora ; WIDTH 280 ; ITEMS aIMP[1] ; VALUE aIMP[3] ; TOOLTIP 'Impresora' NOTABSTOP
@150, 10 CHECKBOX nImp CAPTION 'Seleccionar impresora' ; width 150 value .f. ; ON CHANGE W_Imp1.C_Impresora.Enabled:=IF(W_Imp1.nImp.Value=.T.,.F.,.T.) @180, 10 CHECKBOX nVer CAPTION 'Previsualizar documento' ; width 150 value .f. @210, 10 BUTTON B_Imp CAPTION 'Imprimir' WIDTH 90 HEIGHT 25 ; ACTION Lis_TarCodigoi("IMPRESORA") @210,110 BUTTON B_Excel CAPTION 'Hoja excel' WIDTH 90 HEIGHT 25 ; ACTION Lis_TarCodigoi("EXCEL") @210,210 BUTTON B_Can CAPTION 'Cancelar' WIDTH 90 HEIGHT 25 ; ACTION W_Imp1.release END WINDOW CENTER WINDOW W_Imp1 ACTIVATE WINDOW W_Imp1 Return Nil Function CloseTables() DBCOMMITALL() DBUNLOCKALL() CLOSE DATABASES Return NIL procedure Lis_TarCodigoi(LLAMADA) IF FILE("FIN.DBF") IF SELEC("FIN")<>0 FIN->( DBCLOSEAREA() ) ENDIF ERASE FIN.DBF ERASE FIN.CDX ENDIF
Use TARIFAS index TARIFAS Alias TARIFAS new shared SET FILTER TO COPY TO FIN FOR ; CODTAR>=W_Imp1.T_CodTar1.value .AND. CODTAR<=W_Imp1.T_CodTar1.value Use FIN Alias FIN new shared INDEX ON CODTAR TO FIN GO TOP IF LASTREC()=0 MsgExclamation("No hay datos en las fecha introducidas","Informacion") FIN->( DBCLOSEAREA() ) RETURN ENDIF IF LLAMADA="EXCEL" Lis_TarCodigoiE() ELSE Lis_TarCodigoiF() ENDIF procedure Lis_TarCodigoiF(LLAMADA) dirimp:=GetCurrentFolder()
IF W_Imp1.nImp.value=.t. IF W_Imp1.nVer.value=.t. SELECT PRINTER GetPrinter() ORIENTATION PRINTER_ORIENT_PORTRAIT PREVIEW ELSE SELECT PRINTER GetPrinter() ORIENTATION PRINTER_ORIENT_PORTRAIT ENDIF ELSE IF W_Imp1.C_Impresora.ItemCount=0 .OR. ; W_Imp1.C_Impresora.Value<=0 .OR. ; W_Imp1.C_Impresora.Value>W_Imp1.C_Impresora.ItemCount MSGSTOP("No hay impresoras instaladas","Error") SetCurrentFolder(dirimp) RETURN ENDIF IF W_Imp1.nVer.value=.t. SELECT PRINTER W_Imp1.C_Impresora.Item(W_Imp1.C_Impresora.Value) ORIENTATION PRINTER_ORIENT_PORTRAIT PREVIEW ELSE SELECT PRINTER W_Imp1.C_Impresora.Item(W_Imp1.C_Impresora.Value) ORIENTATION PRINTER_ORIENT_PORTRAIT ENDIF ENDIF START PRINTDOC NAME TituloImp START PRINTPAGE GO TOP PAG:=0 LIN:=0 DO WHILE .NOT. EOF() IF LIN>=260 .OR. PAG=0 IF PAG<>0 @ LIN+5,105 PRINT "SIGUE EN LA HOJA: "+LTRIM(STR(PAG+1)) CENTER END PRINTPAGE START PRINTPAGE ENDIF PAG=PAG+1
@ 20,20 PRINT "SUIZO ejemplos" @ 20,190 PRINT "Hoja: "+LTRIM(STR(PAG)) RIGHT @ 25,20 PRINT DATE() @ 25,105 PRINT "Nombre de la empresa" CENTER @ 35,105 PRINT TituloImp FONT "ft18" CENTER @ 40,20 PRINT 'desde: '+W_Imp1.T_CodTar1.value @ 45,20 PRINT 'hasta: '+W_Imp1.T_CodTar2.value LIN:=55 IF W_Imp1.C_Cuadro.Value=.T. @ LIN, 19 PRINT RECTANGLE TO LIN+5, 39 @ LIN, 39 PRINT RECTANGLE TO LIN+5,109 @ LIN,109 PRINT RECTANGLE TO LIN+5,141 ELSE @ LIN+4,20 PRINT LINE TO LIN+4,140 ENDIF @ LIN,20 PRINT "Codigo" @ LIN,40 PRINT "Descripcion" @ LIN,140 PRINT "Importe" RIGHT LIN:=LIN+5 ENDIF IF W_Imp1.C_Cuadro.Value=.T. @ LIN, 19 PRINT RECTANGLE TO LIN+5, 39 @ LIN, 39 PRINT RECTANGLE TO LIN+5,109 @ LIN,109 PRINT RECTANGLE TO LIN+5,141 ENDIF @ LIN,20 PRINT CODTAR @ LIN,40 PRINT NOMTAR @ LIN,140 PRINT TRANSFORM( IMPORTE , "@E 9,999,999.99" ) RIGHT LIN:=LIN+5 SKIP ENDDO SELEC FIN FIN->( DBCLOSEAREA() ) END PRINTPAGE END PRINTDOC SetCurrentFolder(dirimp) W_Imp1.release Return Nil
procedure Lis_TarCodigoiE(LLAMADA) LOCAL oExcel, oHoja oExcel := TOleAuto():New( "Excel.Application" ) oExcel:WorkBooks:Add() oExcel:Sheets("Hoja1"):Name := "Listado" * oExcel:Sheets("Hoja2"):Name := "Resumen" oHoja := oExcel:Get( "ActiveSheet" ) oHoja:Cells:Font:Name := "Arial" oHoja:Cells:Font:Size := 10
LIN:=8 oHoja:Cells( LIN, 1 ):Value := "Codigo" oHoja:Cells( LIN, 1 ):HorizontalAlignment:= -4152 //Derecha oHoja:Cells( LIN, 2 ):Value := "Descripcion" oHoja:Cells( LIN, 3 ):Value := "Importe" oHoja:Cells( LIN, 3 ):Set( "NumberFormat", "#.##0,00 €" ) oHoja:Range(CHR(64+1)+LTRIM(STR(LIN))+":"+CHR(64+3)+LTRIM(STR(LIN))):Font:Bold := .T. oHoja:Range(CHR(64+1)+LTRIM(STR(LIN))+":"+CHR(64+3)+LTRIM(STR(LIN))):Interior:ColorIndex := 36 //sombrear celdas oHoja:Range(CHR(64+1)+LTRIM(STR(LIN))+":"+CHR(64+3)+LTRIM(STR(LIN))):Borders(4):LineStyle:= 1 //linea inferior oHoja:Range(CHR(64+1)+LTRIM(STR(LIN))+":"+CHR(64+3)+LTRIM(STR(LIN))):HorizontalAlignment := -4108 //Centrar LIN++ PAG:=0 *LIN:=0 DO WHILE .NOT. EOF() oHoja:Cells( LIN, 1 ):Value := CODTAR oHoja:Cells( LIN, 2 ):Value := NOMTAR oHoja:Cells( LIN, 3 ):Value := IMPORTE oHoja:Cells( LIN, 3 ):Set( "NumberFormat", "#.##0,00" ) LIN++ SKIP ENDDO oHoja:Cells( 1, 1 ):Value := "SUIZO ejemplos" oHoja:Cells( 2, 1 ):Value := DATE() oHoja:Cells( 4, 1 ):Value := 'desde:' oHoja:Cells( 4, 2 ):Value := W_Imp1.T_CodTar1.value oHoja:Cells( 5, 1 ):Value := 'hasta:' oHoja:Cells( 5, 2 ):Value := W_Imp1.T_CodTar2.value oHoja:Range("A1:B6"):HorizontalAlignment:= -4131 //Izquierda FOR nCol:=1 TO FCOUNT() oHoja:Columns( nCol ):AutoFit() NEXT *Guardar como *oHoja:SaveAs( TituloImp ) oHoja:Cells( 1, 1 ):Select() oExcel:Visible := .T. oHoja:End() oExcel:End() SELEC FIN FIN->( DBCLOSEAREA() ) W_Imp1.release Return Nil procedure Impresoras(LLAMADA) aIMP1:=aPrinters() ASORT(aIMP1,,, { |x, y| UPPER(x) < UPPER(y) }) aIMP2:=GetDefaultPrinter() aIMP3:=ASCAN(aIMP1, {|aVal| aVal == aIMP2}) aIMP:={aIMP1,aIMP2,aIMP3} RETURN(aIMP)
|