FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC !Ayuda!...class:'BLOCK' has no exported method refresh()
Posts: 6
Joined: Sun Jul 23, 2006 04:43 AM
!Ayuda!...class:'BLOCK' has no exported method refresh()
Posted: Mon Jul 24, 2006 06:58 PM

Hola soy otro 'nuevo' en todo esto, y muchos años sin programar en CLIPPER, me esta costando mucho... :shock: La cabeza juega malas pasadas... Un saludo a toda la gente del foro, por aqui hay mucho nivel... me impresiona. Dejando los saludos... Estoy tomando como ejemplo CLIENTS para hacer mi aplicacion y me encuentro con muchos problemas uno de ellos es este error en la funcion REFRESH() para el repintado de un listbox. Lo que intento hacer es cambiar mediante un par de botones radio el acceso por codigo de cliente o nombre, pero me da el error que os remito en la cabezera. Si puedo solucionar esto tengo mas cositas para arreglar... Ante todo muchas gracias. :o

/
Programa := Zpda.prg
Autor := Juan Zapata
Fecha := 19/07/2006
Descripcion := Aplicacion para comerciales de autoventa y reparaciones.
/

include "FWCE.ch"

DEFINE DBF_LON 10

DEFINE DBF_CLIENTES 1

DEFINE DBF_ARTICULOS 1

DEFINE DBF_FAMILIAS 1

STATIC OWND, CTEXTO

--------------
FUNCTION Main()
--------------
LOCAL OBMP

    CONFIG()

    ABRIR_FICHEROS()

    DEFINE BITMAP OBMP NAME 'SUMASOL'

    DEFINE WINDOW OWND TITLE "Z MAXPOWER PDA"

    ACTIVATE WINDOW OWND;
            ON PAINT OWND:SAYBITMAP (0,0,OBMP);
            ON INIT CONTROL()

    DBCLOSEALL()
    OBMP:END()

RETURN 0

-----------------------
FUNCTION Config()
-----------------------

    HB_LANGSELECT( "ESWIN" )
    SET DELETED ON
    SET DATE TO ITALIAN
    SET SOFTSEEK ON
    SET CENTURY ON
    SET EPOCH TO 2000

    Hb_LangSelect ('PL') 
    Hb_SetCodePage ('PLWIN')

RETURN NIL

-----------------------
FUNCTION CONTROL()
-----------------------
LOCAL ODUMMY

    @ 0,0 BTNBMP NAME "EXIT" SIZE 40,40 OF OWND;
            ACTION IF(MSGYESNO('Desea salir ?', 'Sistema'), OWND:END(),)

    @ 0,40 BTNBMP NAME "CLIENT" SIZE 40,40 OF OWND;
            ACTION SEL_CLIENT()

    @ 0,200 BTNBMP NAME "INFO" SIZE 40,40 OF OWND

    @ 0,0 BTNBMP ODUMMY NAME "" SIZE 240,40 OF OWND
    ODUMMY:DISABLE()

RETURN NIL

---------------------------
FUNCTION SEL_CLIENT()
---------------------------
LOCAL ODLG, OFONT, OTBR, OGET1, orad

    SELECT CLIENTES

    SET FILTER TO
    SET ORDER TO 1

    HIDEKEYBOARD()

    DEFINE FONT OFONT NAME 'ARIAL' SIZE 0, -10

    DEFINE DIALOG ODLG RESOURCE "SELEC_CLI"

            REDEFINE LISTBOX Otbr FIELDS CLIENTES->CCODCLI, CLIENTES->CNOMCLI, CLIENTES->CPOBCLI, CLIENTES->CTFO1CLI, CLIENTES->CTFO2CLI;
            HEADERS "CODIGO", "NOMBRE","POBLACION","TELEFONO 1", "TELEFONO 2";
            COLSIZES 50,180,140,100,100;
            ID 130 OF ODLG

            OTBR:={|| (NRECNO := CLIENTES->(RECNO() ),;
            ODLG:END())}
  • OTBR:NCLRPANE := {|| IIF ( CLIENTES->(ORDKEYNO()) % 2 == 0 ,RGB(193,221,255),RGB(221,245,255) )}
            REDEFINE BUTTON ID 110 OF ODLG ACTION ODLG:END()
    
            REDEFINE BUTTON ID 120 OF ODLG;
                    ACTION (NRECNO:=CLIENTES->(RECNO()), ODLG:END())
    
            REDEFINE RADIO ORAD;
            ON CHANGE ORDEN_BUSQUEDA(orad);
            ID 140,150 OF ODLG
    
            REDEFINE GET OGET1 VAR CTEXTO  ID 170 OF ODLG;
            ON CHANGE LOCALIZA()
    
    ORDEN_BUSQUEDA(orad, OTBR)
    
    ACTIVATE DIALOG ODLG CENTERED
    

RETURN NRECNO

---------------------------
FUNCTION ORDEN_BUSQUEDA(orad, OTBR)
---------------------------

  • COMPROBANDO RADIO BOTON Y ASIGNANDO BUSQUEDA INDEXADA A CLIENTES*
    IF ORAD=1
             SELECT CLIENTES
             SET ORDER TO 1
             GO TOP
             OTBR:REFRESH()
    ENDIF
    
    IF ORAD=2
            SELECT CLIENTES
            SET ORDER TO 2
            GO TOP
            OTBR:REFRESH()
    ENDIF
    

RETURN NIl

---------------------------
FUNCTION LOCALIZA()
---------------------------

    SELECT CLIENTES
    SET ORDER TO 2        
    DBSEEK (CTEXTO)

    OTBR:refresh()

RETURN NIL

---------------------------
FUNCTION ABRIR_FICHEROS
---------------------------

IF .NOT. USED("CLIENTES")
USE (CURDIR()+"\CLIENTES.DBF") NEW
ENDIF

INDEX ON CLIENTES->CCODCLI TO("CLIENTES.CDX")
INDEX ON CLIENTES->CNOMCLI TO ("CLIENTES.CDX")

RETURN NIL

Posts: 297
Joined: Fri Apr 14, 2006 05:52 PM
!Ayuda!...class:'BLOCK' has no exported method refresh()
Posted: Mon Jul 24, 2006 09:55 PM

Hoja jhony:

Echando un vistazo previo a tu código, me parece que el problema viene por la siguiente línea:

OTBR:={|| (NRECNO := CLIENTES->(RECNO() ),;

ODLG:END())}

Ten en cuenta que la variable que usas en el redefine la estas machacando con esta. Si creo que estas haciendo lo que me imagino, cambia la línea por esta otra:

oTbr:bChange:={||(nrecno:=clientes->(recno()))}

si quieres, añade tambien el odlg:end(), pero no lo he puesto porque no se exactamente porque quiere cerrar el dialogo.

Posts: 6
Joined: Sun Jul 23, 2006 04:43 AM
!Ayuda!...class:'BLOCK' has no exported method refresh()
Posted: Tue Jul 25, 2006 04:21 AM

Joder! Muchas gracias Mike, tantas horas y era una linea... Bueno, otras veces ha sido por una sola palabra... Me quedan muchas horas de calentamientos de cabeza pero con gente como vosotros... da gusto. Un saludo Mike. Ahh!! ya que estoy, la linea de codigo que hay a continuacion con esa misma variable (otbr) es un intento de hacer con el listbox un efecto pijama pero tambien me da error por eso la tengo con un asterisco. Tienes idea de que es lo que puede pasar?
Me contesto yo mismo... Problema resuelto era todo por esa linea de marras del error anterior. Ya funciona :P

:lol::shock:

Continue the discussion