Ejemplo de xbrowse con edicion de registros,altas,bajas...
Ejemplo de xbrowse con edicion de registros,altas,bajas...
Hola buenas tardes que tal como estan, espero que bien.
Anduve buscando en el foro algun ejemplo tipo factura cargando registros desde dbf con arrays que segun lei en el foro es muy efectivo trabajar con arrays para adaptarlo a mi necesidad con su edicion de registros altas, bajas y modificacion de registros con 3 columnas sencillos y que al llegar a la tercera columna que automaticamente me pase al siguiente renglon de capturar nuevos registros y asi sucesivamente y se vaya grabando en cada registro, espero haberme explicado.
Alguien me puede dar alguna orientacion respecto a mi comentario? ya que siempre lo he hecho con 3 botones de agregar nuevo registro, otro boton de modificar y otro boton de eliminar registros, ahora lo que quiero y necesito es en forma de edicion del browse con su array de registgros y he usado con ordscope().
Espero su pronta ayuda al respecto.
Gracias y saludos.
Atte: Adriano C. C.
acc69@hotmail.com
Anduve buscando en el foro algun ejemplo tipo factura cargando registros desde dbf con arrays que segun lei en el foro es muy efectivo trabajar con arrays para adaptarlo a mi necesidad con su edicion de registros altas, bajas y modificacion de registros con 3 columnas sencillos y que al llegar a la tercera columna que automaticamente me pase al siguiente renglon de capturar nuevos registros y asi sucesivamente y se vaya grabando en cada registro, espero haberme explicado.
Alguien me puede dar alguna orientacion respecto a mi comentario? ya que siempre lo he hecho con 3 botones de agregar nuevo registro, otro boton de modificar y otro boton de eliminar registros, ahora lo que quiero y necesito es en forma de edicion del browse con su array de registgros y he usado con ordscope().
Espero su pronta ayuda al respecto.
Gracias y saludos.
Atte: Adriano C. C.
acc69@hotmail.com
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
ACC69 wrote:Hola buenas tardes que tal como estan, espero que bien.
Anduve buscando en el foro algun ejemplo tipo factura cargando registros desde dbf con arrays que segun lei en el foro es muy efectivo trabajar con arrays para adaptarlo a mi necesidad con su edicion de registros altas, bajas y modificacion de registros con 3 columnas sencillos y que al llegar a la tercera columna que automaticamente me pase al siguiente renglon de capturar nuevos registros y asi sucesivamente y se vaya grabando en cada registro, espero haberme explicado.
Alguien me puede dar alguna orientacion respecto a mi comentario? ya que siempre lo he hecho con 3 botones de agregar nuevo registro, otro boton de modificar y otro boton de eliminar registros, ahora lo que quiero y necesito es en forma de edicion del browse con su array de registgros y he usado con ordscope().
Espero su pronta ayuda al respecto.
Gracias y saludos.
Atte: Adriano C. C.
acc69@hotmail.com
Hola buenas tardes que tal como estan.
Un favor adjunto mi codigo de prueba.
En primer lugar por que no me deja editar el campo sin tener que darle enter al browse
segundo lugar no le entendi eso de crear como cargar arrays los registros.
Me pueden apoyar??.
Como ya tengo años de fuera de programacion, estoy intentando recordar como crear el browse
Gracias
Aqui el codigo:
Code: Select all
#include "FiveWin.ch"
#Include "xBrowse.ch"
REQUEST DbfCdx, DbfFpt, RPreview
EXTERNAL OrdKeyCount, OrdKeyGoTo, OrdKeyNo
Static oDlg, oGet, oBrw
Static nNumfol, cDescrip, cArchivo, dFecha, nImporte
Static cAlias
*--------------------------------------------------------------------------------
Function Main()
SET EXCLUSIVE OFF
SET 3DLOOK ON
SET DELETED ON
SET CONFIRM ON
SET EPOCH TO 1969
SET DATE BRITISH
SetHandleCount(64)
DbSetDriver("DBFCDX")
RddSetDefault("DBFCDX")
oGet := ARRAY(1)
*cAlias := "S01"
Select 1
USE MOV Alias "S01"
Select 2
USE MOVDET Alias "S02"
DEFINE DIALOG oDlg RESOURCE "FACT" TITLE "Demo edicion TxBrowse"
REDEFINE GET oGet[01] VAR nNumFol ID 101 OF oDlg PICT "99" // VALID V_NUMUSUA()
REDEFINE XBROWSE oBrw ID 102 OF oDlg ;
HEADERS "Descripción" , "Archivo","Fecha" ,"Importe" ;
COLUMNS "DESCRIPCIO","ARCHIVO","FECHA","IMPORTE" ;
SIZES 88,66,24,32 ;
PICTURES "@!" ,;
"@X" ,;
"@D" ,;
"999.99" ;
ALIAS S02->( ALIAS() ) // FOOTERS CELL AUTOCOLS
AEval( oBrw:aCols, { |o| o:nEditType := 1 ,; // Editables
o:nHeadStrAlign:= 2 } ) //texto encab/col centrado
WITH OBJECT oBrw
//ESTILOS DE LINEAS
:lHScroll := .F. // Horizontal
:lVScroll := .T. // Vertical
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
:lFastEdit := .T.
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN,"",) }
END
ACTIVATE DIALOG oDlg CENTER // ON INIT Inicia(oBrw)
RETURN NIL
Gracias y saludos
Atte: Adriano C. C.
acc69@hotmail.com
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
ACC69 wrote:ACC69 wrote:Hola buenas tardes que tal como estan, espero que bien.
Anduve buscando en el foro algun ejemplo tipo factura cargando registros desde dbf con arrays que segun lei en el foro es muy efectivo trabajar con arrays para adaptarlo a mi necesidad con su edicion de registros altas, bajas y modificacion de registros con 3 columnas sencillos y que al llegar a la tercera columna que automaticamente me pase al siguiente renglon de capturar nuevos registros y asi sucesivamente y se vaya grabando en cada registro, espero haberme explicado.
Alguien me puede dar alguna orientacion respecto a mi comentario? ya que siempre lo he hecho con 3 botones de agregar nuevo registro, otro boton de modificar y otro boton de eliminar registros, ahora lo que quiero y necesito es en forma de edicion del browse con su array de registgros y he usado con ordscope().
Espero su pronta ayuda al respecto.
Gracias y saludos.
Atte: Adriano C. C.
acc69@hotmail.com
Hola buenas tardes que tal como estan.
Un favor adjunto mi codigo de prueba.
En primer lugar por que no me deja editar el campo sin tener que darle enter al browse
segundo lugar no le entendi eso de crear como cargar arrays los registros.
Me pueden apoyar??.
Como ya tengo años de fuera de programacion, estoy intentando recordar como crear el browse.
Otro detalle que me falta para que cuando llegue a la ultima columna me pase al siguiente registro despues de darle enter, pero no veo el efecto ahi se queda sin pasar al siguiente registro de edicion de nuevos registros.
Porfas
Gracias
Aqui el codigo:
Code: Select all
#include "FiveWin.ch" #Include "xBrowse.ch" REQUEST DbfCdx, DbfFpt, RPreview EXTERNAL OrdKeyCount, OrdKeyGoTo, OrdKeyNo Static oDlg, oGet, oBrw Static nNumfol, cDescrip, cArchivo, dFecha, nImporte Static cAlias *-------------------------------------------------------------------------------- Function Main() SET EXCLUSIVE OFF SET 3DLOOK ON SET DELETED ON SET CONFIRM ON SET EPOCH TO 1969 SET DATE BRITISH SetHandleCount(64) DbSetDriver("DBFCDX") RddSetDefault("DBFCDX") oGet := ARRAY(1) *cAlias := "S01" Select 1 USE MOV Alias "S01" Select 2 USE MOVDET Alias "S02" DEFINE DIALOG oDlg RESOURCE "FACT" TITLE "Demo edicion TxBrowse" REDEFINE GET oGet[01] VAR nNumFol ID 101 OF oDlg PICT "99" // VALID V_NUMUSUA() REDEFINE XBROWSE oBrw ID 102 OF oDlg ; HEADERS "Descripción" , "Archivo","Fecha" ,"Importe" ; COLUMNS "DESCRIPCIO","ARCHIVO","FECHA","IMPORTE" ; SIZES 88,66,24,32 ; PICTURES "@!" ,; "@X" ,; "@D" ,; "999.99" ; ALIAS S02->( ALIAS() ) // FOOTERS CELL AUTOCOLS AEval( oBrw:aCols, { |o| o:nEditType := 1 ,; // Editables o:nHeadStrAlign:= 2 } ) //texto encab/col centrado WITH OBJECT oBrw //ESTILOS DE LINEAS :lHScroll := .F. // Horizontal :lVScroll := .T. // Vertical :nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse :nColDividerStyle := LINESTYLE_BLACK :lFastEdit := .T. :bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN,"",) } END ACTIVATE DIALOG oDlg CENTER // ON INIT Inicia(oBrw) RETURN NIL
Gracias y saludos
Atte: Adriano C. C.
acc69@hotmail.com
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
ACC69 wrote:ACC69 wrote:ACC69 wrote:Hola buenas tardes que tal como estan, espero que bien.
Anduve buscando en el foro algun ejemplo tipo factura cargando registros desde dbf con arrays que segun lei en el foro es muy efectivo trabajar con arrays para adaptarlo a mi necesidad con su edicion de registros altas, bajas y modificacion de registros con 3 columnas sencillos y que al llegar a la tercera columna que automaticamente me pase al siguiente renglon de capturar nuevos registros y asi sucesivamente y se vaya grabando en cada registro, espero haberme explicado.
Alguien me puede dar alguna orientacion respecto a mi comentario? ya que siempre lo he hecho con 3 botones de agregar nuevo registro, otro boton de modificar y otro boton de eliminar registros, ahora lo que quiero y necesito es en forma de edicion del browse con su array de registgros y he usado con ordscope().
Espero su pronta ayuda al respecto.
Gracias y saludos.
Atte: Adriano C. C.
acc69@hotmail.com
Hola buenas tardes que tal como estan.
Un favor adjunto mi codigo de prueba.
En primer lugar por que no me deja editar el campo sin tener que darle enter al browse
segundo lugar no le entendi eso de crear como cargar arrays los registros.
Me pueden apoyar??.
Como ya tengo años de fuera de programacion, estoy intentando recordar como crear el browse.
Otro detalle que me falta para que cuando llegue a la ultima columna me pase al siguiente registro despues de darle enter, pero no veo el efecto ahi se queda sin pasar al siguiente registro de edicion de nuevos registros.
Porfas
Gracias
Aqui el codigo:
Code: Select all
#include "FiveWin.ch" #Include "xBrowse.ch" REQUEST DbfCdx, DbfFpt, RPreview EXTERNAL OrdKeyCount, OrdKeyGoTo, OrdKeyNo Static oDlg, oGet, oBrw Static nNumfol, cDescrip, cArchivo, dFecha, nImporte Static cAlias *-------------------------------------------------------------------------------- Function Main() SET EXCLUSIVE OFF SET 3DLOOK ON SET DELETED ON SET CONFIRM ON SET EPOCH TO 1969 SET DATE BRITISH SetHandleCount(64) DbSetDriver("DBFCDX") RddSetDefault("DBFCDX") oGet := ARRAY(1) *cAlias := "S01" Select 1 USE MOV Alias "S01" Select 2 USE MOVDET Alias "S02" DEFINE DIALOG oDlg RESOURCE "FACT" TITLE "Demo edicion TxBrowse" REDEFINE GET oGet[01] VAR nNumFol ID 101 OF oDlg PICT "99" // VALID V_NUMUSUA() REDEFINE XBROWSE oBrw ID 102 OF oDlg ; HEADERS "Descripción" , "Archivo","Fecha" ,"Importe" ; COLUMNS "DESCRIPCIO","ARCHIVO","FECHA","IMPORTE" ; SIZES 88,66,24,32 ; PICTURES "@!" ,; "@X" ,; "@D" ,; "999.99" ; ALIAS S02->( ALIAS() ) // FOOTERS CELL AUTOCOLS AEval( oBrw:aCols, { |o| o:nEditType := 1 ,; // Editables o:nHeadStrAlign:= 2 } ) //texto encab/col centrado WITH OBJECT oBrw //ESTILOS DE LINEAS :lHScroll := .F. // Horizontal :lVScroll := .T. // Vertical :nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse :nColDividerStyle := LINESTYLE_BLACK :lFastEdit := .T. :bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN,"",) } END ACTIVATE DIALOG oDlg CENTER // ON INIT Inicia(oBrw) RETURN NIL
Gracias y saludos
Atte: Adriano C. C.
acc69@hotmail.com
Hola buenas tardes, pregunta, en donde puedo encontrar documentacion completa de las referencias de TXBrowse para saber cada evento para que sirve y que funcion hace, por ejemplo:
:bPastEof := { || AddRow( oBrw ) }
GoLeftMost()
oBrw:GoDown()
Etc etc.
Gracias.
Saludos
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
Adriano, este ejemplo que encontré por ahí, te puede ayudar. Es totalmente funcional.
/
Saludos.
/
Code: Select all
/------------------------------------------------------------------//
// EJEMPLO XBROWSE PARA FACTURA
//------------------------------------------------------------------//
#include "FiveWin.Ch"
#include "xbrowse.ch"
function Main()
local oDlg, oFont, oBrw, nPos, bPos, nIVA := 10.00, nMaxItems := 5
local aInvoice := { { 0, 0, 0 } }
local aBlank := { 0, 0, 0 }
local aTable := { {1, "Product Code 1 ", 10},;
{2, "Product Code 2 ", 20},;
{3, "Product Code 3 ", 30},;
{4, "Product Code 4 ", 40},;
{5, "Product Code 5 ", 50},;
{6, "Product Code 6 ", 60},;
{900, "Product Code 900 ",9000},;
{7, "Product Code 7 ", 70},;
{8, "Product Code 8 ", 80},;
{10, "Product Code 10 ", 100} }
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE DIALOG oDlg SIZE 800,450 PIXEL TITLE "INVOICE" FONT oFont //600,400
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
DATASOURCE aInvoice ;
COLUMNS 1, 1, 2, 3 ;
HEADERS "CODE", "ITEM", "QUANTITY", "PRICE" ;
PICTURES "9999", nil, "999,999.99", "9,999,999.99" ;
COLSIZES nil, 120 ;
CELL LINES FOOTERS NOBORDER FASTEDIT
bPos := {|| nPos := Ascan( aTable, {|a| a[1] == oBrw:Code:Value} ) } //Posicion del codigo en la tabla de productos
oBrw:Item:bEditValue := { || If( oBrw:Code:Value > 0, (Eval(bPos), if(nPos>0, aTable[ nPos, 2 ], "" )),"") }
oBrw:AMOUNT := { || oBrw:Quantity:Value * oBrw:Price:Value }
oBrw:Amount:cEditPicture := "999,999,999.99"
oBrw:IVA := { || ( oBrw:AMOUNT:Value * nIVA ) / 100 }
oBrw:Iva:cEditPicture := "999,999,999.99"
oBrw:TOTAL := { || oBrw:AMOUNT:Value + oBrw:IVA:Value }
oBrw:Total:cEditPicture := "999,999,999.99"
oBrw:nEditTypes := { EDIT_GET, EDIT_NONE, EDIT_GET, EDIT_GET, EDIT_NONE, EDIT_NONE, EDIT_NONE }
WITH OBJECT oBrw:Code
:bEditValid := { |oGet| oGet:VarGet() > 0 }
:bOnChange := { |oCol| Eval(bPos), if(nPos>0, oBrw:aRow[ 3 ] := aTable[ nPos, 3 ], 0) }
:bFooter := { || Ltrim( Str( oBrw:KeyNo() ) ) + " / " + LTrim( Str( oBrw:KeyCount() ) ) }
END
WITH OBJECT oBrw:Quantity
:bEditWhen := { || ! Empty( oBrw:Code:Value ) }
:bOnChange := { || oBrw:MakeTotals(), oBrw:RefreshFooters() } //oBrw:MakeTotals( oBrw:oCol( "Amount" ) ), oBrw:RefreshFooters() }
:bEditValid := { |oGet| oGet:VarGet() > 0 }
:nFooterType := AGGR_SUM
END
WITH OBJECT oBrw:Price // oBrw:aRow[ 3 ]
:bEditWhen := { || ! Empty( oBrw:Code:Value ) .and. ! Empty( oBrw:Quantity:Value ) }
:bOnChange := { || oBrw:MakeTotals(), oBrw:RefreshFooters() } //oBrw:MakeTotals( oBrw:oCol( "Amount" ) ), oBrw:RefreshFooters() }
:bEditValid := { |oGet| oGet:VarGet() > 0 }
END
oBrw:Amount:nFooterType := AGGR_SUM
oBrw:Iva:nFooterType := AGGR_SUM
oBrw:Total:nFooterType := AGGR_SUM
WITH OBJECT oBrw
:nStretchCol := STRETCHCOL_WIDEST
:bPastEof := { || If( len(oBrw:aArrayData) = nMaxItems, (MsgStop("Agotado maximo de lineas: "+Str(nMaxItems,3),"Alto"), oBrw:GoUp()) ,) ,;
If( Empty( oBrw:Amount:Value ), nil, ;
( AAdd( oBrw:aArrayData, AClone( aBlank ) ), ;
oBrw:GoDown(), oBrw:GoLeftMost(), oBrw:Refresh() ) ) }
:bChange := { || If( oBrw:nArrayAt < Len( oBrw:aArrayData ) .and. ;
ATail( oBrw:aArrayData )[ 2 ] == 0, ;
( ASize( oBrw:aArrayData, Len( oBrw:aArrayData ) - 1 ), ;
oBrw:Refresh() ), ;
nil ) , oBrw:RefreshFooters() }
:bKeyDown := {|nKey| Teclas(nKey,oBrw,aInvoice) }
:nHeadStrAligns := AL_CENTER
:CreateFromCode()
END
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oBrw:SetFocus(), .f. )
RELEASE FONT oFont
if ATail( aInvoice )[ 2 ] == 0
ASize( aInvoice, Len( aInvoice ) - 1 )
endif
xbrowser aInvoice title "Edited Invoice" setup ( oBrw:cHeaders := { "Code", "Qty", "Price" } )
return nil
//------------------------------------------------------------------//
Function Teclas(nKey,oBrw,aInvoice)
if nKey == VK_DELETE
if MsgNoYes("Esta seguro de borrar este registro?")
ADel(aInvoice, oBrw:nArrayAt, .t.)
oBrw:MakeTotals()
oBrw:Refresh()
endif
endif
Return nil
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
ACC69 wrote: Hola buenas tardes, pregunta, en donde puedo encontrar documentacion completa de las referencias de TXBrowse para saber cada evento para que sirve y que funcion hace, por ejemplo:
:bPastEof := { || AddRow( oBrw ) }
GoLeftMost()
oBrw:GoDown()
Etc etc.
Gracias.
Saludos
:bPastEof := { || AddRow( oBrw ) }
CodeBlock a ejecutar cuando se trata de pasar el fin del fichero. En este ejemplo se agrega una fila al browse.
GoLeftMost()
Ir a la primer columna del browse.
oBrw:GoDown()
Baja un registro en el browse. Es como el SKIP en las dbf.
Información la puedes encontrar en le WIKI.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Ejemplo de xbrowse con edicion de registros,altas,bajas...
FranciscoA wrote:http://wiki.fivetechsoft.com/doku.php
Hola buenos dias a todos.
Gracias Ing. Francisco Alegria, por el ejemplo y el link, y creo que mejor voy por la carga de registros usando arrays, para que a futuro pueda yo insertar registro en caso que se haya olvidado capturar en orden.
Saludos de nuevo.
Atte: Adriano C. C.