Ayuda en FOLDEREX
Posted: Mon Oct 25, 2021 10:01 am
Buenos días a todos
Estoy retomando un ejemplo que hice con FOLDEREX en el que uso dos bases de relacionados: PROVEEDORES Y PRODUCTOS.. Si bien está funcionando perfectamente el ejemplo, la cuestión es que me gustaría que la función de productos estuviera en otro prg y no en el mismo y sin que rompa la relación, ya que me gustaría que el desarrollo de cada pestaña estaviera en prg diferentes y sin que se rompa la relación de las bases.
En el ejemplo siguiente pretendo que al pulsar la pestaña "Proveedores" se activara esa función pero desarrollado en otro prg.
¿En este caso concreto cómo se llamaría a la función, por ejemplo proveedores()?
Gracias
Estoy retomando un ejemplo que hice con FOLDEREX en el que uso dos bases de relacionados: PROVEEDORES Y PRODUCTOS.. Si bien está funcionando perfectamente el ejemplo, la cuestión es que me gustaría que la función de productos estuviera en otro prg y no en el mismo y sin que rompa la relación, ya que me gustaría que el desarrollo de cada pestaña estaviera en prg diferentes y sin que se rompa la relación de las bases.
En el ejemplo siguiente pretendo que al pulsar la pestaña "Proveedores" se activara esa función pero desarrollado en otro prg.
- Code: Select all Expand view
- #include 'fivewin.ch'
#include 'ord.ch'
#include 'xbrowse.ch'
#include 'hbcompat.ch'
REQUEST DBFCDX
FUNCTION TELEM()
LOCAL oDlg, obrw, nWild:=2, cList, aHdrs, aFlds
SET DATE ITALIAN
SET CENTURY ON
RDDSETDEFAULT( "DBFCDX" )
USE PROVEEDOR NEW SHARED ALIAS "PROVE"
INDEX ON PROVE->CODIGO_PRO TO CODPROVE
SET INDEX TO CODPROVE
USE PRODUCTOS NEW SHARED ALIAS "PRODU"
INDEX ON PRODU->CODIGO_PRO TO CODPRODU
SET INDEX TO CODPRODU
SELE PROVE
SET RELATION TO PROVE->CODIGO_PRO INTO PRODU
cList := "NOMBRE, PROVINCIA"
aFlds := HB_ATokens( cList, ',' )
DEFINE DIALOG oDlg FROM 3, 3 TO 33, 100 TITLE "Búsqueda incremental"
@ 30,10 XBROWSE oBrw SIZE 360,150 PIXEL OF oDlg ;
COLUMNS aFlds HEADERS "Nombre", "Provincia" ;
ALIAS "PROVE" COLSIZES 200, 200 AUTOSORT CELL LINES NOBORDER
oBrw:lHScroll:= .F.
WITH OBJECT oBrw
:lIncrFilter := .t.
:lSeekWild := ( nWild == 2 )
:cFilterFld := "Nombre"
:nStretchCol := STRETCHCOL_WIDEST
END
@ 10, 10 COMBOBOX oBrw:cFilterFld ;
ITEMS { "Nombre", "Provincia" };
ON CHANGE ( oBrw:Seek( "" ), oBrw:SetFocus() ) ;
SIZE 50,400 PIXEL OF oDlg
@ 10, 70 COMBOBOX nWild ITEMS { "Empieza con", "Contiene" };
ON CHANGE ( oBrw:lSeekWild := ( nWild == 2 ), ;
oBrw:Seek( If( oBrw:lSeekWild, oBrw:cSeek, "" ) ), ;
oBrw:SetFocus() );
SIZE 70,400 PIXEL OF oDlg
@ 11,150 SAY oBrw:oSeek PROMPT oBrw:cSeek SIZE 200,10 PIXEL OF oDlg COLOR CLR_BLACK,CLR_YELLOW PICTURE '@!'
oBrw:CreateFromCode()
@ 11, 10 BUTTON "Nuevo " OF oDlg ACTION oBrw:EditSource( .T. )
@ 11, 20 BUTTON "Editar " OF oDlg ACTION EditPro( oBrw )
@ 11, 30 BUTTON "Eliminar" OF oDlg ACTION oBrw:Delete()
@ 11, 40 BUTTON "&Imprimir" OF oDlg ;
ACTION oBrw:Report( "Listado de SAT", .T. ) ; // .t. --> wants preview
SIZE 40, 12
@ 11, 50 BUTTON "&Terminar" OF oDlg ACTION oDlg:End() SIZE 40, 12
ACTIVATE DIALOG oDlg CENTERED ON INIT ( oBrw:SetFocus(), .f. )
RETURN nil
//***************** EDICION CON FOLDER---------------
FUNCTION editPro( oBrw, oDlg )
LOCAL oDlg1, oFld, oLbx, Lsalir:=.f.
LOCAL nProve, oProve, cNombre, oNombre, cProvincia, oProvincia
NProve := PROVE->CODIGO_PRO
cNombre := PROVE->NOMBRE
cProvincia := PROVE->PROVINCIA
DEFINE DIALOG oDlg1 FROM 3, 3 TO 20, 70 TITLE "Mantenimiento"
@ 10, 5 FOLDEREX oFld PIXEL PROMPT "&Proveedor", "&Datos mercancías"[/color] SIZE 250, 100
@ 20, 5 SAY "Código:" OF oFld:aDialogs[ 1 ] SIZE 60, 10 PIXEL
@ 20, 100 SAY oProve var nProve OF oFld:aDialogs[ 1 ] SIZE 60, 10 PIXEL
@ 30, 5 SAY "Razón social" OF oFld:aDialogs[ 1 ] SIZE 60, 10 PIXEL
@ 30, 100 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] SIZE 100, 10 PIXEL
@ 40, 5 SAY "Provincia" OF oFld:aDialogs[ 1 ] SIZE 60, 10 PIXEL
@ 40, 100 GET oProvincia VAR cProvincia OF oFld:aDialogs[ 1 ] SIZE 100, 10 PIXEL
@ 60, 50 BUTTON "Grabar" OF oFld:aDialogs[1] SIZE 40, 10 PIXEL action oDlg1:end()
@ 60, 150 BUTTON "Salir" OF oFld:aDialogs[1] SIZE 40, 10 PIXEL ACTION (lSalir:=.t., oDlg1:End())
[color=#FF0000]
[color=#FF8000]//------------- DATOS DE MERCANCÍAS. ESTO QUIERO PONERLO EN OTRO PRG SIN QUE SE ROMPA LA RELACIÓN ----------
SELE produ
produ->( ordscope( 0, nProve ) )
produ->( ordscope( 1, nProve ) )
produ->( DBSKIP( 0 ) )
IF produ->( ordKeyCount() ) == 0
MsgInfo( "No se encontraron productos" )
ENDIF
@ 1, 1 XBROWSE oLbx SIZE 250, 65 PIXEL;
COLUMNS "CODIGO_PRO", "PRODUCTO", "PRECIO" OF oFld:aDialogs[ 2 ] ALIAS "PRODU";
HEADERS "Código proveedor", "Produto", "Precio";
COLSIZES 70, 300, 140;
JUSTIFY AL_RIGHT, AL_LEFT, AL_RIGHT;
PICTURES , , "@E 9,999,999.99" LINES NOBORDER FASTEDIT
oLbx:CreateFromCode()
ACTIVATE DIALOG oDlg1 CENTERED valid lSalir
if lsalir
SELE PROVE
oBrw:Seek( "" )
oBrw:refresh()
PROVE->(DBGOTOP())
oBrw:SetFocus()
endif[/color]
RETURN nil
¿En este caso concreto cómo se llamaría a la función, por ejemplo proveedores()?
Gracias