驴Puedo incluir una rutina VB en una fuente xHarbour?
Tengo problemas para programar con una ocx que no se como abrir...
Ayuda please...
Leon Valenzuela.
Santiago - Chile.
驴Puedo incluir una rutina VB en una fuente xHarbour?
Tengo problemas para programar con una ocx que no se como abrir...
Ayuda please...
Leon
saludos, enviame el ocx a mi correo a ver que puedo ayudar, o puedes comunicarte conmigo por chat gmail: danielgarciagil@gmail.com o msn: danielgarciagil@cantv.net
Daniel, gracias por responder, he puesto un mail para ti.
De antemano, gracias.
#include "FiveWin.ch"
//TxBaundRate
#define TXBR1200 0
#define TXBR2400 1
#define TXBR4800 2
#define TXBR9600 3
#define TXBR19200 4
#define TXBR38400 5
//TxCommPort
#define TXCOM1 0
#define TXCOM2 1
#define TXCOM3 2
#define TXCOM4 3
//TxErrorType
#define EFP_Success 0
#define EFP_E_ComInUse 1
#define EFP_E_InvalidCom 2
#define EFP_E_ComAlreadyOpen 3
#define EFP_E_ComAlreadyClose 4
#define EFP_E_BadInitialization 5
#define EFP_E_ComClose 6
#define EFP_E_MaxDataLengthReached 7
#define EFP_E_InvalidDataInField 8
#define EFP_E_OperationInProgress 9
#define EFP_E_WriteError 10
#define EFP_E_ReadTimeOut 11
#define EFP_E_NackReceived 12
#define EFP_E_InvalidIndex 13
//TxFiscalState
#define EFP_S_Close 0
#define EFP_S_Idle 1
#define EFP_S_Busy 2
//TxProtocolType
#define protocol_Compatible 0
#define protocol_Extended 1
function Main()
local oWnd, oEpson
DEFINE WINDOW oWnd TITLE "Epson Activex"
oEpson = TEpsonFPHostControl():New( oWnd ) //TActiveX():New( oWnd, "EpsonFPHostControlX.EpsonFPHostControl" )//
oEpson:bOnOpen = {|| Msginfo( "Port Opened" ) }
oEpson:bOnClose = {|| Msginfo( "Port Closed" ) }
oEpson:bOnError = {|| MsgInfo( oEpson:LastError ) }
oEpson:OpenPort()
? "BaudRate ANTES", oEpson:BaudRate
oEpson:BaudRate = TXBR19200
? "BaudRate DESPUES", oEpson:BaudRate
? "CommPort", oEpson:CommPort
? "ExtraFieldsCount", oEpson:ExtraFieldsCount
? "FiscalStatus", oEpson:FiscalStatus
? "LastError", oEpson:LastError
? "PrinterStatus", oEpson:PrinterStatus
? "ProtocolType", oEpson:ProtocolType
? "ReturnCode", oEpson:ReturnCode
? "State", oEpson:State
oEpson:ClosePort()
ACTIVATE WINDOW oWnd
return nil
CLASS TEpsonFPHostControl FROM TActiveX
DATA oActiveX
DATA oWnd
DATA bOnOpen
DATA bOnAck
DATA bOnClose
DATA bOnError
DATA bOnFinalAnswer
DATA bOnIntermediateAnswer
DATA bOnNack
DATA bOnRead
DATA bOnWrite
METHOD New( oWnd )
METHOD HandleEpsonEvent( event, aParams, pParams )
ENDCLASS
METHOD New( oWnd ) CLASS TEpsonFPHostControl
::oWnd = oWnd
Super:New( oWnd, "EpsonFPHostControlX.EpsonFPHostControl" )
::bOnEvent = { | event, aParams, pParams | ::HandleEpsonEvent( event, aParams, pParams ) }
RETURN Self
//-------
METHOD HandleEpsonEvent( event, aParams, pParams ) CLASS TEpsonFPHostControl
LOCAL cEvent := UPPER( event )
SWITCH cEvent
CASE "ONOPEN"
IF ::bOnOpen != NIL .AND. ValType( ::bOnOpen ) == "B"
Eval( ::bOnOpen, aParams )
ENDIF
EXIT
CASE "ONACK"
IF ::bOnAck != NIL .AND. ValType( ::bOnAck ) == "B"
Eval( ::bOnAck, aParams )
ENDIF
EXIT
CASE "ONCLOSE"
IF ::bOnClose != NIL .AND. ValType( ::bOnClose ) == "B"
Eval( ::bOnClose, aParams )
ENDIF
EXIT
CASE "ONERROR"
IF ::bOnError != NIL .AND. ValType( ::bOnError ) == "B"
Eval( ::bOnError, aParams )
ENDIF
EXIT
CASE "ONFINALANSWER"
IF ::bOnFinalAnswer != NIL .AND. ValType( ::bOnFinalAnswer ) == "B"
Eval( ::bOnFinalAnswer, aParams )
ENDIF
EXIT
CASE "ONINTERMEDIATEANSWER"
IF ::bOnIntermediateAnswer != NIL .AND. ValType( ::bOnIntermediateAnswer ) == "B"
Eval( ::bOnIntermediateAnswer, aParams )
ENDIF
EXIT
CASE "ONNACK"
IF ::bOnNack != NIL .AND. ValType( ::bOnNack ) == "B"
Eval( ::bOnNack, aParams )
ENDIF
EXIT
CASE "ONREAD"
IF ::bOnRead != NIL .AND. ValType( ::bOnRead ) == "B"
Eval( ::bOnRead, aParams )
ENDIF
EXIT
CASE "ONWRITE"
IF ::bOnWrite != NIL .AND. ValType( ::bOnWrite ) == "B"
Eval( ::bOnWrite(), aParams )
ENDIF
EXIT
ENDSWITCH
RETURN NILxHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406)
Copyright 1999-2009, http://www.xharbour.org <!-- m --><a class="postlink" href="http://www.harbour-project.org/">http://www.harbour-project.org/</a><!-- m -->
Compiling 'epsonocx.prg' and generating preprocessed output to 'epsonocx.ppo'...
epsonocx.prg(109) Error E0059 聽Invalid SWITCH Constant 'ONOPEN'.
epsonocx.prg(114) Error E0059 聽Invalid SWITCH Constant 'ONACK'.
epsonocx.prg(119) Error E0059 聽Invalid SWITCH Constant 'ONCLOSE'.
epsonocx.prg(124) Error E0059 聽Invalid SWITCH Constant 'ONERROR'.
epsonocx.prg(129) Error E0059 聽Invalid SWITCH Constant 'ONFINALANSWER'.
epsonocx.prg(134) Error E0059 聽Invalid SWITCH Constant 'ONINTERMEDIATEANSWER'.
epsonocx.prg(139) Error E0059 聽Invalid SWITCH Constant 'ONNACK'.
epsonocx.prg(144) Error E0059 聽Invalid SWITCH Constant 'ONREAD'.
epsonocx.prg(149) Error E0059 聽Invalid SWITCH Constant 'ONWRITE'.
9 errors
No code generated
DO CASE
CASE cEvent == "ONOPEN"
...
CASE cEvent == "ONCLOSE"
...
ENDCASEDaniel, gracias otra vez, por intuici贸n lo hice, y funcion贸, ahora, la pregunta es, 驴c贸mo uso la funci贸n "AddDataField" de la ocx? tengo que definirla?
Un abrazo, Leo.
...
oEpson:AddDataField(....) //<-- No olvidar poner los parametros correctos
...
...? "A帽adiendo venta", oEpson:AddDataField("hola")
聽 聽 ? "A帽adiendo venta", oEpson:AddDataField("Holanda")Lautaro, muchas gracias por tu aporte... creo que la cosa funcionar谩...
al menos, eso espero...
Un abrazo, Leo.
Me.EpsonFPHostControl1.AddDataField Chr$(&H2) & Chr$(&HA)
Me.EpsonFPHostControl1.AddDataField Chr$(&H0) & Chr$(&H1)saludos
amigo leon, pudistes por fin grabar la venta, tengo el mismo problema ahora y quizas me puedas ayudar, como vi tu ultima pregunta sin responder no se si al fin lo pudistes hacer
QAZWSX2K, Leon
Haganlo asi...
Ejemplos
//--------------------------------------------
Comando:=Chr(5) + Chr(1)
lRes:=EF:AddDataField(Comando)
Extension:=VtArrayWrapper(VT_UI1,( Chr(0) + Chr(0) + Chr(0) + Chr(0) ) )
lRes:=EF:AddDataField(Extension)
lRes:=SendCommand()
//---------------------------------------------
En el cuerpo de la Boleta, cada linea de productos, hacer esto.
//---------------------------------------------
Comando:=Chr(10) + Chr(6)
lRes:=EF:AddDataField(Comando)
Extension:=VtArrayWrapper(VT_UI1,( Chr(0) + Chr(0) + Chr(1) + Chr(0) ) )
EF:AddDataField(Extension)
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField("")
EF:AddDataField( Substr(cProducto,1,30))
EF:AddDataField( nCantidad )
EF:AddDataField( nValorUnidad )
EF:AddDataField( 1900 )
lRes:=SendCommand()
//---------------------------------------------
Cualquier avance o duda, posteenla..
Saludos
Desde Chile
Adolfo