FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC Tip para desarrollar rápido una captura de datos
Posts: 234
Joined: Tue Oct 25, 2005 12:39 AM
Tip para desarrollar rápido una captura de datos
Posted: Mon Apr 27, 2009 06:38 PM

Tomando como punto de partida el ejemplo Testpane.prg que viene en los samples podrás meter muchos datos dentro de una ventana... muy últil para cuando los datos no caben en un solo dialogo.

DEFINE WINDOW oWnd TITLE "Scroll"
@ 10, 10 PANEL oPanel OF oWnd ;
SIZE oWnd:nWidth() - 26, oWnd:nHeight() - 48 PIXEL

@ 6, 3.8 SAY "Name:" OF oPanel SIZE 40, 15
@ 7, 8 GET cName OF oPanel SIZE 100, 18
@ 7.8, 2.1 SAY "Address:" OF oPanel SIZE 50, 15
@ 9, 8 GET cAddress OF oPanel SIZE 120, 18
@9.8, 3.8 SAY "Calle:" OF oPanel SIZE 40, 15
@ 11, 8 GET cCalle OF oPanel SIZE 100, 18
@ 11.5,2.1 SAY "Colonia:" OF oPanel SIZE 50, 15
@ 14.0,7.5 GET cColonia OF oPanel SIZE 120, 18
ACTIVATE WINDOW oWnd

Pero dicho código tiene un defecto muy feo... conforme sigas metiendo datos terminarás teniendo un código similar a siguiente

  @19.1,14.5 SAY "Estado" OF oPanel SIZE 80, 15
  @23.5,11.0 GET oDbf:NXESTADO  PICTURE "@!"  OF oPanel SIZE 111, 18

  @21.7,0.5 SAY "Teléfono de Casa" OF oPanel SIZE 110, 15
  @26.4,0.5 GET oDbf:NXTELCASA  PICTURE "@!"  OF oPanel SIZE 118, 18

  @24.1,0.5 SAY "Domicilio entre la calle" OF oPanel SIZE 130, 15
  @29.3,0.5 GET oDbf:NXCALLE1  PICTURE "@!"  OF oPanel SIZE 195, 18

  @26.7,0.5 SAY "Y la calle" OF oPanel SIZE 80, 15
  @32.2,0.5 GET oDbf:NXCALLE2  PICTURE "@!"  OF oPanel SIZE 195, 18

  @29.2,0.5 SAY "Referencia de ubicación" OF oPanel SIZE 140, 15
  @35.2,0.5 GET oDbf:NXREFUBI  PICTURE "@!"  OF oPanel SIZE 195, 18

  @27.2, 5 BUTTON aBtns[1] PROMPT "Guardar" OF oPanel SIZE 60,20 ;
           ACTION ( Guardar1( oDbf, oWnd ) )

  @27.2,18 BUTTON aBtns[2] PROMPT "Salir" OF oPanel SIZE 60,20 ;
           ACTION ( oWnd:End() )

Date cuenta que las coordenadas del botón están en el renglón 27 y las coordenadas para el dato "Referencia de ubicación" están en el 29.... por si fuera poco el GET está en el renglón 35

¿Cómo arreglarlo?

Usa en cada control la claúsula PIXEL

    @605,7  SAY "Ingresos comprobables" OF oPanel SIZE 120, 15                 PIXEL
    @620,7  COMBOBOX oDbf:NXINGRE  ITEMS aIngresos  OF oPanel SIZE 150, 250    PIXEL

    @645,7  SAY "Tipo de vivienda" OF oPanel SIZE 120, 15                      PIXEL
    @660,7  COMBOBOX oDbf:NXTIPOVIVI  ITEMS aVivienda  OF oPanel SIZE 150, 250 PIXEL

    @685,7  SAY "Descripción de la vivienda" OF oPanel SIZE 180, 15            PIXEL
    @700,7  COMBOBOX oDbf:CFDESCVIVI  ITEMS aDesVivi  OF oPanel SIZE 150, 250  PIXEL

    @725,7  SAY "Número de niveles" OF oPanel SIZE 120, 15             PIXEL
    @740,7  GET oDbf:CFNIVELES  PICTURE "99"  OF oPanel SIZE 40, 18    PIXEL

    @780,7  BUTTON aBtns[1] PROMPT "Guardar" OF oPanel SIZE 60,20  ;
            ACTION ( Guardar1( oDbf, oWnd ) )                          PIXEL

    @780,95 BUTTON aBtns[2] PROMPT "Salir" OF oPanel SIZE 60,20    ;
            ACTION ( oWnd:End() )                                      PIXEL

Asi todos datos están en forma progresiva como debe ser. De ésta manera que menciono es más fácil y rápido programar, por que la separación entre GET y el siguiente SAY siempre es de 25 y la separación de SAY al siguiente GET es de 15.

Otra cosa más.... siguiendo con el ejemplo del Testpane.prg. Si lo usastes para tus desarrollos o usas la clausula PIXEL. Cuando son mas de 20 datos... la primera vez que entras a la ventana, los datos se desplazan rápido. Pero si sales y vuelves a entrar, verás que ahora el desplazamiento es muy lento.

¿Cómo se soluciona?

Fácil, en el ACTIVATE WINDOW oWnd agrega la claúsula MODAL

ACTIVATE WINDOW oWnd MODAL

Ahora notarás que no pierdes velocidad alguna. :P

Saludos
Fernando Leal

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Tip para desarrollar rápido una captura de datos
Posted: Sun May 03, 2009 12:16 AM

Fernando,

Gracias por esos valiosos consejos :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion