Aqui Un Ejemplo funcional para xbrowse

Aqui Un Ejemplo funcional para xbrowse

Postby FranciscoA » Thu Oct 23, 2008 6:06 am

Amigos, aquí está el código ejemplo de una función para edición contable de un comprobante de diario. Fácilmente puede ser pasado a código para facturación.

Es una manera de hacer público mi agradecimiento por toda la ayuda que he recibido de este grandioso foro.

Agradeceré cualquier comentacio o mejora al código.
Espero que les sea de utilidad.

ImageImage

/*
Ejemplo de TXbrowse para edicion de comprobantes de diario.
Francisco Alegría P., Octubre 22/2008

1- Edicion automatica (lFastEdit = .t.)
2- Validacion de celdas (en este caso, cta y scta).
3- Salto sobre la celda cuando ésta no es editable (con tecla return)
Si la celda proxima no es editable, salta sobre ella a la siguiente.
4- Columnas de Debitos y Creditos:
Si debitos tiene valor, creditos no es editable y viceversa.
5- Cuando se edita la ultima columna, agrega nueva fila y se va a la primer columna.
6- Navegacion con las teclas direccionales, manteniendo el estado de edición.
7- Si se oprima flecha abajo en cualquier columna, y es la ultima fila del browse,
agrega un nuevo registro y se traslada a la primer columna en modo de edicion.
Si se oprime Escape, elimina el registro recien agregado, si este estaba vacio.
8- Para eliminar un registro con valor, se utiliza la tecla delete y presenta dialog para confirmar.
9- Edicion de cualquier columna editable sin necesidad de oprimir enter.
10 Totales y otros textos en footer
11- No admite salvar el registro si no validan .t., las funciones lCtaOK() y lDebHabOK()


Para accionar el salto sobre columna no editable, utilizar este codigo:
Introducirlo en la parte final del metodo function EditGetkeyDown( Self, nKey ),
o usarlo como parte del programa.
Local nNextCol
...
...
nNextCol := ::oBrw:nColSel + 1 // FranciscoA Sept/23/2008
if ::oBrw:aCols[nNextCol]:nEditType == 0 //Si prox col no es editable...
if nNextCol < Len(::oBrw:aCols) //Si no es la ult columna, salta a sig editable
::oBrw:nColSel := nNextCol + 1
::oBrw:Refresh()
endif
endif
*/


Code: Select all  Expand view  RUN
#include "FiveWin.ch"
#include "InKey.ch"
#include "xbrowse.ch"

//----------------------------
Function CDiario()
local oWnd, oBrw, oCol, cAlias
local n:=0
local nTotal1:=0, nTotal2:=0


DbUseArea(.T.,,"Datos","Datos",.F.)
cAlias:=Alias()

dbSelectArea(cAlias)

   DEFINE WINDOW oWnd TITLE "EDITAR COMPROBANTE DE DIARIO" ;
          FROM 0,0 TO 600,900 PIXEL ;
          COLOR nRGB(247, 243, 232), nRGB(228, 213, 184)

   oBrw := TXBrowse():New( oWnd )
   oBrw:cAlias := cAlias

   oBrw:nColDividerStyle     := LINESTYLE_INSET
   oBrw:nRowDividerStyle     := LINESTYLE_INSET
   oBrw:lColDividerComplete  := .t.    //completa pintado sobre el footer cuando lineas no llenan todo el browse

   oBrw:nHeaderHeight        := 30   //Altura cabeceras de col
   oBrw:lFooter              := .t.  //Que tendrá footer
   oBrw:nFooterLines         := 1    //Lineas del footer
   oBrw:nFooterHeight        := 24   //Altura del  Footer
   oBrw:lRecordSelector      := .t.  //poner o no, COL de la flechita de la izq


   oBrw:bClrHeader    := {|| { nRGB(140,  0,  0), nRGB(229,0,0) } }  // VERDECITO
   oBrw:bClrFooter    := oBrw:bClrHeader
   oBrw:bClrStd       := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }  // colores para lineas normales
   oBrw:bClrSel       := {|| { nRGB(255,255,255), nRGB(241,222,088) } }  // para barra de linea selecc cuando el control no tiene el foco
   oBrw:bClrSelFocus  := {|| { nRGB(  0,  0,  0), nRGB(248,195, 34) } }  // para barra de linea selecc cuando el control tiene el foco

   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  //solo ilumina la celda actual

   oBrw:nRowHeight   := 20  //altura entre lineas

   oBrw:lFastEdit := .t.

   oBrw:bPastEof = {|| if( lCtaOK(oBrw) .and. lDebHabOK((cAlias)->debe+(cAlias)->haber) ,;
                           (Dbappend(), oBrw:GoLeftMost(), oBrw:Refresh(), oBrw:aCols[ 1 ]:Edit() ),) }  //agrega registro y "oprime" enter


   //Aqui uso DbPack() porque es una dbf pequeña y temporal. En grandes usar function de mantenimiento.
   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->cta }
   oCol:cHeader = "CTA"
   oCol:nEditType = EDIT_GET
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
                        If( nKey == VK_RETURN, (cAlias)->Cta := xVal, ) ,;
                        If( nKey == VK_ESCAPE .and. Empty((cAlias)->Cta), ( (cAlias)->(dbDelete()),(cAlias)->(__dbPack()),(cAlias)->(dbGoBottom()),oBrw:Refresh() ), ) }

   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->Scta }
   oCol:cHeader = "SC4"
   oCol:nEditType = EDIT_GET
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
                        If( nKey == VK_RETURN, if(lCtaOK(oBrw),(cAlias)->Scta := xVal, oBrw:GoLeftMost()),) }


   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->NOMBRE }
   oCol:cHeader = "DESCRIPCION DE LA CUENTA"
   oCol:cFooter = "BALANCE --->  "
   oCol:nFootStrAlign := 1
   oCol:nEditType = 0   //no editable

   oCol = oBrw:AddCol()
   oCol:bStrData = { || Transform((cAlias)->DEBE,"9,999,999,999.99") }
   oCol:nDataStrAlign := 1   //alineado a la derecha
   oCol:cHeader = "DEBITOS"
   oCol:nEditType = EDIT_GET
   oCol:lTotal := .t.    //para totalizar cols a report y/o excel
   oCol:bFooter  =  {|| TRANSFORM(nTotal1,"9,999,999,999.99") }
   oCol:nFootStrAlign := 1
   oCol:bEditWhen := {|| (cAlias)->Haber =0 }
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),),;
                        If( nKey == VK_RETURN,;
                        if(lCtaOK(oBrw),( nTotal1+=(Val(xVal)-(cAlias)->DEBE), oCol:RefreshFooter(), (cAlias)->DEBE := Val(xVal) ), oBrw:GoLeftMost()) ,) }

   oCol = oBrw:AddCol()
   oCol:bStrData = { || Transform((cAlias)->HABER,"9,999,999,999.99") }
   oCol:nDataStrAlign := 1
   oCol:cHeader = "CREDITOS"
   oCol:nEditType = EDIT_GET
   oCol:lTotal := .t.    //para totalizar cols a report y/o excel
   oCol:bFooter  =  {|| TRANSFORM(nTotal2,"9,999,999,999.99") }
   oCol:nFootStrAlign := 1
   oCol:bEditWhen := {|| (cAlias)->Debe =0 }
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),),;
                        If( nKey == VK_RETURN,;
                        if(lCtaOK(oBrw), ( nTotal2+=(Val(xVal)-(cAlias)->HABER), oCol:RefreshFooter(), (cAlias)->HABER := Val(xVal) ), oBrw:GoLeftMost()) ,) }


   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->CONCEPTO }
   oCol:cHeader = "CONCEPTO"
   oCol:nEditType = EDIT_GET
   //Es la ultima columna, agrega nuevo registro en blanco y se va a primer columna,
   //solo si la cta y/o valores están OK
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, DbAppend(),),;
                        If( nKey == VK_RETURN, (cAlias)->CONCEPTO := xVal ,) ,;
                        if( !lCtaOK(oBrw),(oBrw:GoLeftMost(), oBrw:Refresh()),;
                            if ( (cAlias)->(Recno())==(cAlias)->(Reccount()) .and. lDebHabOK((cAlias)->debe+(cAlias)->haber), (DbAppend(), oBrw:GoLeftMost(), oBrw:Refresh()),) ) }


   oBrw:SetRDD()
   oBrw:CreateFromCode()

   oBrw:bKeyDown :={ | nKey | Teclas(nKey, oBrw, cAlias) }

   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd ;
      ON INIT oBrw:SetFocus()

RETURN NIL

//--------------------
Function Teclas(nKey, oBrw, cAlias)
Do Case
   Case nKey == VK_DELETE
       if MsgNoYes("¿Está seguro(a) de borrar este registro?","Borrar registro de "+cAlias)
          (cAlias)->(dbDelete())
          (cAlias)->(dbPack())
           oBrw:GoBottom()
           oBrw:Refresh()
       endif
EndCase
Return nil

//----------------//
Function lCtaOK(oBrw)
//tu codigo de validacion
(oBrw:cAlias)->nombre := "Nombre de la Cuenta, si existe..."
 oBrw:Refresh()
Return .t.

//----------------------------//No permitir registro sin valores
Function lDebHabOK(nValor)
if nValor = 0
   MsgStop("Omision de Valores","Alto")
   return .f.
endif
Return .t.


//ESTAS FUNCIONES SON PARA COLORES PERSONALIZADOS DEL XBROWSE YA PUBLICADAS
//No son necesarias a menos que quieras emplear las classes modificadas.

//-------------------COLOR BUTTONBAR
Function ClrMsgBar()
Return {nRGB(255,228,150),nRGB(167,128,0)}

//-------------------COLOR HEARDERS DEL TXBROWSE
Function ClrHeader()
Return { nRGB(255,248,220), nRGB(157, 138,0) }   //VERDECITO

//-------------------COLOR FOOTER DEL TXBROWSE
Function ClrFooter()
Return { nRGB(255,248,220), nRGB(157, 138,0) }   //VERDECITO
 


Lo probé antes de subirlo y me funciona bien.

Saludos

Francisco J. Alegría P[/img][/url]
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Aqui Un Ejemplo funcional para xbrowse

Postby FranciscoA » Thu Oct 23, 2008 3:42 pm

Para las funciones descritas, puedes buscar asi:
No encuentro las mejoras hechas a xbrowse por franciscoA ??
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Aqui Un Ejemplo funcional para xbrowse

Postby QAZWSX2K » Tue Mar 03, 2009 8:24 pm

SALUDOS FRANCISCO

He tratado de ejecutar tu ejemplo pero me he encontrado algunos problemitas que son:

1.- no tengo la tabla, lo cual no es grave pq se puede ir creando a medida que de errores de base de datos, etc
2.- me da errores lo siguiente:
oCol:lTotal := .t. //para totalizar cols a report y/o excel
oCol:bFooter = {|| TRANSFORM(nTotal2,"9,999,999,999.99") }
o:nFootStrAlign := 1
oCol:bEditWhen := {|| DBTEST:Debe =0 }
oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),),;

lo que me hace pensar que no tengo la misma version de xbrowse y tras ponerlas todas en comentarios solo a la final, veo la ventana vacia, bueno precisamente esoty trabajando en esto y no se si seria mucho pedirte enviaras las dbf y el xbrowse que tu usas

yo uso fw74 para xharbour no se si afectara, bueno si puedo hacer arrancar tu programa y le logro hacer algo adicional con gusto te informare, buenom cualquier cosa me escribes a mi privado, gracias de antemanos y estamos a la orden aqui en venezuela tanbien
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
User avatar
QAZWSX2K
 
Posts: 364
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: Aqui Un Ejemplo funcional para xbrowse

Postby FranciscoA » Tue Mar 03, 2009 10:27 pm

Alex, revisa tu correo.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Aqui Un Ejemplo funcional para xbrowse

Postby QAZWSX2K » Wed Mar 04, 2009 7:17 pm

GRACIAS FRANCISCO, te cuento que no ha llegado nada, revisa si se devolvio o si podrias volver a intentar, gracias nuevamente y disculpa
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
User avatar
QAZWSX2K
 
Posts: 364
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: Aqui Un Ejemplo funcional para xbrowse

Postby Compuin » Thu Jan 13, 2011 4:34 pm

Hola,

Podrias enviarme el mismo DBF y codigo a mi tambien? MI email es wbguerrero@gmail.com Aun no he podido lograr compilar ningun browser de los samples de fwh. Todos me dan error

A la espera de tu email y gracias de antemano
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Aqui Un Ejemplo funcional para xbrowse

Postby FranciscoA » Thu Jan 13, 2011 5:27 pm

Compuin, revisa tu correo. Es para la ver 712
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Aqui Un Ejemplo funcional para xbrowse

Postby sysctrl2 » Thu Jan 13, 2011 6:01 pm

aqui esta el ejeplo: se crea la tabla DATOS.DBF si no existe.

Code: Select all  Expand view  RUN
#include "FiveWin.ch"
#include "InKey.ch"
#include "xbrowse.ch"

//----------------------------
Function CDiario()
   local oWnd, oBrw, oCol, cAlias
   local n:=0
   local nTotal1:=0, nTotal2:=0
   
   
   local aDbf := {}
   aadd( aDbf, {"cta"     , "C", 10, 00}  )
   aadd( aDbf, {"scta"    , "C", 10, 00}  )
   aadd( aDbf, {"nombre"  , "C", 40, 00}  )
   aadd( aDbf, {"debe"    , "n", 12, 02}  )
   aadd( aDbf, {"haber"   , "n", 12, 02}  )
   aadd( aDbf, {"concepto", "C", 40, 00}  )
   if !file( "DATOS.DBF"  )
      dbcreate( "datos.dbf", aDbf )
   Endif
   
   




   DbUseArea(.T.,,"Datos","Datos",.F.)
   
   if lastrec() = 0
      dbappend()
      rlock()
      field->cta  := "6130380125"
      field->scta := "3230"
      field->nombre := "NOMBRE CUENTA"
      dbunlock()
   endif
   
   
   cAlias:=Alias()

   dbSelectArea(cAlias)

   DEFINE WINDOW oWnd TITLE "EDITAR COMPROBANTE DE DIARIO" ;
          FROM 0,0 TO 600,900 PIXEL ;
          COLOR nRGB(247, 243, 232), nRGB(228, 213, 184)

   oBrw := TXBrowse():New( oWnd )
   oBrw:cAlias := cAlias

   oBrw:nColDividerStyle     := LINESTYLE_INSET
   oBrw:nRowDividerStyle     := LINESTYLE_INSET
   oBrw:lColDividerComplete  := .t.    //completa pintado sobre el footer cuando lineas no llenan todo el browse

   oBrw:nHeaderHeight        := 30   //Altura cabeceras de col
   oBrw:lFooter              := .t.  //Que tendrá footer
   oBrw:nFooterLines         := 1    //Lineas del footer
   oBrw:nFooterHeight        := 24   //Altura del  Footer
   oBrw:lRecordSelector      := .t.  //poner o no, COL de la flechita de la izq


   oBrw:bClrHeader    := {|| { nRGB(140,  0,  0), nRGB(229,0,0) } }  // VERDECITO
   oBrw:bClrFooter    := oBrw:bClrHeader
   oBrw:bClrStd       := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }  // colores para lineas normales
   oBrw:bClrSel       := {|| { nRGB(255,255,255), nRGB(241,222,088) } }  // para barra de linea selecc cuando el control no tiene el foco
   oBrw:bClrSelFocus  := {|| { nRGB(  0,  0,  0), nRGB(248,195, 34) } }  // para barra de linea selecc cuando el control tiene el foco

   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  //solo ilumina la celda actual

   oBrw:nRowHeight   := 20  //altura entre lineas

   oBrw:lFastEdit := .t.

   oBrw:bPastEof = {|| if( lCtaOK(oBrw) .and. lDebHabOK((cAlias)->debe+(cAlias)->haber) ,;
                           (Dbappend(), oBrw:GoLeftMost(), oBrw:Refresh(), oBrw:aCols[ 1 ]:Edit() ),) }  //agrega registro y "oprime" enter


   //Aqui uso DbPack() porque es una dbf pequeña y temporal. En grandes usar function de mantenimiento.
   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->cta }
   oCol:cHeader = "CTA"
   oCol:nEditType = EDIT_GET
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
                        If( nKey == VK_RETURN, (cAlias)->Cta := xVal, ) ,;
                        If( nKey == VK_ESCAPE .and. Empty((cAlias)->Cta), ( (cAlias)->(dbDelete()),(cAlias)->(__dbPack()),(cAlias)->(dbGoBottom()),oBrw:Refresh() ), ) }

   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->Scta }
   oCol:cHeader = "SC4"
   oCol:nEditType = EDIT_GET
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),) ,;
                        If( nKey == VK_RETURN, if(lCtaOK(oBrw),(cAlias)->Scta := xVal, oBrw:GoLeftMost()),) }


   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->NOMBRE }
   oCol:cHeader = "DESCRIPCION DE LA CUENTA"
   oCol:cFooter = "BALANCE --->  "
   oCol:nFootStrAlign := 1
   oCol:nEditType = 0   //no editable

   oCol = oBrw:AddCol()
   oCol:bStrData = { || Transform((cAlias)->DEBE,"9,999,999,999.99") }
   oCol:nDataStrAlign := 1   //alineado a la derecha
   oCol:cHeader = "DEBITOS"
   oCol:nEditType = EDIT_GET
   oCol:lTotal := .t.    //para totalizar cols a report y/o excel
   oCol:bFooter  =  {|| TRANSFORM(nTotal1,"9,999,999,999.99") }
   oCol:nFootStrAlign := 1
   oCol:bEditWhen := {|| (cAlias)->Haber =0 }
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),),;
                        If( nKey == VK_RETURN,;
                        if(lCtaOK(oBrw),( nTotal1+=(Val(xVal)-(cAlias)->DEBE), oCol:RefreshFooter(), (cAlias)->DEBE := Val(xVal) ), oBrw:GoLeftMost()) ,) }

   oCol = oBrw:AddCol()
   oCol:bStrData = { || Transform((cAlias)->HABER,"9,999,999,999.99") }
   oCol:nDataStrAlign := 1
   oCol:cHeader = "CREDITOS"
   oCol:nEditType = EDIT_GET
   oCol:lTotal := .t.    //para totalizar cols a report y/o excel
   oCol:bFooter  =  {|| TRANSFORM(nTotal2,"9,999,999,999.99") }
   oCol:nFootStrAlign := 1
   oCol:bEditWhen := {|| (cAlias)->Debe =0 }
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, ( DbAppend(), oBrw:Refresh() ),),;
                        If( nKey == VK_RETURN,;
                        if(lCtaOK(oBrw), ( nTotal2+=(Val(xVal)-(cAlias)->HABER), oCol:RefreshFooter(), (cAlias)->HABER := Val(xVal) ), oBrw:GoLeftMost()) ,) }


   oCol = oBrw:AddCol()
   oCol:bStrData = { || (cAlias)->CONCEPTO }
   oCol:cHeader = "CONCEPTO"
   oCol:nEditType = EDIT_GET
   //Es la ultima columna, agrega nuevo registro en blanco y se va a primer columna,
   //solo si la cta y/o valores están OK
   oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, DbAppend(),),;
                        If( nKey == VK_RETURN, (cAlias)->CONCEPTO := xVal ,) ,;
                        if( !lCtaOK(oBrw),(oBrw:GoLeftMost(), oBrw:Refresh()),;
                            if ( (cAlias)->(Recno())==(cAlias)->(Reccount()) .and. lDebHabOK((cAlias)->debe+(cAlias)->haber), (DbAppend(), oBrw:GoLeftMost(), oBrw:Refresh()),) ) }


   oBrw:SetRDD()
   oBrw:CreateFromCode()

   oBrw:bKeyDown :={ | nKey | Teclas(nKey, oBrw, cAlias) }

   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd ;
      ON INIT oBrw:SetFocus()

RETURN NIL

//--------------------
Function Teclas(nKey, oBrw, cAlias)
Do Case
   Case nKey == VK_DELETE
       if MsgNoYes("¿Está seguro(a) de borrar este registro?","Borrar registro de "+cAlias)
          (cAlias)->(dbDelete())
          (cAlias)->(dbPack())
           oBrw:GoBottom()
           oBrw:Refresh()
       endif
EndCase
Return nil

//----------------//
Function lCtaOK(oBrw)
//tu codigo de validacion
(oBrw:cAlias)->nombre := "Nombre de la Cuenta, si existe..."
 oBrw:Refresh()
Return .t.

//----------------------------//No permitir registro sin valores
Function lDebHabOK(nValor)
if nValor = 0
   MsgStop("Omision de Valores","Alto")
   return .f.
endif
Return .t.


//ESTAS FUNCIONES SON PARA COLORES PERSONALIZADOS DEL XBROWSE YA PUBLICADAS
//No son necesarias a menos que quieras emplear las classes modificadas.

//-------------------COLOR BUTTONBAR
Function ClrMsgBar()
Return {nRGB(255,228,150),nRGB(167,128,0)}

//-------------------COLOR HEARDERS DEL TXBROWSE
Function ClrHeader()
Return { nRGB(255,248,220), nRGB(157, 138,0) }   //VERDECITO

//-------------------COLOR FOOTER DEL TXBROWSE
Function ClrFooter()
Return { nRGB(255,248,220), nRGB(157, 138,0) }   //VERDECITO
 
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1021
Joined: Mon Feb 05, 2007 7:15 pm

Re: Aqui Un Ejemplo funcional para xbrowse

Postby Compuin » Thu Jan 13, 2011 6:10 pm

No funciona. Mi version de FWH es la 6.12. Que esta mal?
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Aqui Un Ejemplo funcional para xbrowse

Postby sysctrl2 » Thu Jan 13, 2011 6:53 pm

es un error de ejecucion? o de compilacion,
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1021
Joined: Mon Feb 05, 2007 7:15 pm

Re: Aqui Un Ejemplo funcional para xbrowse

Postby Compuin » Thu Jan 13, 2011 6:55 pm

Al momento de ejecutar. Te lo envie a tu correo como error browser.

Saludos,
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Aqui Un Ejemplo funcional para xbrowse

Postby sysctrl2 » Thu Jan 13, 2011 7:08 pm

compuIn. Pon el error aqui, o mandamelo al correo: sysctrl@prodigy.net.mx,
ya que en mi correo de hotmail, no he recibido nada.
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1021
Joined: Mon Feb 05, 2007 7:15 pm

Re: Aqui Un Ejemplo funcional para xbrowse

Postby Compuin » Thu Jan 13, 2011 7:11 pm

Te lo acabo de enviar. Agradezco tu ayuda ya que ningun browser me funciona
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Aqui Un Ejemplo funcional para xbrowse

Postby sysctrl2 » Fri Jan 14, 2011 7:53 pm

CompuIn.
veo que utilizas harbour en tu compilacion,
con xharbour no me da ningun error.
Podrias hacer la prueba con xhb.

saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1021
Joined: Mon Feb 05, 2007 7:15 pm

Re: Aqui Un Ejemplo funcional para xbrowse

Postby Bayron » Sat Jan 15, 2011 4:02 am

Tuve un error al compilar con FWH10.2, lo resolví con la ayuda de este link de nageswaragunupudi:

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=18365#p96337
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: TOTOVIOTTI and 34 guests