Actualizar Header Listbox
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Actualizar Header Listbox
Estoy usando un listbox cuyos Header (31) defino en una matriz. Una de las opciones, es cambiar los Header, por lo que lo envió a la función que crea la matriz y me devuelve correctamente los valores, pero al actualizar el listbox (oDlg:UPDATE(), oLbx:Refresh()) no me cambia nada.
¿Alguna idea?
¿Alguna idea?
Un saludo
Manuel
Manuel
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Hola Manuel
Supongo que _ los deseas usar para mostrar sus valores en el browse verdad ?
REDEFINE LISTBOX lbSrcSis ;
FIELDS CATSISS->SNM ;
HEAD "NOMBRE" ;
ID 103 ;
ALIAS "CATSISS" ;
FONT oBrwFnt ;
OF oFldSrc:aDialogs[2]
lbSrcSis:nLineStyle := 2
lbSrcSis:lDrawFocusRect := .F.
lbSrcSis:nClrLine := CLR_WHITE
lbSrcSis:nClrPane := { || IIF( CATSISS->(OrdKeyNo() )%2=0, CLR_A, CLR_B ) }
Saludos
Supongo que _ los deseas usar para mostrar sus valores en el browse verdad ?
REDEFINE LISTBOX lbSrcSis ;
FIELDS CATSISS->SNM ;
HEAD "NOMBRE" ;
ID 103 ;
ALIAS "CATSISS" ;
FONT oBrwFnt ;
OF oFldSrc:aDialogs[2]
lbSrcSis:nLineStyle := 2
lbSrcSis:lDrawFocusRect := .F.
lbSrcSis:nClrLine := CLR_WHITE
lbSrcSis:nClrPane := { || IIF( CATSISS->(OrdKeyNo() )%2=0, CLR_A, CLR_B ) }
Saludos
FWH 10.6 + xHarbour + Borland 582
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Raymundo,
El tema es un poco mas complicado. Se trata de actualizar (refrescar) un browse compuestos por bitmap, al cambiar la información. Todo funciona bien, para al pulsar el botón CALENDA (te lo señalo en rojo), el programa actualiza bien la base de datos (treservas), pero despues no refleja ese cambio en el browse, a pesar del refresh y del Updated. Gracias a tu idea, con oLbx:aHeaders:=aDia, conseguí actualizar las cabeceras, pero no logro actualizar _. Por eso te decia si puedo utilizar otra matriz. Este es el código:
FUNCTION RESERVAS ()
local oLbx, oDlg, oFont, oBmp, oBtn := ARRAY(10), ;
aDia := ARRAY (33), n, ofecha1, oSay1, lOk := .f.,;
dFecha1 := DATE()
local aBit := { LOADBitmap( GetResources(), "bverde" ), ;
LoadBitmap( GetResources(), "brojo" ), ;
LoadBitmap( GetResources(), "bCeles" ), ;
LoadBitmap( GetResources(), "bamari" ) }
FIELD CON_INM
aDia := C_RESERDIA( aDia, dFecha1 ) // calcula cabeceras listbox
DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -14 BOLD
ABRE ("RESERVA", "RESERVA", "RESERVA" )
ORDSETFOCUS("CON_INM")
ABRE ( "inqui", "inqui", "inqui" )
ORDSETFOCUS("CON_INM")
ABRE ("fincas", "fincas", "fincas" )
SET RELA TO CON_INM INTO inqui
// calcula la informacion del listbox
MSGRUN (" ", "Cuadro Reservas.", ;
{ | oDlg | C_RESERVA ( oDlg, dFecha1, .t. ) } )
SELE tReserva
DBGOTOP()
DEFINE DIALOG oDlg ;
TITLE "Cuadro de Reservas" ;
FROM 5, 2 TO 32, 99
@ 0.1, 11.0 SAY oSay1 VAR dFecha1 SIZE 80, 8 UPDATE
@ 0.1, 20.0 SAY "Ocupado" SIZE 24,8
@ 0.25,18.5 BITMAP oBmp OF oDlg RESOURCE "brojo" NOBORDER ;
SIZE 8,8
@ 0.1, 31.0 SAY "Libre" SIZE 15,8
@ 0.25, 25.5 BITMAP oBmp OF oDlg RESOURCE "bverde" NOBORDER ;
SIZE 8,8
@ 0.1, 40.0 SAY "Entrada" SIZE 20,8
@ 0.25, 33.0 BITMAP oBmp OF oDlg RESOURCE "bamari" NOBORDER ;
SIZE 8,8
@ 0.1, 50.0 SAY "Salida" SIZE 15,8
@ 0.25, 40.0 BITMAP oBmp OF oDlg RESOURCE "bCeles" NOBORDER ;
SIZE 8,8
@ 1,1 LISTBOX oLbx ;
FIELDS tReserva->FINCA , ;
Num2Str(tReserva->DORM,1,0), ;
aBit[Max(1,treserva->D01+1)], ;
aBit[Max(1,treserva->D02+1)], ;
aBit[Max(1,treserva->D03+1)], ;
aBit[Max(1,treserva->D04+1)], ;
aBit[Max(1,treserva->D05+1)], ;
aBit[Max(1,treserva->D06+1)], ;
aBit[Max(1,treserva->D07+1)], ;
aBit[Max(1,treserva->D08+1)], ;
aBit[Max(1,treserva->D09+1)], ;
aBit[Max(1,treserva->D10+1)], ;
aBit[Max(1,treserva->D11+1)], ;
aBit[Max(1,treserva->D12+1)], ;
aBit[Max(1,treserva->D13+1)], ;
aBit[Max(1,treserva->D14+1)], ;
aBit[Max(1,treserva->D15+1)], ;
aBit[Max(1,treserva->D16+1)], ;
aBit[Max(1,treserva->D17+1)], ;
aBit[Max(1,treserva->D18+1)], ;
aBit[Max(1,treserva->D19+1)], ;
aBit[Max(1,treserva->D20+1)], ;
aBit[Max(1,treserva->D21+1)], ;
aBit[Max(1,treserva->D22+1)], ;
aBit[Max(1,treserva->D23+1)], ;
aBit[Max(1,treserva->D24+1)], ;
aBit[Max(1,treserva->D25+1)], ;
aBit[Max(1,treserva->D26+1)], ;
aBit[Max(1,treserva->D27+1)], ;
aBit[Max(1,treserva->D28+1)], ;
aBit[Max(1,treserva->D29+1)], ;
aBit[Max(1,treserva->D30+1)], ;
aBit[Max(1,treserva->D31+1)] ;
FIELDSIZES 95, 15, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, ;
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, ;
20, 20, 20, 20, 20, 20 ;
SIZE 366,138 FONT oFont OF oDlg UPDATE;
ON DBLCLICK ( FINCAS( "Reserva", tReserva->CON_INM) , ;
C_RESERVA (oDlg, dFecha1, .f.), oDlg:REFRESH() )
oLbx:nClrPane:={|| IIF((oLbx:cAlias)->(OrdKeyNo())% 2==0,CELE,GRIS)}
oLbx:nClrForeHead := AZUL // gracias Raymundo
oLbx:bKeyDown:={|nK| IIF ( nK != VK_RETURN, , (FINCAS( "Reserva", tReserva->CON_INM) , oDlg:End()))}
oLbx:aHeaders:=aDia
**
@ 165,198 BUTTONBMP oBtn[4] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION ( dFecha1 := CALENDAR(dFecha1), ;
aDia := C_RESERDIA( aDia, dFecha1 ), ;
C_RESERVA (oDlg, dFecha1, .f., .t. ), ;
oLbx:REFRESH(), oDlg:UPDATED() ) ;
MESSAGE " Ver calendario." ;
PROMPT SPACE(3) + "&Calenda" ;
BITMAP "calendar1" TEXTRIGHT
@ 165,258 BUTTONBMP oBtn[6] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION Fayuda( cChmFich, "reservas.htm#cuadro") ;
MESSAGE " Ayuda" ;
PROMPT SPACE(5) + "a&Yuda" ;
BITMAP "Ayuda" TEXTRIGHT
@ 165,318 BUTTONBMP oBtn[7] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION (oDlg:End()) ;
MESSAGE " Salir de esta ventana" ;
PROMPT SPACE(4) + "&Salir" ;
BITMAP "salir1" TEXTRIGHT
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oDlg:lHelpIcon:=.f., ;
PonBarra(oDlg, " Cuadro de reservas.",.f.) )
CLOSE tReserva
CLOSE fincas
CLOSE reserva
RETURN nil
///////////////////////////////////////////////
/// calculo de la cabecera listbox
///////////////////////////////////////////////
STATIC FUNCTION C_RESERDIA( aDia, dFecha )
local n := 3 // , aDia := ARRAY (31)
aDia[1] := "Fincas"
aDia[2] := "D"
WHILE n <= 33
aDia[n] := Str( DAY (dFecha), 2, 0 )
n++
dFecha++
ENDD
RETURN aDia
///////////////////////////////////////////////
/// calculo del Cuadro de Reservas (planin)
///////////////////////////////////////////////
STATIC FUNCTION C_RESERVA( oDlg, dFecha1, lOpcion, lCalendar)
local N, dF, dFecha2 := (dFecha1 + 31), aDbf := {}, nRec1 := 0
Default lCalendar := .f.
if lOpcion // inicio o cambio de dia
//
// primero, vamos a preparar un fichero temporal
//
AADD(aDbf,{"CON_INM" ,"N", 6, 0}) // control inmueble
AADD(aDbf,{"FINCA" ,"C", 10, 0}) // direccion del inmueble
AADD(aDbf,{"DORM" ,"N", 1, 0}) // numero dormitorios
AADD(aDbf,{"D01" ,"N", 1, 0})
AADD(aDbf,{"D02" ,"N", 1, 0})
AADD(aDbf,{"D03" ,"N", 1, 0})
AADD(aDbf,{"D04" ,"N", 1, 0})
AADD(aDbf,{"D05" ,"N", 1, 0})
AADD(aDbf,{"D06" ,"N", 1, 0})
AADD(aDbf,{"D07" ,"N", 1, 0})
AADD(aDbf,{"D08" ,"N", 1, 0})
AADD(aDbf,{"D09" ,"N", 1, 0})
AADD(aDbf,{"D10" ,"N", 1, 0})
AADD(aDbf,{"D11" ,"N", 1, 0})
AADD(aDbf,{"D12" ,"N", 1, 0})
AADD(aDbf,{"D13" ,"N", 1, 0})
AADD(aDbf,{"D14" ,"N", 1, 0})
AADD(aDbf,{"D15" ,"N", 1, 0})
AADD(aDbf,{"D16" ,"N", 1, 0})
AADD(aDbf,{"D17" ,"N", 1, 0})
AADD(aDbf,{"D18" ,"N", 1, 0})
AADD(aDbf,{"D19" ,"N", 1, 0})
AADD(aDbf,{"D20" ,"N", 1, 0})
AADD(aDbf,{"D21" ,"N", 1, 0})
AADD(aDbf,{"D22" ,"N", 1, 0})
AADD(aDbf,{"D23" ,"N", 1, 0})
AADD(aDbf,{"D24" ,"N", 1, 0})
AADD(aDbf,{"D25" ,"N", 1, 0})
AADD(aDbf,{"D26" ,"N", 1, 0})
AADD(aDbf,{"D27" ,"N", 1, 0})
AADD(aDbf,{"D28" ,"N", 1, 0})
AADD(aDbf,{"D29" ,"N", 1, 0})
AADD(aDbf,{"D30" ,"N", 1, 0})
AADD(aDbf,{"D31" ,"N", 1, 0})
DBCREATE( cDirEsta + "TRESERVA.DBF", aDbf, "DBFCDX")
USE (cDirEsta + "TRESERVA") NEW
ENDI
IF lCalendar
SELE tReserva
DBGOTOP()
ENDI
SELE fincas // indice por nombres
while !eof()
nRec1++
// refresca msgrun
oDlg:cMsg := "Alta recibo "+ LTrim( Str( nRec1 ) )
oDlg:Refresh()
SysRefresh()
SELE tReserva
IF lOpcion // alta
ALTA_R(5)
tReserva->CON_INM := fincas->CON_INM
ELSE
BLOQ_R(5)
ENDI
tReserva->DORM := fincas->DORMITORIO
tReserva->FINCA := fincas->NOMBRE
// fincas ocupadas
IF fincas->INQUILIN > 0
dF := dFecha1
N := 4
WHILE dF <= dFecha2
IF dF < inqui->VTO // hasta el dia antes del vto
IF dF = inqui->FINI
tReserva->(FIELDPUT(n, 3))
ELSEIF dF > inqui->FINI
tReserva->(FIELDPUT(n, 1))
ENDI
ELSEIF dF = inqui->VTO
tReserva->(FIELDPUT(n, 2))
ENDI
n++
dF++
IF dF > inqui->VTO
EXIT
ENDI
ENDD
ENDI
// anota las reservas
SELE reserva
ORDSETFOCUS("CON_INM") // control inmuebles
DBSEEK(fincas->CON_INM)
IF FOUND()
WHILE reserva->CON_INM = fincas->CON_INM
IF reserva->FENTRA <= dFecha2 .and. reserva->FSALE >= dFecha1
dF := dFecha1
N := 4
WHILE dF <= dFecha2
IF dF >= reserva->FENTRA .and. dF < reserva->FSALE
IF dF = reserva->FENTRA
tReserva->(FIELDPUT(n, 3))
ELSE
tReserva->(FIELDPUT(n, 1))
ENDI
ELSEIF dF = reserva->FSALE
tReserva->(FIELDPUT(n, 2))
ENDI
n++
dF++
IF dF > reserva->FSALE
EXIT
ENDI
ENDD
ENDI
SELE reserva
DBSKIP()
ENDD
ENDI
SELE tReserva
UNLOCK
IF lOpcion .or. lCalendar
SELE fincas
DBSKIP()
ELSE
EXIT
ENDI
ENDD
RETURN nil
El tema es un poco mas complicado. Se trata de actualizar (refrescar) un browse compuestos por bitmap, al cambiar la información. Todo funciona bien, para al pulsar el botón CALENDA (te lo señalo en rojo), el programa actualiza bien la base de datos (treservas), pero despues no refleja ese cambio en el browse, a pesar del refresh y del Updated. Gracias a tu idea, con oLbx:aHeaders:=aDia, conseguí actualizar las cabeceras, pero no logro actualizar _. Por eso te decia si puedo utilizar otra matriz. Este es el código:
FUNCTION RESERVAS ()
local oLbx, oDlg, oFont, oBmp, oBtn := ARRAY(10), ;
aDia := ARRAY (33), n, ofecha1, oSay1, lOk := .f.,;
dFecha1 := DATE()
local aBit := { LOADBitmap( GetResources(), "bverde" ), ;
LoadBitmap( GetResources(), "brojo" ), ;
LoadBitmap( GetResources(), "bCeles" ), ;
LoadBitmap( GetResources(), "bamari" ) }
FIELD CON_INM
aDia := C_RESERDIA( aDia, dFecha1 ) // calcula cabeceras listbox
DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -14 BOLD
ABRE ("RESERVA", "RESERVA", "RESERVA" )
ORDSETFOCUS("CON_INM")
ABRE ( "inqui", "inqui", "inqui" )
ORDSETFOCUS("CON_INM")
ABRE ("fincas", "fincas", "fincas" )
SET RELA TO CON_INM INTO inqui
// calcula la informacion del listbox
MSGRUN (" ", "Cuadro Reservas.", ;
{ | oDlg | C_RESERVA ( oDlg, dFecha1, .t. ) } )
SELE tReserva
DBGOTOP()
DEFINE DIALOG oDlg ;
TITLE "Cuadro de Reservas" ;
FROM 5, 2 TO 32, 99
@ 0.1, 11.0 SAY oSay1 VAR dFecha1 SIZE 80, 8 UPDATE
@ 0.1, 20.0 SAY "Ocupado" SIZE 24,8
@ 0.25,18.5 BITMAP oBmp OF oDlg RESOURCE "brojo" NOBORDER ;
SIZE 8,8
@ 0.1, 31.0 SAY "Libre" SIZE 15,8
@ 0.25, 25.5 BITMAP oBmp OF oDlg RESOURCE "bverde" NOBORDER ;
SIZE 8,8
@ 0.1, 40.0 SAY "Entrada" SIZE 20,8
@ 0.25, 33.0 BITMAP oBmp OF oDlg RESOURCE "bamari" NOBORDER ;
SIZE 8,8
@ 0.1, 50.0 SAY "Salida" SIZE 15,8
@ 0.25, 40.0 BITMAP oBmp OF oDlg RESOURCE "bCeles" NOBORDER ;
SIZE 8,8
@ 1,1 LISTBOX oLbx ;
FIELDS tReserva->FINCA , ;
Num2Str(tReserva->DORM,1,0), ;
aBit[Max(1,treserva->D01+1)], ;
aBit[Max(1,treserva->D02+1)], ;
aBit[Max(1,treserva->D03+1)], ;
aBit[Max(1,treserva->D04+1)], ;
aBit[Max(1,treserva->D05+1)], ;
aBit[Max(1,treserva->D06+1)], ;
aBit[Max(1,treserva->D07+1)], ;
aBit[Max(1,treserva->D08+1)], ;
aBit[Max(1,treserva->D09+1)], ;
aBit[Max(1,treserva->D10+1)], ;
aBit[Max(1,treserva->D11+1)], ;
aBit[Max(1,treserva->D12+1)], ;
aBit[Max(1,treserva->D13+1)], ;
aBit[Max(1,treserva->D14+1)], ;
aBit[Max(1,treserva->D15+1)], ;
aBit[Max(1,treserva->D16+1)], ;
aBit[Max(1,treserva->D17+1)], ;
aBit[Max(1,treserva->D18+1)], ;
aBit[Max(1,treserva->D19+1)], ;
aBit[Max(1,treserva->D20+1)], ;
aBit[Max(1,treserva->D21+1)], ;
aBit[Max(1,treserva->D22+1)], ;
aBit[Max(1,treserva->D23+1)], ;
aBit[Max(1,treserva->D24+1)], ;
aBit[Max(1,treserva->D25+1)], ;
aBit[Max(1,treserva->D26+1)], ;
aBit[Max(1,treserva->D27+1)], ;
aBit[Max(1,treserva->D28+1)], ;
aBit[Max(1,treserva->D29+1)], ;
aBit[Max(1,treserva->D30+1)], ;
aBit[Max(1,treserva->D31+1)] ;
FIELDSIZES 95, 15, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, ;
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, ;
20, 20, 20, 20, 20, 20 ;
SIZE 366,138 FONT oFont OF oDlg UPDATE;
ON DBLCLICK ( FINCAS( "Reserva", tReserva->CON_INM) , ;
C_RESERVA (oDlg, dFecha1, .f.), oDlg:REFRESH() )
oLbx:nClrPane:={|| IIF((oLbx:cAlias)->(OrdKeyNo())% 2==0,CELE,GRIS)}
oLbx:nClrForeHead := AZUL // gracias Raymundo
oLbx:bKeyDown:={|nK| IIF ( nK != VK_RETURN, , (FINCAS( "Reserva", tReserva->CON_INM) , oDlg:End()))}
oLbx:aHeaders:=aDia
**
@ 165,198 BUTTONBMP oBtn[4] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION ( dFecha1 := CALENDAR(dFecha1), ;
aDia := C_RESERDIA( aDia, dFecha1 ), ;
C_RESERVA (oDlg, dFecha1, .f., .t. ), ;
oLbx:REFRESH(), oDlg:UPDATED() ) ;
MESSAGE " Ver calendario." ;
PROMPT SPACE(3) + "&Calenda" ;
BITMAP "calendar1" TEXTRIGHT
@ 165,258 BUTTONBMP oBtn[6] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION Fayuda( cChmFich, "reservas.htm#cuadro") ;
MESSAGE " Ayuda" ;
PROMPT SPACE(5) + "a&Yuda" ;
BITMAP "Ayuda" TEXTRIGHT
@ 165,318 BUTTONBMP oBtn[7] OF oDlg ;
SIZE 42,16 PIXEL ;
ACTION (oDlg:End()) ;
MESSAGE " Salir de esta ventana" ;
PROMPT SPACE(4) + "&Salir" ;
BITMAP "salir1" TEXTRIGHT
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oDlg:lHelpIcon:=.f., ;
PonBarra(oDlg, " Cuadro de reservas.",.f.) )
CLOSE tReserva
CLOSE fincas
CLOSE reserva
RETURN nil
///////////////////////////////////////////////
/// calculo de la cabecera listbox
///////////////////////////////////////////////
STATIC FUNCTION C_RESERDIA( aDia, dFecha )
local n := 3 // , aDia := ARRAY (31)
aDia[1] := "Fincas"
aDia[2] := "D"
WHILE n <= 33
aDia[n] := Str( DAY (dFecha), 2, 0 )
n++
dFecha++
ENDD
RETURN aDia
///////////////////////////////////////////////
/// calculo del Cuadro de Reservas (planin)
///////////////////////////////////////////////
STATIC FUNCTION C_RESERVA( oDlg, dFecha1, lOpcion, lCalendar)
local N, dF, dFecha2 := (dFecha1 + 31), aDbf := {}, nRec1 := 0
Default lCalendar := .f.
if lOpcion // inicio o cambio de dia
//
// primero, vamos a preparar un fichero temporal
//
AADD(aDbf,{"CON_INM" ,"N", 6, 0}) // control inmueble
AADD(aDbf,{"FINCA" ,"C", 10, 0}) // direccion del inmueble
AADD(aDbf,{"DORM" ,"N", 1, 0}) // numero dormitorios
AADD(aDbf,{"D01" ,"N", 1, 0})
AADD(aDbf,{"D02" ,"N", 1, 0})
AADD(aDbf,{"D03" ,"N", 1, 0})
AADD(aDbf,{"D04" ,"N", 1, 0})
AADD(aDbf,{"D05" ,"N", 1, 0})
AADD(aDbf,{"D06" ,"N", 1, 0})
AADD(aDbf,{"D07" ,"N", 1, 0})
AADD(aDbf,{"D08" ,"N", 1, 0})
AADD(aDbf,{"D09" ,"N", 1, 0})
AADD(aDbf,{"D10" ,"N", 1, 0})
AADD(aDbf,{"D11" ,"N", 1, 0})
AADD(aDbf,{"D12" ,"N", 1, 0})
AADD(aDbf,{"D13" ,"N", 1, 0})
AADD(aDbf,{"D14" ,"N", 1, 0})
AADD(aDbf,{"D15" ,"N", 1, 0})
AADD(aDbf,{"D16" ,"N", 1, 0})
AADD(aDbf,{"D17" ,"N", 1, 0})
AADD(aDbf,{"D18" ,"N", 1, 0})
AADD(aDbf,{"D19" ,"N", 1, 0})
AADD(aDbf,{"D20" ,"N", 1, 0})
AADD(aDbf,{"D21" ,"N", 1, 0})
AADD(aDbf,{"D22" ,"N", 1, 0})
AADD(aDbf,{"D23" ,"N", 1, 0})
AADD(aDbf,{"D24" ,"N", 1, 0})
AADD(aDbf,{"D25" ,"N", 1, 0})
AADD(aDbf,{"D26" ,"N", 1, 0})
AADD(aDbf,{"D27" ,"N", 1, 0})
AADD(aDbf,{"D28" ,"N", 1, 0})
AADD(aDbf,{"D29" ,"N", 1, 0})
AADD(aDbf,{"D30" ,"N", 1, 0})
AADD(aDbf,{"D31" ,"N", 1, 0})
DBCREATE( cDirEsta + "TRESERVA.DBF", aDbf, "DBFCDX")
USE (cDirEsta + "TRESERVA") NEW
ENDI
IF lCalendar
SELE tReserva
DBGOTOP()
ENDI
SELE fincas // indice por nombres
while !eof()
nRec1++
// refresca msgrun
oDlg:cMsg := "Alta recibo "+ LTrim( Str( nRec1 ) )
oDlg:Refresh()
SysRefresh()
SELE tReserva
IF lOpcion // alta
ALTA_R(5)
tReserva->CON_INM := fincas->CON_INM
ELSE
BLOQ_R(5)
ENDI
tReserva->DORM := fincas->DORMITORIO
tReserva->FINCA := fincas->NOMBRE
// fincas ocupadas
IF fincas->INQUILIN > 0
dF := dFecha1
N := 4
WHILE dF <= dFecha2
IF dF < inqui->VTO // hasta el dia antes del vto
IF dF = inqui->FINI
tReserva->(FIELDPUT(n, 3))
ELSEIF dF > inqui->FINI
tReserva->(FIELDPUT(n, 1))
ENDI
ELSEIF dF = inqui->VTO
tReserva->(FIELDPUT(n, 2))
ENDI
n++
dF++
IF dF > inqui->VTO
EXIT
ENDI
ENDD
ENDI
// anota las reservas
SELE reserva
ORDSETFOCUS("CON_INM") // control inmuebles
DBSEEK(fincas->CON_INM)
IF FOUND()
WHILE reserva->CON_INM = fincas->CON_INM
IF reserva->FENTRA <= dFecha2 .and. reserva->FSALE >= dFecha1
dF := dFecha1
N := 4
WHILE dF <= dFecha2
IF dF >= reserva->FENTRA .and. dF < reserva->FSALE
IF dF = reserva->FENTRA
tReserva->(FIELDPUT(n, 3))
ELSE
tReserva->(FIELDPUT(n, 1))
ENDI
ELSEIF dF = reserva->FSALE
tReserva->(FIELDPUT(n, 2))
ENDI
n++
dF++
IF dF > reserva->FSALE
EXIT
ENDI
ENDD
ENDI
SELE reserva
DBSKIP()
ENDD
ENDI
SELE tReserva
UNLOCK
IF lOpcion .or. lCalendar
SELE fincas
DBSKIP()
ELSE
EXIT
ENDI
ENDD
RETURN nil
Un saludo
Manuel
Manuel
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Luis Fernando,
Esta es la pantalla:
http://hyperupload.com/download/02061b7 ... 6.bmp.html
La función realiza lo siguiente:
1) Carga los Headers con aDia := C_RESERDIA( aDia, dFecha1 )
2) Crea una dbf temporal (tReserva) con los datos, C_RESERVA(oDlg, dFecha1)
3) Carga el Listbox
Hasta aqui todo correcto. Pero si a través del botón CALENDA, cambio la fecha de inicio (dFecha1), y vuelve a realizar C_RESERDIA + C_RESERVA
y refresco el listbox, refresca los headers correctamente, el fichero lo actualiza con los nuevos valores pero NO REFRESCA LAS BOLITAS DEL LISTBOX.
Agradeceria cualquier ayuda.
Esta es la pantalla:
http://hyperupload.com/download/02061b7 ... 6.bmp.html
La función realiza lo siguiente:
1) Carga los Headers con aDia := C_RESERDIA( aDia, dFecha1 )
2) Crea una dbf temporal (tReserva) con los datos, C_RESERVA(oDlg, dFecha1)
3) Carga el Listbox
Hasta aqui todo correcto. Pero si a través del botón CALENDA, cambio la fecha de inicio (dFecha1), y vuelve a realizar C_RESERDIA + C_RESERVA
y refresco el listbox, refresca los headers correctamente, el fichero lo actualiza con los nuevos valores pero NO REFRESCA LAS BOLITAS DEL LISTBOX.
Agradeceria cualquier ayuda.
Un saludo
Manuel
Manuel
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Manuel
Quizas no sea la mas elegante, pero creo que tiene que funcionar :
Ya cheque algo que hice parecido, ( claro, con menos bitmaps ) y es esto :
Si tomas los datos de una DBF para mostrar en el browse, lo modificas y lo grabas a la DBF, solo bastaria con que "vaciaras" el contenido del browse y vuelvas a llenarlo.
Ya que las columnas ( bolitas de color ) no tiene relacion directa a campos, sino a una condicion relacionada a los mismos. Por eso no cambian de color se tendria que revalidar para hacerlo.
Espero me haya explicado
Saludos
Quizas no sea la mas elegante, pero creo que tiene que funcionar :
Ya cheque algo que hice parecido, ( claro, con menos bitmaps ) y es esto :
Si tomas los datos de una DBF para mostrar en el browse, lo modificas y lo grabas a la DBF, solo bastaria con que "vaciaras" el contenido del browse y vuelvas a llenarlo.
Ya que las columnas ( bolitas de color ) no tiene relacion directa a campos, sino a una condicion relacionada a los mismos. Por eso no cambian de color se tendria que revalidar para hacerlo.
Espero me haya explicado
Saludos
FWH 10.6 + xHarbour + Borland 582
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Raymundo,Raymundo Islas M. wrote:Manuel
Ya cheque algo que hice parecido, ( claro, con menos bitmaps ) y es esto :
Si tomas los datos de una DBF para mostrar en el browse, lo modificas y lo grabas a la DBF, solo bastaria con que "vaciaras" el contenido del browse y vuelvas a llenarlo.
¿Podrias enviarme un código de ejemplo con lo que tienes hecho?
Quiero ver como "vacias y llenas" el browse.
Muchas gracias.
Un saludo
Manuel
Manuel
Manuel :Manuel Valdenebro wrote:Raymundo,Raymundo Islas M. wrote:Manuel
Ya cheque algo que hice parecido, ( claro, con menos bitmaps ) y es esto :
Si tomas los datos de una DBF para mostrar en el browse, lo modificas y lo grabas a la DBF, solo bastaria con que "vaciaras" el contenido del browse y vuelvas a llenarlo.
¿Podrias enviarme un código de ejemplo con lo que tienes hecho?
Quiero ver como "vacias y llenas" el browse.
Muchas gracias.
Si estas trabajando con arreglos en un browse, por que no usas el método SetArray() para cambiar el contenido de tu vista.
Vikthor
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España