Control equivalente a Group, de otro color

Control equivalente a Group, de otro color

Postby Carlos Mora » Thu Apr 23, 2015 11:30 am

Hola gente,

en el foro en inglés Rick Lipkin preguntó como cambiar el color del rectángulo que se dibuja en un control tipo 'GROUP'. Recibió varias respuestas, entre ellas la de usar el control TPanel como reemplazo, y es en definitiva lo que quiero hacer.

He logrado hacerlo, pero... con algunos efectos colaterales no deseados: los controles no responden a los clicks del ratón. Adjunto un ejemplo de como lo estoy usando. Seguramente debe faltarle algun detalle "de las tripas" de Windows, pero no sé por donde tirar.


Code: Select all  Expand view

   Local nMargen:= ((ScreenWidth()-1280)/2)
   cLogin    := Space(20)
   cPassword := Space(20)

   DEFINE DIALOG oDlg STYLE nOr( WS_BORDER, WS_POPUP ) SIZE ScreenWidth(),ScreenHeight()-200 COLOR GRIS, 0xffffff

       @ 41, nMargen   SAY oSay PROMPT "Aplicacion" /* SIZE 100, 40 */  PIXEL FONT oFontB COLOR CLR_GREEN
       oSay:SetFont( oFontB )

       /* This is what's been replaced
       @ 60, nMargen GROUP  ;
              TO 215, nMargen + 200  ;
              OF oDlg  ;
             PIXEL TRANSPARENT ;
             COLOR CLR_GREEN
       */

       oPanel:= TPanel():New( 60, nMargen, 215, nMargen + 200, oDlg )
       oPanel:bPainted:= {|hDC, cPS| ;
            RoundBox( hDC, 0, 0, oPanel:nWidth-1, oPanel:nHeight-1, 8, 8, 0xaaaaaa, 1 ) ;
            }

      @ 80, nMargen + 40  SAY "Introduzca Usuario y Contraseña" PIXEL SIZE 100, 10

      @ 105, nMargen + 40  SAY "Usuario" SIZE 45, 10   PIXEL

      @ 117, nMargen + 40  GET cLogin    PIXEL SIZE 100, 14 ;
                    ACTION MsgInfo('Hola' ) ;
                    BITMAP "USER_16"

      @ 135, nMargen + 40  SAY "Password:" SIZE 45, 10 PIXEL

      @ 147, nMargen + 40  GET oGet var cPassword   PIXEL SIZE 100, 14 PASSWORD UPDATE ;
                    ACTION MsgInfo('Hola' ) ;
                    BITMAP "KEY_16"

      @ 175, nMargen + 40 BTNBMP  oBtnEntrar  SIZE 60, 20 PROMPT "Acceder" ACTION oDlg:End() /*When lok*/ update    LEFT   2007      RESOURCE "cog"

      @ 175, nMargen + 120 BTNBMP  oBtnSalir SIZE 60, 20 PROMPT "Salir"  action oDlg:End()    LEFT   2007         RESOURCE "cubes"


   ACTIVATE DIALOG oDlg CENTERED

 


Se muestra todo correctamente, el dialogo responde al teclado, pero es imposible hacer click en ningún control. También probé de poner el TPanel después de la declaración de los controles, pero en ese caso los controles quedan ocultos detrás del TPanel.

Estoy seguro de que es una cosita de nada, pero no logro verla.

Tal vez tenga que probar con otro control? Alguien ha hecho algo parecido?

TIA
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Control equivalente a Group, de otro color

Postby cnavarro » Thu Apr 23, 2015 11:58 am

Prueba asi

Code: Select all  Expand view

#include "fivewin.ch"

Function Main()
   Local nMargen:= ((ScreenWidth()-1280)/2)
   Local cLogin    := Space(20)
   Local cPassword := Space(20)
  Local oPanel
Local oSay
Local oDlg
Local oFontB
Local oGet
Local oBtnEntrar
Local oBtnSalir

   DEFINE FONT oFontB NAME "Tahoma" SIZE 0, -12
 
   DEFINE DIALOG oDlg STYLE nOr( WS_BORDER, WS_POPUP ) SIZE ScreenWidth(),ScreenHeight()-200 COLOR CLR_GRAY, 0xffffff

       @ 41, nMargen   SAY oSay PROMPT "Aplicacion" /* SIZE 100, 40 */  PIXEL FONT oFontB COLOR CLR_GREEN
       oSay:SetFont( oFontB )

       /* This is what's been replaced
       @ 60, nMargen GROUP  ;
              TO 215, nMargen + 200  ;
              OF oDlg  ;
             PIXEL TRANSPARENT ;
             COLOR CLR_GREEN
       */

       oPanel:= TPanel():New( 60, nMargen, 215, nMargen + 200, oDlg )
       oPanel:bPainted:= {|hDC, cPS| ;
            RoundBox( hDC, 0, 0, oPanel:nWidth-1, oPanel:nHeight-1, 8, 8, 0xaaaaaa, 1 ) ;
            }


   ACTIVATE DIALOG oDlg CENTERED ON INIT PonControls( oPanel, oDlg, oFontB )
   oFontB:End()
 Return nil

Function PonControls( oPanel, oDlg, oFontB )
   Local nMargen:= ((ScreenWidth()-1280)/2)*2
   Local cLogin    := Space(20)
   Local cPassword := Space(20)
Local oSay
Local oGet
Local oBtnEntrar
Local oBtnSalir

      @ 80, nMargen + 40  SAY "Introduzca Usuario y Contraseña"   OF oPanel PIXEL SIZE 100, 10

      @ 115, nMargen + 40  SAY "Usuario" SIZE 45*2, 10*2   PIXEL  OF oPanel

      @ 137, nMargen + 40  GET cLogin   OF oPanel   PIXEL SIZE 100*2, 14*2  ;
                    ACTION MsgInfo('Hola' ) ;
                    BITMAP "USER_16"

      @ 165, nMargen + 40  SAY "Password:" SIZE 45*2, 10*2  OF oPanel PIXEL

      @ 167, nMargen + 40  GET oGet var cPassword   OF oPanel PIXEL SIZE 100*2, 14*2 PASSWORD UPDATE ;
                    ACTION MsgInfo('Hola' ) ;
                    BITMAP "KEY_16"

      @ 195, nMargen + 40 BTNBMP  oBtnEntrar   OF oPanel  SIZE 80, 20*2 PROMPT "Acceder" ACTION oDlg:End() /*When lok*/ update    LEFT   2007      RESOURCE "cog"

      @ 195, nMargen + 120 BTNBMP  oBtnSalir   OF oPanel SIZE 80, 20*2 PROMPT "Salir"  action oDlg:End()    LEFT   2007         RESOURCE "cubes"

Return nil


 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control equivalente a Group, de otro color

Postby Carlos Mora » Thu Apr 23, 2015 2:01 pm

Gracias Cristobal,

probé, y como te habia comentado en el otro hilo, no se muestran los controles.

http://www.mediafire.com/view/frq7be1x9b2h811/_2015-04-23_15-54-52.png

Creo que ya encontré la forma, pero con TGroup + pintado a mano....
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Control equivalente a Group, de otro color

Postby Carlos Mora » Thu Apr 23, 2015 2:15 pm

Cristobal,
El otro msg terminaba con un offtopic, comentándote que me mudé a Loeches pero sigo trabajando en Atisa, en el Pol Ind. Las Monjas, por si podemos quedar por las cervecitas que nos debemos :) ... A las que por supuesto quedan invitados los que estén cerca y quieran darse una vuelta!

Hace poco hubo "amenaza de reunión" con el tema FiveTouch, pero al final no llegó a concretarse. ¿No se animan los que están más o menos cerca de organizar al menos una quedada? Al menos para conocernos las caras! En su momento nos reunímos con Biel, Rafa Carmona, Andrés Gonzalez y Carles Aubia, y la pasamos fantásticamente, y es una experiencia que podríamos repetir.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Control equivalente a Group, de otro color

Postby cnavarro » Thu Apr 23, 2015 4:30 pm

Carlos
Image

No entiendo por qué no te salen los controles, yo lo he hecho segun tu ejemplo a falta de los recursos.
O mandame un ejemplo con los recursos y lo miro
Lo de la cervecita, cuando quieras, ya intentare volver a contactar contigo a ver si podemos coincidir, creo que aun tengo tu telefono
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control equivalente a Group, de otro color

Postby karinha » Thu Apr 23, 2015 7:38 pm

Code: Select all  Expand view

#include "fivewin.ch"

Function Main()

   Local nMargen:= ((ScreenWidth()-1280)/2)
   Local cLogin    := Space(20)
   Local cPassword := Space(20)
   Local oPanel

   Local oSay
   Local oDlg
   Local oFontB
   Local oGet
   Local oBtnEntrar
   Local oBtnSalir

   DEFINE FONT oFontB NAME "Tahoma" SIZE 0, -12
 
   DEFINE DIALOG oDlg STYLE nOr( WS_BORDER, WS_POPUP ) SIZE ScreenWidth(),ScreenHeight()-200 COLOR CLR_GRAY, 0xffffff

    @ 41, nMargen   SAY oSay PROMPT "Aplicacion" /* SIZE 100, 40 */  PIXEL FONT oFontB COLOR CLR_GREEN

    oSay:SetFont( oFontB )

    /* This is what's been replaced
    @ 60, nMargen GROUP  ;
           TO 215, nMargen + 200  ;
           OF oDlg  ;
           PIXEL TRANSPARENT ;
           COLOR CLR_GREEN
     */


     oPanel:= TPanel():New( 60, nMargen, 215, nMargen + 200, oDlg )
     oPanel:bPainted:= {|hDC, cPS| ;
            RoundBox( hDC, 0, 0, oPanel:nWidth-1, oPanel:nHeight-1, 8, 8, 0xaaaaaa, 1 ) ;
            }

   ACTIVATE DIALOG oDlg CENTERED ON INIT PonControls( oPanel, oDlg, oFontB )

   oFontB:End()

 Return nil

Function PonControls( oPanel, oDlg, oFontB )

   Local nMargen:= ((ScreenWidth()-1280)/2)*2
   Local cLogin    := Space(20)
   Local cPassword := Space(20)
   Local oSay
   Local oGet
   Local oBtnEntrar
   Local oBtnSalir

   @ 80,  nMargen + 40  SAY "Introduzca Usuario y Contraseña"   ;
          COLOR 255, GetSysColor( 15 )                          ;
          OF oPanel PIXEL SIZE 200, 12

   @ 115, nMargen + 40  SAY "Usuario" SIZE 45*2, 10*2           ;
          COLOR 255, GetSysColor( 20 )                          ;
          PIXEL  OF oPanel

   @ 137, nMargen + 40  GET cLogin   OF oPanel   PIXEL SIZE 100*2, 14*2  ;
          COLORS CLR_BLACK, CLR_YELLOW                                   ;
          ACTION MsgInfo('Hola' )                                        ;
          BITMAP "USER_16"

   @ 165, nMargen + 40  SAY "Password:" SIZE 45*2, 10*2  OF oPanel PIXEL ;
          COLORS CLR_BLACK, CLR_HRED                                     ;

   @ 180, nMargen + 40  GET oGet var cPassword   OF oPanel PIXEL SIZE 100*2, 14*2 PASSWORD UPDATE ;
          COLORS CLR_BLACK, CLR_HBLUE                                    ;
          ACTION MsgInfo('Hola' ) ;
          BITMAP "KEY_16"

   @ 220, nMargen + 40 BTNBMP  oBtnEntrar   OF oPanel  SIZE 80, 20*2 PROMPT "Acceder" ACTION oDlg:End() /*When lok*/ update    LEFT   2007      RESOURCE "cog"

   @ 220, nMargen + 125 BTNBMP  oBtnSalir   OF oPanel SIZE 80, 20*2 PROMPT "Salir"  action oDlg:End()    LEFT   2007         RESOURCE "cubes"

Return nil
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Control equivalente a Group, de otro color

Postby cnavarro » Thu Apr 23, 2015 7:43 pm

Carlos Mora wrote:Cristobal,
El otro msg terminaba con un offtopic, comentándote que me mudé a Loeches pero sigo trabajando en Atisa, en el Pol Ind. Las Monjas, por si podemos quedar por las cervecitas que nos debemos :) ... A las que por supuesto quedan invitados los que estén cerca y quieran darse una vuelta!

Hace poco hubo "amenaza de reunión" con el tema FiveTouch, pero al final no llegó a concretarse. ¿No se animan los que están más o menos cerca de organizar al menos una quedada? Al menos para conocernos las caras! En su momento nos reunímos con Biel, Rafa Carmona, Andrés Gonzalez y Carles Aubia, y la pasamos fantásticamente, y es una experiencia que podríamos repetir.


Yo estoy dispuesto tambien, a ver si se anima el tema y nos conocemos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control equivalente a Group, de otro color

Postby Carlos Mora » Mon Apr 27, 2015 9:15 am

Hola Joao,
karinha wrote:
Code: Select all  Expand view

#include "fivewin.ch"
...
 



Así si me funcionó, probablemente la solucion de Cristobal no me funcionaba por la versión de FW que tengo, la Feb'13, que ya tiene su tiempo.

De todas maneras debo buscar una solución más sencilla, si fuera a usar los TGroups en unos pocos diálogos estaría bien, pero hay que usarlos en toda la aplicación, y no voy a partir la declaración de los dialogos solo por ese detalle.

Gracias por la ayuda.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 72 guests