Page 1 of 2

lose focus on buttonbar

Posted: Thu Apr 27, 2023 9:22 am
by Silvio.Falconi
i have a simple dialog with a buttonbar and 8 buttons
initially only the first 6 buttons are shown
if the user changes the buttonbar type it must show only two buttons
if the user restores the initial buttonbar he must put back the 6 buttons

when the buttonbar type changes it loses the focus and colors of the buttonbar

this is the test

Code: Select all | Expand

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"



Function test()
   local oDlg,oDbf,oFont
   local oBar,aBtnBar:=array(8)

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H

 DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"

   @ 90,10 Button "Second bar" size 100,18 PIXEL OF oDlg action Btnbar(2,oBar,aBtnBar,oDlg)
   @ 90,200 Button "First bar" size 100,18 PIXEL OF oDlg action Btnbar(1,oBar,aBtnBar,oDlg)

   ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT Btnbar(1,oBar,aBtnBar,oDlg)
RETURN NIL
//--------------------------------------------------------//
Function Btnbar(nBar,oBar,aBtnBar,oDlg)
  DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015


  Do case
  case nbar =1



   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate"
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print"
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"
   DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del"
   DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print"

    aBtnBar[7]:hide()
    aBtnBar[8]:hide()

 case nbar = 2

   aBtnBar[1]:hide()
   aBtnBar[2]:hide()
   aBtnBar[3]:hide()
   aBtnBar[4]:hide()
   aBtnBar[5]:hide()
   aBtnBar[6]:hide()

     DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del" action msginfo()
     DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print" action msginfo()

     aBtnBar[7]:show()
    aBtnBar[8]:show()

  endcase



  return nil






 

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 11:20 am
by karinha
Aqui funciona perfecto!

Code: Select all | Expand

// Idea Original by Silvio Falconi.
// C:\FWH..\SAMPLES\SILBTNFO.PRG - Modificado en: 27/04/2023 - Joao.

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

#Define aPubGrad {| lInvert | If( lInvert, ;
                 { { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
                 { 2 / 3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }    ;
                 },                                                         ;
                 { { 1 / 2, nRGB( 219, 230, 244 ), nRGB( 207 - 50, 221 - 25, 255 ) }, ;
                 { 1 / 2, nRGB( 201 - 50, 217 - 25, 255 ), nRGB( 231, 242, 255 ) }    ;
                 } ) }

STATIC oFont

FUNCTION Main() // Ejemplo original by Silvio Falconi.

   LOCAL oDlg, oDbf, cTitle, oBar, aBtnBar := ARRAY(8), cSay, oSay, oFont2
   LOCAL  nBottom := 27.2
   LOCAL  nRight  := 89
   LOCAL  nWd     := Max( nRight * DLG_CHARPIX_W, 180 )  // 703.10
   LOCAL  nHt     := nBottom * DLG_CHARPIX_H             // 410.72

   SKinButtons()

   cSay   := OemToAnsi( "I LOVE FIVEWIN THE BEST!"              )
   cTitle := OemToAnsi( "oBar: Perde o Foco na Barra de Botäes" )

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -16 BOLD
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -28 BOLD

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL TITLE cTitle ;
      COLORS CLR_BLACK, CLR_WHITE TRANSPARENT FONT oFont

   oDlg:lHelpIcon := .F.

   @ 200, 150 SAY oSay VAR cSay SIZE 400, 100 PIXEL OF oDlg UPDATE CENTER ;
      FONT oFont2 COLOR CLR_CYAN, CLR_BLACK

   @ 90, 50 BUTTON "2-Second bar" SIZE 120, 40 PIXEL OF oDlg     ;
      ACTION Btnbar( 2, oBar, aBtnBar, oDlg ) DEFAULT

   @ 90, 200 BUTTON "1-First bar" SIZE 120, 40 PIXEL OF oDlg     ;
      ACTION Btnbar( 1, oBar, aBtnBar, oDlg )

   @ 90, 340 BUTTON "0 &All" SIZE 080, 40 PIXEL OF oDlg          ;
      ACTION Btnbar( 0, oBar, aBtnBar, oDlg )

   @ 90, 450 BUTTON "&Exit" SIZE 080, 40 PIXEL OF oDlg           ;
      ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTER ON INIT( BtnBar( 0, oBar, aBtnBar, oDlg ) )

   oFont:End()
   oFont2:End()

RETURN NIL

FUNCTION BtnBar( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HBLUE

      oBar:Adjust()

   END

   DO CASE

   CASE nBar = 0 // muestra todo.

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp"

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp"

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      aBtnBar[7]:Show()
      aBtnBar[8]:Show()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

   CASE nBar = 1  // muestra de 1 a 6

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp"

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp"

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      aBtnBar[7]:Hide()
      aBtnBar[8]:Hide()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

   CASE nBar = 2  // muestra 7 y 8

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp"

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp"

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp"

      aBtnBar[1]:Hide()
      aBtnBar[2]:Hide()
      aBtnBar[3]:Hide()
      aBtnBar[4]:Hide()
      aBtnBar[5]:Hide()
      aBtnBar[6]:Hide()

      aBtnBar[1]:Refresh()
      aBtnBar[2]:Refresh()
      aBtnBar[3]:Refresh()
      aBtnBar[4]:Refresh()
      aBtnBar[5]:Refresh()
      aBtnBar[6]:Refresh()

      aBtnBar[7]:Show()
      aBtnBar[8]:Show()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

   ENDCASE

RETURN NIL

// FIN / END  - kapiabafwh@gmail.com
 
Rerads, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 11:24 am
by karinha
https://imgur.com/Yc1pjg2

WOW()

Image

Regards, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 12:39 pm
by Silvio.Falconi
there is a problem
I not want hide or show the buttons ( when the use move the mouse into there are also the buttons)

I wish as there are 2 buttonbar different

at init there are 6 buttons

1) "New"
2) "Modify"
3) "Duplicate"
4) "Del"
5) "Print"
6) "Help"



if press the user there are only the 4 and the 5

1) "Del"
2) "Print"

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 12:52 pm
by karinha
No puedo entender la traducción. El traductor de Google es terrible.

I can't understand the translation. Google translator is terrible.

You have the SOURCE there, modify it to taste.

Ahí tienes la FUENTE, modifícala al gusto.

Regards, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 12:58 pm
by karinha
I understood! When the user MOVES THE MOUSE, the buttons reappear.

¡Entendí! Cuando el usuario MUEVE EL RATÓN, los botones vuelven a aparecer.

Regards, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 1:16 pm
by karinha
Pronto Silvio: I LOVE FIVEWIN The Best!

Code: Select all | Expand

// Idea Original by Silvio Falconi.
// C:\FWH..\SAMPLES\SILBTNFO.PRG - Modificado en: 27/04/2023 - Joao.

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

#Define aPubGrad {| lInvert | If( lInvert, ;
                 { { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
                 { 2 / 3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }    ;
                 },                                                         ;
                 { { 1 / 2, nRGB( 219, 230, 244 ), nRGB( 207 - 50, 221 - 25, 255 ) }, ;
                 { 1 / 2, nRGB( 201 - 50, 217 - 25, 255 ), nRGB( 231, 242, 255 ) }    ;
                 } ) }

// controle de Botones.
STATIC oFont, lLigaBtn1 := .T., lLigaBtn2 := .T., lLigaBtn3 := .T., ;
              lLigaBtn4 := .T., lLigaBtn5 := .T., lLigaBtn6 := .T., ;
              lLigaBtn7 := .T., lLigaBtn8 := .T.

FUNCTION Main() // Ejemplo original by Silvio Falconi.

   LOCAL oDlg, oDbf, cTitle, oBar, aBtnBar := ARRAY(8), cSay, oSay, oFont2
   LOCAL  nBottom := 27.2
   LOCAL  nRight  := 89
   LOCAL  nWd     := Max( nRight * DLG_CHARPIX_W, 180 )  // 703.10
   LOCAL  nHt     := nBottom * DLG_CHARPIX_H             // 410.72

   SKinButtons()

   cSay   := OemToAnsi( "I LOVE FIVEWIN THE BEST!"              )
   cTitle := OemToAnsi( "oBar: Perde o Foco na Barra de Botäes" )

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -16 BOLD
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -28 BOLD

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL TITLE cTitle ;
      COLORS CLR_BLACK, CLR_WHITE TRANSPARENT FONT oFont

   oDlg:lHelpIcon := .F.

   @ 200, 150 SAY oSay VAR cSay SIZE 400, 100 PIXEL OF oDlg UPDATE CENTER ;
      FONT oFont2 COLOR CLR_CYAN, CLR_BLACK

   @ 90, 50 BUTTON "2-Second bar" SIZE 120, 40 PIXEL OF oDlg     ;
      ACTION Btnbar( 2, oBar, aBtnBar, oDlg ) DEFAULT

   @ 90, 200 BUTTON "1-First bar" SIZE 120, 40 PIXEL OF oDlg     ;
      ACTION Btnbar( 1, oBar, aBtnBar, oDlg )

   @ 90, 340 BUTTON "0 &All" SIZE 080, 40 PIXEL OF oDlg          ;
      ACTION Btnbar( 0, oBar, aBtnBar, oDlg )

   @ 90, 450 BUTTON "&Exit" SIZE 080, 40 PIXEL OF oDlg           ;
      ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTER ON INIT( BtnBar( 0, oBar, aBtnBar, oDlg ) )

   oFont:End()
   oFont2:End()

RETURN NIL

FUNCTION BtnBar( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HBLUE

      oBar:Adjust()

   END

   DO CASE

   CASE nBar = 0 // muestra todo.

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn1 )

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp" WHEN( lLigaBtn2 )

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp" WHEN( lLigaBtn3 )

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"    WHEN( lLigaBtn6 )

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn7 )

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn8 )

      aBtnBar[7]:Show()
      aBtnBar[8]:Show()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

      lLigaBtn1 := .T.
      lLigaBtn2 := .T.
      lLigaBtn3 := .T.
      lLigaBtn4 := .T.
      lLigaBtn5 := .T.
      lLigaBtn6 := .T.
      lLigaBtn7 := .T.
      lLigaBtn8 := .T.

   CASE nBar = 1  // muestra de 1 a 6

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn1 )

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp"  WHEN( lLigaBtn2 )

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp" WHEN( lLigaBtn3 )

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"    WHEN( lLigaBtn6 )

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn7 )

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn8 )

      aBtnBar[7]:Hide()
      aBtnBar[8]:Hide()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

      lLigaBtn1 := .T.
      lLigaBtn2 := .T.
      lLigaBtn3 := .T.
      lLigaBtn4 := .T.
      lLigaBtn5 := .T.
      lLigaBtn6 := .T.
      lLigaBtn7 := .F.
      lLigaBtn8 := .F.

   CASE nBar = 2  // muestra 7 y 8

      DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New 1"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn1 )

      DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify 2" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\floppy.bmp"  WHEN( lLigaBtn2 )

      DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplic 3" NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\HelpInd.bmp" WHEN( lLigaBtn3 )

      DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del 4"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

      DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print 5"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help 6"   NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\Help.bmp"    WHEN( lLigaBtn6 )

      DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del 7"    NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn7 )

      DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print 8"  NOBORDER GROUP ;
         FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn8 )

      aBtnBar[1]:Hide()
      aBtnBar[2]:Hide()
      aBtnBar[3]:Hide()
      aBtnBar[4]:Hide()
      aBtnBar[5]:Hide()
      aBtnBar[6]:Hide()

      aBtnBar[1]:Refresh()
      aBtnBar[2]:Refresh()
      aBtnBar[3]:Refresh()
      aBtnBar[4]:Refresh()
      aBtnBar[5]:Refresh()
      aBtnBar[6]:Refresh()

      aBtnBar[7]:Show()
      aBtnBar[8]:Show()

      aBtnBar[7]:Refresh()
      aBtnBar[8]:Refresh()

      lLigaBtn1 := .F.
      lLigaBtn2 := .F.
      lLigaBtn3 := .F.
      lLigaBtn4 := .F.
      lLigaBtn5 := .F.
      lLigaBtn6 := .F.
      lLigaBtn7 := .T.
      lLigaBtn8 := .T.

   ENDCASE

RETURN NIL

// FIN / END  - kapiabafwh@gmail.com
 
Regards, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 4:49 pm
by Silvio.Falconi
I understand that you don't understand,
when I show the two buttons I have to put them in first and second place not at the bottom of the buttobar

I want to do it this way for a logical question, if I select a record (or more records) I can delete it or print it, so I don't need the new, edit, duplicate buttons.

Image


entiendo que tu no entiendas,
cuando muestro los dos botones tengo que ponerlos en primer y segundo lugar no en la parte inferior de la barra de botones

Quiero hacerlo de esta manera por una pregunta lógica, si selecciono un registro (o más registros) puedo eliminarlo o imprimirlo, por lo que no necesito los botones nuevo, editar, duplicar.

Please compile it before and you can see what I mean

Code: Select all | Expand

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"



function Main()

       RddSetDefault( "DBFCDX" )

       SetHandleCount( 100 )
       FWNumFormat( "E", .t. )

       SET DATE FORMAT "dd-mm-yyyy"
       SET DELETED     ON
       SET CENTURY     ON
       SET EPOCH TO    year( date() ) - 20
       SET MULTIPLE    OFF
       SetGetColorFocus(RGB(255,255,224))
       SetMGetColorFocus(rgb(255,255,224))


       test()

      RETURN NIL


Function test()
   local oDlg,oDbf,oFont
   local oBar,aBtnBar:=array(8)

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H



       oDbf :=TDatabase():Open( , "Customer", "DBFCDX", .T. )
       oDbf:setorder(1)
       oDbf:Gotop()


 DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"


   @ 90,10 Button "Select one" size 100,18 PIXEL OF oDlg action (oBrw:SelectRow( 2 ),Btnbar(2,oBar,aBtnBar,oDlg))
   @ 90,200 Button "DeSelect one" size 100,18 PIXEL OF oDlg action (oBrw:SelectRow( 0 ),Btnbar(1,oBar,aBtnBar,oDlg))

 @ 110,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
          DATASOURCE oDbf AUTOCOLS  ;
          AUTOSORT FONT oFont;
          NOBORDER CELL LINES


         WITH OBJECT oBrw
            :SetMultiSelectCol()
            :CreateFromCode()
          END

          ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT Btnbar(1,oBar,aBtnBar,oDlg)
RETURN NIL
//--------------------------------------------------------//
Function Btnbar(nBar,oBar,aBtnBar,oDlg)
 local aGrad:= { | lPressed | If( ! lPressed,;
                 { { 1,  RGB( 250,250,245),  RGB( 250,250,245)} },;
                 { { 1, RGB( 245,245,235), RGB( 245,245,235)} } ) }



 DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015



  Do case
  case nbar =1



   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"     action nil
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"  action nil
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" action nil
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"      action nil
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print" action oBrw:report()
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"     action nil  BTNRIGHT
  * DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del"     action nil
  * DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print"  action oBrw:report()

   * aBtnBar[7]:hide()
   * aBtnBar[8]:hide()

 case nbar = 2

   aBtnBar[1]:hide()
   aBtnBar[2]:hide()
   aBtnBar[3]:hide()
   aBtnBar[4]:hide()
   aBtnBar[5]:hide()


     DEFINE BUTTON aBtnBar[7] OF oBar PROMPT "Del"    action nil
     DEFINE BUTTON aBtnBar[8] OF oBar PROMPT "Print"   action oBrw:report()
      DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"     action nil  BTNRIGHT
  endcase

  WITH OBJECT oBar
      oBar:bClrGrad := aGrad
      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }
      oBar:Adjust()
   END  

    ChangeButtons( oBar )

      AEval( oBar:aControls, { | oCtrl | oCtrl:refresh() } )
  
  return nil


  function ChangeButtons( oBar )
       AEval( oBar:aControls, { | oCtrl | oCtrl:nTop += 4, oCtrl:nHeight -= 4 } )
       return .T.







 
Image

why I cannot press the buttons ?

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 6:22 pm
by karinha
Esto?

https://imgur.com/gyajN7M

Image

Regars, saludos

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 6:24 pm
by karinha
Después -> Select One

https://imgur.com/hbQiURl

Image

Correct?

Regards, saludos.

Re: lose focus on buttonbar

Posted: Thu Apr 27, 2023 7:07 pm
by karinha
Hola Silvio, a ver si ahora te entendí bien.
Hello Silvio, see if I understood you well now.

Code: Select all | Expand

// Idea Original by Silvio Falconi. - Version: 2.0
// C:\FWH..\SAMPLES\SILBTNF2.PRG - Modificado en: 27/04/2023 - Joao.

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

#Define aPubGrad {| lInvert | If( lInvert, ;
                 { { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
                 { 2 / 3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }    ;
                 },                                                         ;
                 { { 1 / 2, nRGB( 219, 230, 244 ), nRGB( 207 - 50, 221 - 25, 255 ) }, ;
                 { 1 / 2, nRGB( 201 - 50, 217 - 25, 255 ), nRGB( 231, 242, 255 ) }    ;
                 } ) }

// controle de Botones.
STATIC oFont, lLigaBtn1 := .T., lLigaBtn2 := .T., lLigaBtn3 := .T., ;
              lLigaBtn4 := .T., lLigaBtn5 := .T., lLigaBtn6 := .T., ;
              lLigaBtn7 := .T., lLigaBtn8 := .T.

STATIC oBar

FUNCTION Main() // Ejemplo original by Silvio Falconi.

   LOCAL oDlg, oDbf, cTitle, aBtnBar := ARRAY(8), cSay, oSay, oFont2, oExit, ;
         oBtn1, oBtn2
   LOCAL nBottom := 27.2
   LOCAL nRight  := 89
   LOCAL nWd     := Max( nRight * DLG_CHARPIX_W, 180 )  // 703.10
   LOCAL nHt     := nBottom * DLG_CHARPIX_H             // 410.72

   SKinButtons()

   cSay   := OemToAnsi( "I LOVE FIVEWIN THE BEST!"              )
   cTitle := OemToAnsi( "Silvio Falconi And The Power of FiveWin " + ;
                        "Cambiar Botones en Tiempo Real." )

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -16 BOLD
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -28 BOLD

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL TITLE cTitle ;
      COLORS CLR_BLACK, CLR_WHITE TRANSPARENT FONT oFont

   oDlg:lHelpIcon := .F.

   @ 200, 150 SAY oSay VAR cSay SIZE 400, 100 PIXEL OF oDlg UPDATE CENTER ;
      FONT oFont2 COLOR CLR_CYAN, CLR_BLACK

   // 2 Botones
   @ 90, 50 BUTTON oBtn1 PROMPT "&Select One" SIZE 120, 40 PIXEL OF oDlg  ;
      ACTION Btnbar2( 2, oBar, aBtnBar, oDlg )

   oBtn1:cTooltip := { "Click-Me Para 2 Botones",                          ;
                       "2 Botones en la Barra", 1, CLR_WHITE, CLR_HBLUE }

   // 5 Botones o mas...
   @ 90, 200 BUTTON oBtn2 PROMPT "&DeSelect One" SIZE 140, 40 PIXEL OF oDlg ;
      ACTION Btnbar5( 5, oBar, aBtnBar, oDlg )

   oBtn2:cTooltip := { "Click-Me Para 5 Botones",                          ;
                       "5 Botones en la Barra", 1, CLR_WHITE, CLR_HBLUE }

   @ 90, 450 BUTTON oExit PROMPT "&Exit" SIZE 080, 40 PIXEL OF oDlg ;
      ACTION( oDlg:End() ) CANCEL

   oExit:cTooltip := { "Click no Botão Para Sair",                          ;
                       "Sair do Programa Agora? ", 1, CLR_WHITE, CLR_HBLUE }

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT( BtnBar5( 0, oBar, aBtnBar, oDlg ), xFocus( oExit ) )

   oFont:End()
   oFont2:End()

RETURN NIL
// 2 Botones o mas o menos...
FUNCTION BtnBar2( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:Refresh()

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HRED

      oBar:Adjust()

   END

   // los ultimos son en primero - Left.
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Delete   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print    " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

   // Silvio:

   // Botones OFF y Hide() in BtnBar5( nBar, oBar, aBtnBar, oDlg )
   lLigaBtn1 := .F.
   lLigaBtn2 := .F.
   lLigaBtn3 := .F.

   aBtnBar[1]:Hide()
   aBtnBar[2]:Hide()
   aBtnBar[3]:Hide()

   aBtnBar[1]:Refresh()
   aBtnBar[2]:Refresh()
   aBtnBar[3]:Refresh()
   // in BtnBar5() fin / end

RETURN NIL
// 5 Botones o mas...
FUNCTION BtnBar5( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:Refresh()

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HBLUE

      oBar:Adjust()

   END

   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New      " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn1 )

   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\floppy.bmp"  WHEN( lLigaBtn2 )

   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\HelpInd.bmp" WHEN( lLigaBtn3 )

   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Delete   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print    " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

   // Botones OFF ? Ninguno.
   lLigaBtn1 := .T.
   lLigaBtn2 := .T.
   lLigaBtn3 := .T.

   aBtnBar[1]:Show()
   aBtnBar[2]:Show()
   aBtnBar[3]:Show()

   aBtnBar[1]:Refresh()
   aBtnBar[2]:Refresh()
   aBtnBar[3]:Refresh()

   // botones ON
   lLigaBtn4 := .T.
   lLigaBtn5 := .T.

   aBtnBar[4]:Show()
   aBtnBar[5]:Show()

   aBtnBar[4]:Refresh()
   aBtnBar[5]:Refresh()

RETURN NIL

FUNCTION xFocus( oObj )

   xSetFocus( oObj )
   xSetFocus( oObj )

RETURN( .T. )

FUNCTION xSetFocus( oObj )    

   LOCAL _oWnd := oObj:oWnd, _oTempo := ""

   DEFINE TIMER _oTempo INTERVAL 10 OF _oWnd ;
          ACTION ( oObj:SetFocus(), _oTempo:End() )

   ACTIVATE TIMER _oTempo

RETURN( .T. )

// FIN / END  - kapiabafwh@gmail.com
 
Regards, saludos.

Re: lose focus on buttonbar

Posted: Fri Apr 28, 2023 7:04 am
by Silvio.Falconi
karinha wrote:Hola Silvio, a ver si ahora te entendí bien.
Hello Silvio, see if I understood you well now.

Code: Select all | Expand

// Idea Original by Silvio Falconi. - Version: 2.0
// C:\FWH..\SAMPLES\SILBTNF2.PRG - Modificado en: 27/04/2023 - Joao.

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

#Define aPubGrad {| lInvert | If( lInvert, ;
                 { { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
                 { 2 / 3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }    ;
                 },                                                         ;
                 { { 1 / 2, nRGB( 219, 230, 244 ), nRGB( 207 - 50, 221 - 25, 255 ) }, ;
                 { 1 / 2, nRGB( 201 - 50, 217 - 25, 255 ), nRGB( 231, 242, 255 ) }    ;
                 } ) }

// controle de Botones.
STATIC oFont, lLigaBtn1 := .T., lLigaBtn2 := .T., lLigaBtn3 := .T., ;
              lLigaBtn4 := .T., lLigaBtn5 := .T., lLigaBtn6 := .T., ;
              lLigaBtn7 := .T., lLigaBtn8 := .T.

STATIC oBar

FUNCTION Main() // Ejemplo original by Silvio Falconi.

   LOCAL oDlg, oDbf, cTitle, aBtnBar := ARRAY(8), cSay, oSay, oFont2, oExit, ;
         oBtn1, oBtn2
   LOCAL nBottom := 27.2
   LOCAL nRight  := 89
   LOCAL nWd     := Max( nRight * DLG_CHARPIX_W, 180 )  // 703.10
   LOCAL nHt     := nBottom * DLG_CHARPIX_H             // 410.72

   SKinButtons()

   cSay   := OemToAnsi( "I LOVE FIVEWIN THE BEST!"              )
   cTitle := OemToAnsi( "Silvio Falconi And The Power of FiveWin " + ;
                        "Cambiar Botones en Tiempo Real." )

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -16 BOLD
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -28 BOLD

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL TITLE cTitle ;
      COLORS CLR_BLACK, CLR_WHITE TRANSPARENT FONT oFont

   oDlg:lHelpIcon := .F.

   @ 200, 150 SAY oSay VAR cSay SIZE 400, 100 PIXEL OF oDlg UPDATE CENTER ;
      FONT oFont2 COLOR CLR_CYAN, CLR_BLACK

   // 2 Botones
   @ 90, 50 BUTTON oBtn1 PROMPT "&Select One" SIZE 120, 40 PIXEL OF oDlg  ;
      ACTION Btnbar2( 2, oBar, aBtnBar, oDlg )

   oBtn1:cTooltip := { "Click-Me Para 2 Botones",                          ;
                       "2 Botones en la Barra", 1, CLR_WHITE, CLR_HBLUE }

   // 5 Botones o mas...
   @ 90, 200 BUTTON oBtn2 PROMPT "&DeSelect One" SIZE 140, 40 PIXEL OF oDlg ;
      ACTION Btnbar5( 5, oBar, aBtnBar, oDlg )

   oBtn2:cTooltip := { "Click-Me Para 5 Botones",                          ;
                       "5 Botones en la Barra", 1, CLR_WHITE, CLR_HBLUE }

   @ 90, 450 BUTTON oExit PROMPT "&Exit" SIZE 080, 40 PIXEL OF oDlg ;
      ACTION( oDlg:End() ) CANCEL

   oExit:cTooltip := { "Click no Botão Para Sair",                          ;
                       "Sair do Programa Agora? ", 1, CLR_WHITE, CLR_HBLUE }

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT( BtnBar5( 0, oBar, aBtnBar, oDlg ), xFocus( oExit ) )

   oFont:End()
   oFont2:End()

RETURN NIL
// 2 Botones o mas o menos...
FUNCTION BtnBar2( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:Refresh()

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HRED

      oBar:Adjust()

   END

   // los ultimos son en primero - Left.
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Delete   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print    " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

   // Silvio:

   // Botones OFF y Hide() in BtnBar5( nBar, oBar, aBtnBar, oDlg )
   lLigaBtn1 := .F.
   lLigaBtn2 := .F.
   lLigaBtn3 := .F.

   aBtnBar[1]:Hide()
   aBtnBar[2]:Hide()
   aBtnBar[3]:Hide()

   aBtnBar[1]:Refresh()
   aBtnBar[2]:Refresh()
   aBtnBar[3]:Refresh()
   // in BtnBar5() fin / end

RETURN NIL
// 5 Botones o mas...
FUNCTION BtnBar5( nBar, oBar, aBtnBar, oDlg )

   DEFINE BUTTONBAR oBar BUTTONSIZE 70, 50 _3DLOOK TOP OF oDlg 2007

   WITH OBJECT oBar

      oBar:Refresh()

      oBar:bClrGrad := aPubGrad

      oBar:bRClicked := { || NIL }
      oBar:bLClicked := { || NIL }

      oBar:SetFont( oFont )

      oBar:nClrText := CLR_HBLUE

      oBar:Adjust()

   END

   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New      " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn1 )

   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\floppy.bmp"  WHEN( lLigaBtn2 )

   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\HelpInd.bmp" WHEN( lLigaBtn3 )

   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Delete   " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\open.bmp"    WHEN( lLigaBtn4 )

   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print    " NOBORDER GROUP ;
      FILENAME "..\bitmaps\16x16\printer.bmp" WHEN( lLigaBtn5 )

   // Botones OFF ? Ninguno.
   lLigaBtn1 := .T.
   lLigaBtn2 := .T.
   lLigaBtn3 := .T.

   aBtnBar[1]:Show()
   aBtnBar[2]:Show()
   aBtnBar[3]:Show()

   aBtnBar[1]:Refresh()
   aBtnBar[2]:Refresh()
   aBtnBar[3]:Refresh()

   // botones ON
   lLigaBtn4 := .T.
   lLigaBtn5 := .T.

   aBtnBar[4]:Show()
   aBtnBar[5]:Show()

   aBtnBar[4]:Refresh()
   aBtnBar[5]:Refresh()

RETURN NIL

FUNCTION xFocus( oObj )

   xSetFocus( oObj )
   xSetFocus( oObj )

RETURN( .T. )

FUNCTION xSetFocus( oObj )    

   LOCAL _oWnd := oObj:oWnd, _oTempo := ""

   DEFINE TIMER _oTempo INTERVAL 10 OF _oWnd ;
          ACTION ( oObj:SetFocus(), _oTempo:End() )

   ACTIVATE TIMER _oTempo

RETURN( .T. )

// FIN / END  - kapiabafwh@gmail.com
 
Regards, saludos.
Image
then I don't think that for each browse I have to do all this source to then have two buttonbars that when you change from one to the other you see the refresh and then when you pass the mouse there are still the old buttons

entonces no creo que para cada navegación tenga que hacer toda esta fuente para luego tener dos barras de botones que cuando cambias de una a otra ves el refresco y luego al pasar el mouse siguen los botones viejos

Re: lose focus on buttonbar

Posted: Fri Apr 28, 2023 9:14 am
by Antonio Linares
Solved thank to this great example from Cristobal Navarro:

barchange.prg

Code: Select all | Expand

// developed by Cristobal Navarro

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

Function test()

   local oDlg,oDbf,oFont
   local oBar

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"
      oDlg:lHelpIcon := .F.      

   @ 90,  10 Button "Second bar" size 100,18 PIXEL OF oDlg action Btnbar(2,oDlg:oBar,oDlg)
   @ 90, 200 Button "First bar"  size 100,18 PIXEL OF oDlg action Btnbar(1,oDlg:oBar,oDlg)

   ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT ( Btnbar(0,oBar,oDlg), Btnbar(1,oDlg:oBar,oDlg) )
RETURN NIL

//----------------------------------------------------------------------------//

Function Btnbar(nBar,oBar,oDlg)  // ,aBtnBar

   local aBtnBar
   local x

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif

  Do case
  case nbar = 0
     DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015

  case nbar = 1
   aBtnBar := array(6)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"       action msginfo()
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"    action msginfo()
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" action msginfo()
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"       action msginfo()
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print"     action msginfo()
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"      action msginfo("Help")

  case nbar = 2
   aBtnBar := array(2)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "Del"       action msginfo("Del")
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Print"     action msginfo("Print")

  endcase

return oBar

//----------------------------------------------------------------------------//
We have included this example in FWH\samples for the next FWH build to be published very soon

Re: lose focus on buttonbar

Posted: Fri Apr 28, 2023 9:29 am
by Silvio.Falconi
Antonio Linares wrote:Solved thank to this great example from Cristobal Navarro:

barchange.prg

Code: Select all | Expand

// developed by Cristobal Navarro

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"

Function test()

   local oDlg,oDbf,oFont
   local oBar

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"
      oDlg:lHelpIcon := .F.      

   @ 90,  10 Button "Second bar" size 100,18 PIXEL OF oDlg action Btnbar(2,oDlg:oBar,oDlg)
   @ 90, 200 Button "First bar"  size 100,18 PIXEL OF oDlg action Btnbar(1,oDlg:oBar,oDlg)

   ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT ( Btnbar(0,oBar,oDlg), Btnbar(1,oDlg:oBar,oDlg) )
RETURN NIL

//----------------------------------------------------------------------------//

Function Btnbar(nBar,oBar,oDlg)  // ,aBtnBar

   local aBtnBar
   local x

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif

  Do case
  case nbar = 0
     DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015

  case nbar = 1
   aBtnBar := array(6)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"       action msginfo()
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"    action msginfo()
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" action msginfo()
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"       action msginfo()
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print"     action msginfo()
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"      action msginfo("Help")

  case nbar = 2
   aBtnBar := array(2)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "Del"       action msginfo("Del")
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Print"     action msginfo("Print")

  endcase

return oBar

//----------------------------------------------------------------------------//
We have included this example in FWH\samples for the next FWH build to be published very soon
thanks

Re: lose focus on buttonbar

Posted: Fri Apr 28, 2023 10:16 am
by karinha
Buen día. Maestro Antônio, en este ejemplo de Maestro Navarro, pídale que después de cambiar el botón, pase el mouse sobre los botones de la barra. En este ejemplo del maestro navarro, ¿cómo solucionarlo?

Gracias.

Regards, saludos.