FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Borrar ultimo registro en TCBrowse
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Borrar ultimo registro en TCBrowse
Posted: Thu Nov 10, 2005 06:02 PM
Hola, seguro que es una tontería pero no consiguo programarlo

Lo que me pasa es que al borrar el último registro de un browse, el pintado de los registros que se muestran en la pantalla no lo hace bien, esto solo sucede si el browse no esta completo.

El codigo que utilizo es este
#include "FiveWin.ch"
#include "TcBrowse.ch"

#define FICHERO    "PRUEBA.DBF"
#define INDICE     "PRUEBA.CDX"

//-----------------------------------------------------------------------//
function Prueba()
FIELD NOMBRE
Local oDlg, oBrw, oDbf, oCol
CrearDbf()

SELECT PRUEBA
DATABASE oDbf

DEFINE DIALOG oDlg FROM 0,0 TO 500,400 PIXEL
@ 10,10  BROWSE oBrw PIXEL SIZE 160,240 OF oDlg ;
         ON DBLCLICK Borrar(oDbf, oBrw)

oDbf:GoTop()
oBrw:SetoDbf( oDbf )
oBrw:cAlias := ""		// PARA QUE NO DE ERROR

ADD COLUMN TO BROWSE oBrw  DATA oBrw:oDbf:NOMBRE;
     HEADER "Nombre"
ACTIVATE DIALOG oDlg CENTER
return nil

//-----------------------------------------------------------------------//
STATIC FUNCTION CrearDbf()
FIELD NOMBRE
Local aDbf, i, n

aDbf     := {}
AADD( aDbf, { "NOMBRE", "C", 40, 0 } )
DBCREATE( FICHERO, aDbf)
dbcloseall()
use PRUEBA
pack
INDEX ON NOMBRE TAG "PRUEBAS1" TO (INDICE)
n := 20
MsgGet("Registros", "Cuantos agregamos?", @n)
for i = 1 to n
   APPEND BLANK
   REPLACE NOMBRE WITH  "ZONA" + ALLTRIM(STR(i))
next i
RETURN NIL

//-----------------------------------------------------------------------//
STATIC FUNCTION Borrar(oDbf, oBrw)
If MsgYesNo("Borrar registro")
   oDbf:Delete()
   oBrw:Refresh()
EndIf
return nil


Para borrar el registro se usa doble click

Gracias
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Borrar ultimo registro en TCBrowse
Posted: Fri Nov 11, 2005 11:06 PM

¿Es que no tiene solución?

Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Borrar ultimo registro en TCBrowse
Posted: Sat Nov 12, 2005 09:19 PM

No tiene solucion, mas que la chapucera, que consiste en hacer un :

oBrw:Gotop()
oBrw:GoBottom()

antes el oBrw:Refresh()

para evitar que se "descuadre" el repintado

Ese es un bug que tienen TODOS los browses de FW

Saludos

R.F.
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Borrar ultimo registro en TCBrowse
Posted: Mon Nov 14, 2005 07:18 PM

Gracias voy a probar

Un saludo

Continue the discussion