FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour RBBTN desde c贸digo
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
RBBTN desde c贸digo
Posted: Mon Mar 14, 2011 02:19 PM
Estimados;
Tengo un dialogo al que le agregu茅 2 RBBTN, adem谩s el dialog tiene un Combobox y un GET (todo desde codigo).
Lo que me ocurre es que al pulsar Tab (o Intro), el foco solo cambia entre el Combo y el Get. O sea no pasa por los RBBTN.
Como hago para que de foco a los botones, seg煤n corresponda?
El c贸digo
Code (fw): Select all Collapse
 聽 DEFINE FONT aO[_Fnt] NAME "MS San Serif" SIZE -0,18 BOLD
聽 聽DEFINE ICON aO[_Ico] RESOURCE "ico_Conectar"
聽 聽DEFINE DIALOG oDlg FROM 0,0 TO 165,405 PIXEL TITLE "Control de Acceso" ;
聽 聽 聽 聽 聽 STYLE 聽nOr( WS_POPUP, WS_VISIBLE, WS_BORDER, WS_THICKFRAME, 4 ) ;
聽 聽 聽 聽 聽 ICON 聽 aO[_Ico]

聽 聽@ 2,3 聽GBOX PROMPT " Acceso de Usuarios " SIZE 198,78 ALIGN DT_RIGHT OF oDlg ;
聽 聽 聽 聽 聽 PIXEL COLORS CLR_WHITE, CLR_HBLUE, CLR_HBLUE 聽ROUNDED

聽 聽@ 14,7 GBOX SIZE 41,47 OF oDlg PIXEL COLORS CLR_GRAY, CLR_WHITE // Box del Logo
聽 聽@ 15,7 BITMAP aO[_Bmp] RESOURCE "bmp_Acceso" NOBORDER SIZE 39,45 OF oDlg PIXEL
聽 聽aO[_Bmp]:lTransparent:= .T.

聽 聽@ 18, 52 SAY "Nombre/Alias:" SIZE 45, 10 PIXEL OF oDlg RIGHT
聽 聽@ 17, 99 COMBOBOX aO[_Cmb] VAR cUser ITEMS ::aLstUser OF oDlg UPDATE ;
聽 聽 聽 聽 聽 聽 STYLE CBS_DROPDOWNLIST ;
聽 聽 聽 聽 聽 聽 SIZE 60,100 PIXEL 聽 ;
聽 聽 聽 聽 聽 聽 COLOR CLR_HBLUE, CLR_WHITE ;
聽 聽 聽 聽 聽 聽 ON CHANGE ( oSelf:nPosU 聽 聽:= aO[_Cmb]:nAt, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oSelf:cHostName:= AllTrim( oSelf:aUsers[oSelf:nPosU,_Host] ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oSelf:cDataBase:= Alltrim( oSelf:aUsers[oSelf:nPosU,_DB] ) 聽, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oSelf:cUser 聽 聽:= Alltrim( aO[_Cmb]:VarGet() ) 聽 聽 聽 聽 聽 聽 聽, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oSelf:nPuerto 聽:= oSelf:aUsers[oSelf:nPosU,_Puerto] )

聽 聽// Configurar
聽 聽@ 12,176 RBBTN PROMPT "" SIZE 18,18 OF oDlg ;
聽 聽 聽 聽 聽 聽 BITMAP 聽 "bmp_Config" CENTER ;
聽 聽 聽 聽 聽 聽 TOOLTIP 聽"Configurar Acceso" ;
聽 聽 聽 聽 聽 聽 GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 ACTION 聽 ...

聽 聽@ 46, 52 SAY "Clave de Acceso:" SIZE 45, 10 PIXEL OF oDlg RIGHT
聽 聽@ 45, 99 BTNGET aO[_Get1] VAR cPassW SIZE 42,10 PIXEL PASSWORD OF oDlg

聽 聽@ 41,145 RBBTN aO[_Btn1] PROMPT "&Conectar" SIZE 50,18 MOSTRIGHT OF oDlg ;
聽 聽 聽 聽 聽 聽 BITMAP "bmp_Conectar" ;
聽 聽 聽 聽 聽 聽 TOOLTIP 聽"Conectar con Base de Datos" ;
聽 聽 聽 聽 聽 聽 GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 ACTION 聽 ...

聽 聽ACTIVATE DIALOG oDlg CENTER ON INIT ( aO[_Get1]:Setfocus(), FALSE )

muchas gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: RBBTN desde c贸digo
Posted: Tue Mar 15, 2011 09:36 PM

Sin respuesta?

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RBBTN desde c贸digo
Posted: Tue Mar 15, 2011 10:20 PM
Mario...

puedes publicar un ejemplo que podamos construir...

te recomiendo leas este post: http://forums.fivetechsupport.com/viewtopic.php?p=103821#p103821
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: RBBTN desde c贸digo
Posted: Tue Mar 15, 2011 11:49 PM

Daniel;
ok; gracias por responder

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: RBBTN desde c贸digo
Posted: Wed Mar 16, 2011 01:39 PM
Daniel;
el sample:
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "Ribbon.ch"

#define CLR_GRAD1 聽 聽nRGB( 236, 245, 255 ) 聽 聽// Gradiente de Boton
#define CLR_GRAD2 聽 聽nRGB( 185, 218, 255 )
#define CLR_GRAD3 聽 聽nRGB( 159, 207, 255 )
#define CLR_GRAD4 聽 聽nRGB( 聽 0, 111, 221 )

#define _Cmb2_1 聽1
#define _Get2_2 聽2
#define _Btn2_1 聽3

procedure Main()
local oDlg, ;
聽 聽 聽 aO[_Btn2_1], ;
聽 聽 聽 aLstUser:= {"mario", "rolando", "gonzalez" }, ;
聽 聽 聽 cUser:= "mario", ;
聽 聽 聽 cHost:= "localhost"+Space(20), ;
聽 聽 聽 cDB 聽:= "midb"+Space(20), ;
聽 聽 聽 nPuerto:= 3306, ;
聽 聽 聽 nRow := 9


聽 聽DEFINE DIALOG oDlg TITLE "Configurar Acceso" ;
聽 聽 聽 聽 聽 STYLE nOr( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, 4 ) ;
聽 聽 聽 聽 聽 SIZE 聽370, 200 PIXEL
聽 聽oDlg:lHelpIcon:= FALSE

聽 聽@ nRow+1,8 聽SAY "Nombre/Alias:" SIZE 45, 10 PIXEL OF oDlg RIGHT
聽 聽@ nRow, 聽55 COMBOBOX aO[_Cmb2_1] VAR cUser ITEMS aLstUser OF oDlg UPDATE ;
聽 聽 聽 聽 聽 聽 STYLE CBS_DROPDOWN ; 聽 聽 聽 聽 聽// Porque se agregan users a la lista
聽 聽 聽 聽 聽 聽 SIZE 64,100 PIXEL 聽;
聽 聽 聽 聽 聽 聽 COLOR CLR_HBLUE, CLR_WHITE

聽 聽@ nRow+14,8 聽SAY "Host Address:" 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+13,55 GET cHost PICTURE "@;S50" OF oDlg SIZE 100,10 PIXEL UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 VALID {|o| !Empty( o:VarGet() ) }
聽 聽@ nRow+27,8 聽SAY "DataBase:" 聽 聽 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+26,55 GET cDB 聽 聽 聽 聽 聽 聽 聽OF oDlg SIZE 80,10 PIXEL 聽UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 VALID {|o| !Empty( o:VarGet() ) }
聽 聽@ nRow+40,8 聽SAY "Puerto:" 聽 聽 聽 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+39,55 GET aO[_Get2_2] 聽VAR nPuerto OF oDlg SIZE 15,10 PIXEL UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SPINNER ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ON UP 聽 ( ++nPuerto, aO[_Get2_2]:Refresh() ) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ON DOWN ( --nPuerto, aO[_Get2_2]:Refresh() )

聽 聽@nRow+57,18 SAY "Altere estos valores solo si est谩 seguro del dato que modificar谩" OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 220,10 PIXEL COLOR CLR_HRED
聽 聽@nRow+70,45 RBBTN aO[_Btn2_1] PROMPT "&Aceptar" SIZE 40,15 OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽TOOLTIP 聽"Configurar Acceso" ;
聽 聽 聽 聽 聽 聽 聽 聽GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 聽 聽ACTION 聽wqout({"Conectar"})

聽 聽@ nRow+70,100 RBBTN PROMPT "&Cancelar" SIZE 40,15 OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽 聽TOOLTIP 聽"Configurar Acceso" ;
聽 聽 聽 聽 聽 聽 聽 聽 聽GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 聽 聽 聽ACTION 聽""

聽 聽ACTIVATE DIALOG oDlg CENTER
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RBBTN desde c贸digo
Posted: Wed Mar 16, 2011 02:48 PM
Mario


aqui esta tu solucion... (cuando se tiene un ejemplo para reproducir el error es MUCHO mas facil ayudar)

como la clase TRBTN fue dise帽ada para uso de la ribbonbar y se le dio una caracteristica adicional de poderla usar fuera de ella, no cuenta con la opcion por default de usar el TABSTOP... existe la clase BtnBmp ( que puedes tarnsformar con los mismo colores de la TRBTN ), buttonbmp y button con esas caracteristicas....

debemos agregarselo manualmente...

si cuentas con una version superior a 10.2 de fivewin esta funcion (__ChangeStyleWindow) ya esta incluida... expuesta generosamente por Hernan Diego Ceccarelli

al traterse de un dialogo hay que hacerlo en ON INIT... (atencion que agrege aO[_Btn2_2])
y por seguir tratandose de un dialogo y los maravillosos de programadores del API de Windows, nos ofrecen formas distintas de trabajar los dialogos y ventanas, estos procesan sus mensajes de forma diferente el uno del otro por tal motivo hay que agregar esto tambien....

Code (fw): Select all Collapse
nDlgCode  = DLGC_WANTALLKEYS


junto quedaria asi

Code (fw): Select all Collapse
聽 聽aO[_Btn2_1]:nDlgCode 聽= DLGC_WANTALLKEYS
聽 聽aO[_Btn2_2]:nDlgCode 聽= DLGC_WANTALLKEYS

聽 聽ACTIVATE DIALOG oDlg CENTER ;
聽 聽 聽 聽 聽 聽 ON INIT ( 聽__ChangeStyleWindow( aO[_Btn2_1]:hWnd, WS_TABSTOP ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽__ChangeStyleWindow( aO[_Btn2_2]:hWnd, WS_TABSTOP ) )


el ejemplo completo
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "Ribbon.ch"

#define CLR_GRAD1 聽 聽nRGB( 236, 245, 255 ) 聽 聽// Gradiente de Boton
#define CLR_GRAD2 聽 聽nRGB( 185, 218, 255 )
#define CLR_GRAD3 聽 聽nRGB( 159, 207, 255 )
#define CLR_GRAD4 聽 聽nRGB( 聽 0, 111, 221 )

#define _Cmb2_1 聽1
#define _Get2_2 聽2
#define _Btn2_1 聽3
#define _Btn2_2 聽4

#define FALSE .f.
#define TRUE .t.

procedure Main()
local oDlg, ;
聽 聽 聽 aO[_Btn2_2], ;
聽 聽 聽 aLstUser:= {"mario", "rolando", "gonzalez" }, ;
聽 聽 聽 cUser:= "mario", ;
聽 聽 聽 cHost:= "localhost"+Space(20), ;
聽 聽 聽 cDB 聽:= "midb"+Space(20), ;
聽 聽 聽 nPuerto:= 3306, ;
聽 聽 聽 nRow := 9


聽 聽DEFINE DIALOG oDlg TITLE "Configurar Acceso" ;
聽 聽 聽 聽 聽 STYLE nOr( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, 4 ) ;
聽 聽 聽 聽 聽 SIZE 聽370, 200 PIXEL
聽 聽oDlg:lHelpIcon:= FALSE

聽 聽@ nRow+1,8 聽SAY "Nombre/Alias:" SIZE 45, 10 PIXEL OF oDlg RIGHT
聽 聽@ nRow, 聽55 COMBOBOX aO[_Cmb2_1] VAR cUser ITEMS aLstUser OF oDlg UPDATE ;
聽 聽 聽 聽 聽 聽 STYLE CBS_DROPDOWN ; 聽 聽 聽 聽 聽// Porque se agregan users a la lista
聽 聽 聽 聽 聽 聽 SIZE 64,100 PIXEL 聽;
聽 聽 聽 聽 聽 聽 COLOR CLR_HBLUE, CLR_WHITE

聽 聽@ nRow+14,8 聽SAY "Host Address:" 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+13,55 GET cHost PICTURE "@;S50" OF oDlg SIZE 100,10 PIXEL UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 VALID {|o| !Empty( o:VarGet() ) }
聽 聽@ nRow+27,8 聽SAY "DataBase:" 聽 聽 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+26,55 GET cDB 聽 聽 聽 聽 聽 聽 聽OF oDlg SIZE 80,10 PIXEL 聽UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 VALID {|o| !Empty( o:VarGet() ) }
聽 聽@ nRow+40,8 聽SAY "Puerto:" 聽 聽 聽 聽OF oDlg SIZE 45,10 PIXEL RIGHT
聽 聽@ nRow+39,55 GET aO[_Get2_2] 聽VAR nPuerto OF oDlg SIZE 15,10 PIXEL UPDATE ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SPINNER ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ON UP 聽 ( ++nPuerto, aO[_Get2_2]:Refresh() ) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ON DOWN ( --nPuerto, aO[_Get2_2]:Refresh() )

聽 聽@nRow+57,18 SAY "Altere estos valores solo si est谩 seguro del dato que modificar谩" OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 220,10 PIXEL COLOR CLR_HRED
聽 聽@nRow+70,45 RBBTN aO[_Btn2_1] PROMPT "&Aceptar" SIZE 40,15 OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽TOOLTIP 聽"Configurar Acceso" ;
聽 聽 聽 聽 聽 聽 聽 聽GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 聽 聽ACTION 聽wqout({"Conectar"})

聽 聽@ nRow+70,100 RBBTN aO[_Btn2_2] PROMPT "&Cancelar" SIZE 40,15 OF oDlg ;
聽 聽 聽 聽 聽 聽 聽 聽 聽TOOLTIP 聽"Configurar Acceso" ;
聽 聽 聽 聽 聽 聽 聽 聽 聽GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
聽 聽 聽 聽 聽 聽 聽 聽 聽ACTION 聽""

聽 聽aO[_Btn2_1]:nDlgCode 聽= DLGC_WANTALLKEYS
聽 聽aO[_Btn2_2]:nDlgCode 聽= DLGC_WANTALLKEYS

聽 聽ACTIVATE DIALOG oDlg CENTER ;
聽 聽 聽 聽 聽 聽 ON INIT ( 聽__ChangeStyleWindow( aO[_Btn2_1]:hWnd, WS_TABSTOP ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽__ChangeStyleWindow( aO[_Btn2_2]:hWnd, WS_TABSTOP ) )
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: RBBTN desde c贸digo
Posted: Wed Mar 16, 2011 03:38 PM
Daniel
gracias por tu tiempo
Ahora, faltar铆a algo mas, que muestre cuando tiene el foco... aunque supongo que ya es otro tema.
Por lo que, serias amable en ampliarme como conseguir el mismo efecto, del degradado, mediante BTNBMP?

existe la clase BtnBmp ( que puedes tarnsformar con los mismo colores de la TRBTN ), buttonbmp y button con esas caracteristicas....
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RBBTN desde c贸digo
Posted: Wed Mar 16, 2011 07:42 PM
ejemplo usando BTNBMP
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "Ribbon.ch"

#define CLR_GRAD1    nRGB( 236, 245, 255 )    // Gradiente de Boton
#define CLR_GRAD2    nRGB( 185, 218, 255 )
#define CLR_GRAD3    nRGB( 159, 207, 255 )
#define CLR_GRAD4    nRGB(   0, 111, 221 )

#define _Cmb2_1  1
#define _Get2_2  2
#define _Btn2_1  3
#define _Btn2_2  4

#define FALSE .f.
#define TRUE .t.

procedure Main()
local oDlg, ;
      aO[_Btn2_2], ;
      aLstUser:= {"mario", "rolando", "gonzalez" }, ;
      cUser:= "mario", ;
      cHost:= "localhost"+Space(20), ;
      cDB  := "midb"+Space(20), ;
      nPuerto:= 3306, ;
      nRow := 9


   DEFINE DIALOG oDlg TITLE "Configurar Acceso" ;
          STYLE nOr( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, 4 ) ;
          SIZE  370, 200 PIXEL
   oDlg:lHelpIcon:= FALSE
   
   oDlg:bClrGrad =    { | lInvert | If( lInvert, ;
      { { 1/3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
        { 2/3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
      }, ;
      { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
        { 2/3, CLR_GRAD3, CLR_GRAD4 } } ) }

                                  

   @ nRow+1,8  SAY "Nombre/Alias:" SIZE 45, 10 PIXEL OF oDlg RIGHT
   @ nRow,  55 COMBOBOX aO[_Cmb2_1] VAR cUser ITEMS aLstUser OF oDlg UPDATE ;
            STYLE CBS_DROPDOWN ;          // Porque se agregan users a la lista
            SIZE 64,100 PIXEL  ;
            COLOR CLR_HBLUE, CLR_WHITE

   @ nRow+14,8  SAY "Host Address:"  OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+13,55 GET cHost PICTURE "@;S50" OF oDlg SIZE 100,10 PIXEL UPDATE ;
                VALID {|o| !Empty( o:VarGet() ) }
   @ nRow+27,8  SAY "DataBase:"      OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+26,55 GET cDB              OF oDlg SIZE 80,10 PIXEL  UPDATE ;
                VALID {|o| !Empty( o:VarGet() ) }
   @ nRow+40,8  SAY "Puerto:"        OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+39,55 GET aO[_Get2_2]  VAR nPuerto OF oDlg SIZE 15,10 PIXEL UPDATE ;
                    SPINNER ;
                    ON UP   ( ++nPuerto, aO[_Get2_2]:Refresh() ) ;
                    ON DOWN ( --nPuerto, aO[_Get2_2]:Refresh() )

   @nRow+57,18 SAY "Altere estos valores solo si est谩 seguro del dato que modificar谩" OF oDlg ;
               SIZE 220,10 PIXEL COLOR CLR_HRED
   @nRow+70,45 BTNBMP aO[_Btn2_1] PROMPT "&Aceptar" SIZE 40,15 OF oDlg 2007 ;
               TOOLTIP  "Configurar Acceso" ;
               ACTION  wqout({"Conectar"})

   @ nRow+70,100 BTNBMP aO[_Btn2_2] PROMPT "&Cancelar" SIZE 40,15 OF oDlg 2007 ;
                 TOOLTIP  "Configurar Acceso";
                 ACTION  ""

   aO[_Btn2_1]:nDlgCode  = DLGC_WANTALLKEYS
   aO[_Btn2_2]:nDlgCode  = DLGC_WANTALLKEYS

   ACTIVATE DIALOG oDlg CENTER/* ;
            ON INIT (  __ChangeStyleWindow( aO[_Btn2_1]:hWnd, WS_TABSTOP ),;
                       __ChangeStyleWindow( aO[_Btn2_2]:hWnd, WS_TABSTOP ) )*/
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RBBTN desde c贸digo
Posted: Wed Mar 16, 2011 08:05 PM
Ejemplo usando RBTN y simulando el get/lost focus
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "Ribbon.ch"

#define CLR_GRAD1    nRGB( 236, 245, 255 )    // Gradiente de Boton
#define CLR_GRAD2    nRGB( 185, 218, 255 )
#define CLR_GRAD3    nRGB( 159, 207, 255 )
#define CLR_GRAD4    nRGB(   0, 111, 221 )

#define _Cmb2_1  1
#define _Get2_2  2
#define _Btn2_1  3
#define _Btn2_2  4

#define FALSE .f.
#define TRUE .t.

procedure Main()
local oDlg, ;
      aO[_Btn2_2], ;
      aLstUser:= {"mario", "rolando", "gonzalez" }, ;
      cUser:= "mario", ;
      cHost:= "localhost"+Space(20), ;
      cDB  := "midb"+Space(20), ;
      nPuerto:= 3306, ;
      nRow := 9


   DEFINE DIALOG oDlg TITLE "Configurar Acceso" ;
          STYLE nOr( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, 4 ) ;
          SIZE  370, 200 PIXEL
   oDlg:lHelpIcon:= FALSE

   @ nRow+1,8  SAY "Nombre/Alias:" SIZE 45, 10 PIXEL OF oDlg RIGHT
   @ nRow,  55 COMBOBOX aO[_Cmb2_1] VAR cUser ITEMS aLstUser OF oDlg UPDATE ;
            STYLE CBS_DROPDOWN ;          // Porque se agregan users a la lista
            SIZE 64,100 PIXEL  ;
            COLOR CLR_HBLUE, CLR_WHITE

   @ nRow+14,8  SAY "Host Address:"  OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+13,55 GET cHost PICTURE "@;S50" OF oDlg SIZE 100,10 PIXEL UPDATE ;
                VALID {|o| !Empty( o:VarGet() ) }
   @ nRow+27,8  SAY "DataBase:"      OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+26,55 GET cDB              OF oDlg SIZE 80,10 PIXEL  UPDATE ;
                VALID {|o| !Empty( o:VarGet() ) }
   @ nRow+40,8  SAY "Puerto:"        OF oDlg SIZE 45,10 PIXEL RIGHT
   @ nRow+39,55 GET aO[_Get2_2]  VAR nPuerto OF oDlg SIZE 15,10 PIXEL UPDATE ;
                    SPINNER ;
                    ON UP   ( ++nPuerto, aO[_Get2_2]:Refresh() ) ;
                    ON DOWN ( --nPuerto, aO[_Get2_2]:Refresh() )

   @nRow+57,18 SAY "Altere estos valores solo si est谩 seguro del dato que modificar谩" OF oDlg ;
               SIZE 220,10 PIXEL COLOR CLR_HRED
   @nRow+70,45 RBBTN aO[_Btn2_1] PROMPT "&Aceptar" SIZE 40,11 OF oDlg ;
               TOOLTIP  "Configurar Acceso" ;
               BORDER ROUND RSIZE 2 ;
               GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
                          { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
               ACTION  wqout({"Conectar"})

   @ nRow+70,100 RBBTN aO[_Btn2_2] PROMPT "&Cancelar" SIZE 40,11 OF oDlg ;
                 TOOLTIP  "Configurar Acceso" ;
                 BORDER ROUND RSIZE 2 ;
                 GRADIANT { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
                            { 2/3, CLR_GRAD3, CLR_GRAD4 } } ;
                 ACTION  ""

   aO[_Btn2_1]:nDlgCode  = DLGC_WANTALLKEYS
   aO[_Btn2_2]:nDlgCode  = DLGC_WANTALLKEYS
   

   aO[_Btn2_1]:bGotFocus  = btnGotFocus( aO[_Btn2_1] )                                                          
   aO[_Btn2_1]:bLostFocus = btnLostFocus( aO[_Btn2_1] ) 
   aO[_Btn2_2]:bGotFocus  = btnGotFocus( aO[_Btn2_2] )                                                          
   aO[_Btn2_2]:bLostFocus = btnLostFocus( aO[_Btn2_2] )                             

   ACTIVATE DIALOG oDlg CENTER ;
            ON INIT (  __ChangeStyleWindow( aO[_Btn2_1]:hWnd, WS_TABSTOP ),;
                       __ChangeStyleWindow( aO[_Btn2_2]:hWnd, WS_TABSTOP ) )
 
 
 FUNCTION btnGotFocus( o )
 return {|| o:aGradiant :=  { { 1/3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
                              { 2/3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) } },;
                                DeleteObject( o:hBack ),;
                                o:hBack := NIL,;
                                o:Refresh() }
                                
 FUNCTION btnLostFocus( o )
 return {|| o:aGradiant := { { 1/3, CLR_GRAD1, CLR_GRAD2 }, ;
                              { 2/3, CLR_GRAD3, CLR_GRAD4 } },;
                                DeleteObject( o:hBack ),;
                                o:hBack := NIL,;
                                o:Refresh() }
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: RBBTN desde c贸digo
Posted: Thu Mar 17, 2011 12:08 PM

Daniel;
IM-PRE-SIO-NAN-TE ! :)
Se puede dar por cerrrado el tema

muchas gracias

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina

Continue the discussion