Como actualizar los controles de un dialogo.

Post Reply
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Como actualizar los controles de un dialogo.

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Salvador,

Prueba con oDlg:Refresh()
regards, saludos

Antonio Linares
www.fivetechsoft.com
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Post 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
}
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply