Page 1 of 1

Como actualizar los controles de un dialogo.

Posted: Sun Aug 19, 2007 6:50 pm
by Salvador
Hola a todos.

En FW con oDlg:Update() se actualizaban todos los controles de un dialogo.
En FWPPC parece no existir esa función en la clase. Hay alguna alternativa que no sea recorrer con un bucle, oDlg:Acontrols[x]:Refresh(), ya que esta es lenta y muestra un feo efecto en pantalla.

Gracias.

Posted: Sun Aug 19, 2007 6:52 pm
by Antonio Linares
Salvador,

Prueba con oDlg:Refresh()

Posted: Mon Aug 20, 2007 11:11 am
by Salvador
Seguramente hay algo que no acabo de entender por mi inexperiencia con FWPPC.
Pero el siguiente codigo, no refresca los controles si no cogen el foco, el get numérico aparece centrado, y el spinner no se ven los botones.

Que hago mal ?.

Gracias.

Code: Select all

#include "FWCE.ch"
STATIC oWnd, oDlg ,cTexto, nNumero, nNumero2

Function Main()

    DEFINE WINDOW oWnd ;

    DEFINE DIALOG oDlg RESOURCE "DlgTest";
    STYLE WS_CHILD OF oWnd


    REDEFINE GET oGet VAR cTexto ID 200 OF oDlg UPDATE;
    PICTURE "@x"

    REDEFINE GET oGet VAR nNumero  ID 201 OF oDlg UPDATE;
    PICTURE "9999999";


    REDEFINE GET oGet VAR nNumero2 ID 202 OF Odlg UPDATE;
    PICTURE "999";
    SPINNER MIN 0 MAX 255;

    ACTIVATE DIALOG oDlg NOWAIT;
    ON INIT (MoveWindow( oDlg:hWnd, 0, 0), UpdateVars(), oDlg:Refresh());
    VALID .f.

   ACTIVATE WINDOW oWnd ;
   ON INIT oDlg:SetFocus();
   VALID (oDlg:End(), .t. )


return nil


Function UpdateVars()
  cTexto   := "Mi texto"
  nNumero  := 9
  nNumero2 := 10
  oDlg:Refresh()
return .t.


// el RC

#ifdef _CE

#include "c:\vce\include\arm\windows.h"
#include "c:\vce\include\arm\commctrl.h"


#define I_IMAGENONE             (-2)
#define IDS_HELP      104

102 RCDATA
BEGIN
  102, 2,
  I_IMAGENONE, 202, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, 202, 0, 0,
  I_IMAGENONE, 203, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, 203, 0, 1,
END
#endif


DLGTEST DIALOG 48, 28, 166, 180
STYLE 0x4L | WS_CHILD
FONT 8, "system"
{
 EDITTEXT 200, 34, 8, 42, 11, ES_RIGHT | WS_BORDER | WS_TABSTOP
 EDITTEXT 201, 35, 26, 42, 11, ES_RIGHT | WS_BORDER | WS_TABSTOP
 EDITTEXT 202, 36, 45, 34, 11, ES_RIGHT | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 RTEXT "Texto", -1, 2, 10, 28, 10
 RTEXT "Número", -1, 6, 28, 28, 10
 RTEXT "Spinner", -1, 4, 45, 28, 10
}

Posted: Mon Aug 20, 2007 2:43 pm
by Antonio Linares
Salvador,

Hemos implementado el método Update() para FWPPC.

Te enviamos por email la LIB modificada. Ahora tu ejemplo funciona bien.

Los números no es que aparezcan centrados, sino que debes modificar su ancho ó variar su PICTURE.

La claúsula SPINNER parece que no la acepta Windows Mobile.