Es posible parar una funcion como parametro a un browse
Code: Select all
FUNCTION MODIFICAR()
...
...
RETURN NIL
Code: Select all
FUCTION BROWSE ()
oBrw:blDblClick := ???????
RETURN NIL
Gracias de antemano
Code: Select all
FUNCTION MODIFICAR()
...
...
RETURN NIL
Code: Select all
FUCTION BROWSE ()
oBrw:blDblClick := ???????
RETURN NIL
Code: Select all
Function Browse()
local oBrw
...
...
oBrw:bLDblClick := {|| Modificar( oBrw ) }
Function Modificar(oBrw)
//----------------------------------------------------------------------------//
Function Modificar( oBrw )
local oDlg, cAlias := oBrw:cAlias
local nCodigo,cNombre
local oCodigo,oNombre
local lSave := .f.
nCodigo := (cAlias)->codigo
cNombre := (cAlias)->nombre
DEFINE DIALOG oDlg RESOURCE "MODIFICAR"
REDEFINE GET oCodigo VAR nCodigo ID 101 OF oDlg PICTURE "9999999999999999"
REDEFINE GET oNombre VAR cNombre ID 103 OF oDlg PICTURE "@!"
REDEFINE BTNBMP ID 312 OF oDlg ACTION ( lSave := .t. , oDlg:End() ) RESOURCE "ACEPTAR" LEFT NOBORDER
REDEFINE BTNBMP ID 313 OF oDlg ACTION oDlg:End() RESOURCE "CANCELAR" LEFT NOBORDER
ACTIVATE DIALOG oDLG CENTERED
if lSave
if (cAlias)->(Rlock())
(cAlias)->Codigo := nCodigo
(cAlias)->Nombre := cNombre
dbcommit()
(cAlias)->(dbUnlock())
endif
endif
oBrw:Refresh()
oBrw:SetFocus()
return nil
Puede ser que este ejemplo te sirva de guia:pasar diferentes funciones Modificar de acuerdo a la gestion (modificar articulos, modificar clientes, modificar proveedores, etc)
Code: Select all
#include "fivewin.ch"
REQUEST DBFCDX
//---------------------------------------------------------//
function Main() //xBrwEdit3()
local cAlias, aTablas := {"States","Customer"}
local bSelect := { |oBrw| cAlias := oBrw:aArrayData[oBrw:nArrayAt] }
SET DELETED ON
XBROWSE(aTablas,,,,,bSelect)
DbUseArea(.t.,,cAlias,cAlias,.t.)
XBrwEdiTbl(cAlias)
(cAlias)->(DbCloseArea())
Return nil
//---------------------------------------------------------//
function XBrwEdiTbl(cAlias)
local oDlg, oBar, oBrw, oFont
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE DIALOG oDlg SIZE 400,500 PIXEL TRUEPIXEL FONT oFont TITLE "MODIFICANDO " + cAlias
DEFINE BUTTONBAR oBar OF oDlg SIZE 80,32 2007
@ 52,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
DATASOURCE cAlias AUTOCOLS ;
CELL FOOTERS NOBORDER
WITH OBJECT oBrw
:nMarqueeStyle := MARQSTYLE_HIGHLROW
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bLDblClick := {|| oBrw:EditSource() }
:CreateFromCode()
END
DEFINE BUTTON OF oBar PROMPT "Modificar" CENTER ACTION oBrw:EditSource()
DEFINE BUTTON OF oBar PROMPT "Salir" CENTER ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil
Code: Select all
@ r, c BUTTON oBtn ...... ACTION Eval( oBrw:bLDblClick )
Ok,cnavarro wrote:A ver si te he entendido
Code: Select all
@ r, c BUTTON oBtn ...... ACTION Eval( oBrw:bLDblClick )
Compuin:Compuin wrote:
Ok,
Si tengo un browse y le doy click a un registro y luego voy al boton MOdificar, que este me traiga el dialogo con todos _ del registro donde estoy posicionado
Creo qie me explique mejor ahora
Code: Select all
:bLDblClick := {|| oBrw:EditSource() }
y
DEFINE BUTTON OF oBar PROMPT "Modificar" CENTER ACTION oBrw:EditSource()
Code: Select all
:bLDblClick := {|| TuFuncDeModificar(oBrw) }
y
DEFINE BUTTON OF oBar PROMPT "Modificar" CENTER ACTION Eval(oBrw:bLDblClick) // ó TuFuncDeModificar(oBrw)