De nuevo preguntando...
Hace poco que empecé a incursionar con el XBROWSE y evidentemente
no me llevo muy bién con él, pero me agrada mucho...
La pregunta es sencilla:
Tengo un XBROWSE con la base de datos rubros.dbf.
La idea es seleccionar los registros que quiero listar con la barra
espaciadora y que me marque la primer columna con una "X".
pero no se refresca cuando lo hago.
Pero si se graba en la base de datos
Les paso el código y una imágen.
Se que para ustedes será un tema sencillo, del cuál les voy
a estar muy agradecidos me echen una mano.
- Code: Select all Expand view
- * RUBROS.PRG - Selección rubros. Compilar con BUILDX.BAT de FWH1709
* UV 31/05/2018
*
* Seleccionar rubros.
*
#include "vta0000.ch"
#include "winapi.ch"
#include "report.ch"
#include "xbrowse.ch"
#define VK_ENTER 13
EXTERNAL ORDKEYCOUNT, ORDKEYNO
REQUEST DBFCDX
EXTERN DBFCDX
*--------------------------------------
FUNCTION Main()
*--------------------------------------
local oDlg
local oBrwr
local lSave:=.f.
RDDSETDEFAULT("DBFCDX")
SET DATE FRENCH
SET CENTURY ON
SET EPOCH TO 1970
SET DECIMALS TO 2
SET CONFI ON
SET DELE ON
SET _3DLOOK ON
SetHandleCount(80)
REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN
HB_LangSelect("ES")
sele 2
use rubros
DEFINE DIALOG oDlg RESOURCE "RUBSEL"
REDEFINE XBROWSE oBrwr ALIAS ALIAS(2) FIELDS ;
str(2->tilde1),;
str(2->rubro),;
2->Nombre ;
HEADERS;
"X",;
"Rub.",;
"Nombre" ;
ID 182 OF oDlg ;
SIZES 18,28,150
oBrwr:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrwr:nColDividerStyle := LINESTYLE_BLACK
oBrwr:nRowDividerStyle := LINESTYLE_BLACK
oBrwr:lColDividerComplete := .t.
oBrwr:nHeaderLines := 1
oBrwr:nDataLines := 1
oBrwr:lRecordSelector := .t.
oBrwr:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } }
oBrwr:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } }
oBrwr:SetFocus()
oBrwr:Refresh()
oBrwr:lVScroll := .t.
oBrwr:lHScroll := .t.
oBrwr:bKeyDown:={|nKey| iif(nKey=32,TIL1200F(oBrwr),oBrwr:Refresh())}
REDEFINE BUTTON ID 115 OF oDlg ; // SI
ACTION (lSave:=.t.,sysrefresh(),oDlg:End())
REDEFINE BUTTON ID 114 OF oDlg ; // NO
ACTION (lSave:=.f.,sysrefresh(),CierraDbfs(),oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
if lSave
// Rutina de impresión...
endif
clos data
sysrefresh()
FreeResources()
return nil
*--------------------------------------
FUNCTION TIL1200F(oBrwr) // Para seleccionar registros con la barra espaciadora.
*--------------------------------------
// Marco el tilde1 en RUBROS.DBF con barra espaciadora
// el rubro que se va a listar.
sele 2
if 2->tilde1=" "
sele 2
repl tilde1 with "X"
else
sele 2
repl tilde1 with " "
endif
oBrwr:setfocus()
oBrwr:Refresh()
sysrefresh()
return nil
*-------------------------
FUNCTION CierraDbfs()
*-------------------------
set relation to
clos data
return nil