FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour To Nages: Proposal for implementation
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
To Nages: Proposal for implementation
Posted: Sun May 12, 2013 08:50 AM
On Delphi Browse ( Like xbrowse) I saw there is the possibility to show a buttonBar on the topo of Browse, With some utilities and navigation commands, it can be activate from user or not on window and on dialog
When the user wish show the buttonbar the browse change the initial sizes :

I show you the features :

When I open the browse I can select to show or to not show the buttonbar




I f I select to not show the buttonbat it calculate the resize of xbrowse






I wish to implement this but I not Know How make it

I made a test
Code (fw): Select all Collapse
 

#include 'fivewin.ch'
#include 'xbrowse.ch'


static lToolbar:=.f.

function Main()

   local oDlg, oBrw, oFont

   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )


   USE C:\WORK\FWH\SAMPLES\CUSTOMER  ALIAS CUST


   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -14

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Change Size'


   @ 10,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   oBrw:bRCLicked := {|nRow,nCol| MenuOption(oDlg,nRow,nCol,"CUST",oBrw) }


   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

return nil






Function MenuOption(oDlg,nRow,nCol,cDbf,oGrid)
LOCAL oMenu 

MENU oMenu POPUP 2007
           SEPARATOR
           MENUITEM "Show ToolBar" ACTION (ChangeSize(oGrid,ltoolBar),oGrid:refresh())
           SEPARATOR

          ENDMENU


          ACTIVATE POPUP oMenu OF oDlg AT  oGrid:nTop+nRow, oGrid:nLeft+nCol


RETURN (NIL)






Function ChangeSize(oGrid,ltoolBar)

nOldTop:= oGrid:ntop
nOldBottom:=oGrid:nBottom

    If ltoolBar
         CreateToolBar( oGrid,oDlg,ltoolBar)
         oGrid:nTop:= nOldTop -40
         oGrid:nHeight:=oGrid:nBottom -40
       Else
         oGrid:nTop:=nOldTop +40
         oGrid:nHeight:=oGrid:nBottom +40

    Endif
Retur nil







Function CreateToolBar( oGrid,oDlg,ltoolBar)
   Local oExit
   If ltoolBar
DEFINE BUTTONBAR oBar  SIZE 40, 46 OF oDlg  2007
 oBar:bRClicked := { || .t. }


  DEFINE BUTTON OF oBar ;
      RESOURCE "RB_CLIENTI"       ;
      TOOLTIP i18n( "Gestión de documentos" ) ;
      MESSAGE i18n( "Gestión de del fichero de documentos." ) ;
      ACTION NIL  ;
      NOBORDER


   DEFINE BUTTON oExit OF oBar  ;
      RESOURCE "BB_EXIT"      ;
      TOOLTIP i18n( "Salir del programa" ) ;
      MESSAGE i18n( "Finalizar el uso del programa." ) ;
      ACTION odlg:End()  ;
      GROUP NOBORDER



ELSE

   If oBar!=NIL
      oBar:End()
   Endif

ENDIF


     oDlg:refresh()

return nil
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 07:53 AM
I made another test

It run ok - I wish implement this directly on Xbrowse as a class or methods



Code (fw): Select all Collapse
 

#include 'fivewin.ch'
#include 'xbrowse.ch'


static lToolbar:=.t.
static oDlg, oBrw, oFont,oBar

function Main()



   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )


   USE C:\WORK\FWH\SAMPLES\CUSTOMER  ALIAS CUST


   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -14

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Change Size'


   @ 10,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   oBrw:bRCLicked := {|nRow,nCol| MenuOption(oDlg,nRow,nCol,"CUST",oBrw) }


   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED ;
               ON INIT ChangeSize( oBrw,ltoolBar)

   RELEASE FONT oFont

return nil






Function MenuOption(oDlg,nRow,nCol,cDbf,oGrid)
LOCAL oMenu

MENU oMenu POPUP 2007
           SEPARATOR
           MENUITEM "Show ToolBar";
           WHEN { |o| o:SetCheck( ltoolBar ), .t. } ;
           ACTION ( ltoolBar :=!ltoolBar,;
                   ChangeSize(oGrid,ltoolBar,oBar),oGrid:refresh(),;
                   oMenuItem:SetCheck( ltoolBar ))
           SEPARATOR

          ENDMENU


          ACTIVATE POPUP oMenu OF oDlg AT  oGrid:nTop+nRow, oGrid:nLeft+nCol


RETURN (NIL)






Function ChangeSize(oGrid,ltoolBar,oBar)

nOldTop:= oGrid:ntop
nOldBottom:=oGrid:nBottom

    If ltoolBar
         CreateToolBar( oGrid,oDlg,ltoolBar)
         oGrid:nTop:= nOldTop +40
         oGrid:nHeight:=oGrid:nBottom+40
      Else

          If oBar!=NIL
            oBar:End()
           Endif

         oGrid:nTop:=nOldTop -40
         oGrid:nHeight:=oGrid:nBottom -40

      Endif

      oGrid:refresh()
Retur nil







Function CreateToolBar( oGrid,oDlg,ltoolBar)
   Local oExit

   local nClrText := CLR_BLACK

   * oFont = TFont():New( GetDefaultFontName(), 0, GetDefaultFontHeight(),, )

   If ltoolBar

   DEFINE BUTTONBAR oBar _3D SIZE 33, 33 OFoDlg


        ELSE

   If oBar!=NIL
      oBar:End()
   Endif

    ENDIF




     oDlg:refresh()

return nil
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 08:24 AM
For First We must create a Class to create a control Like buttonBar to insert on the top of the xbrowse because buttonbar or toolbar can be create in the dialog or on the wnd and not on top of the object xbrowse

So, I thinked to create this

Function CreateToolBar( oGrid,oDlg,ltoolBar)
Local oExit,oItem1
local nClrText := CLR_BLACK
Local nHeightBar:=20
If ltoolBar
oBar := TMyControl():New( oGrid:nTop+(nHeightBar-2),oGrid:nLeft, oDlg, , CLR_RED, RGB( 191, 219, 255 ), .t., , oGrid:nwidth, nHeightBar,, )
ELSE
If oBar!=NIL
oBar:End()
Endif
ENDIF
oDlg:refresh()
return nil


TMyControl class I copied TMyControl Antonio's class sample from Plantillas section of this forum
Code (fw): Select all Collapse
 //----------------------------------------------------------------------------//

    CLASS TMyControl FROM TControl

       CLASSDATA lRegistered AS LOGICAL

       METHOD New( nTop, nLeft, oWnd, nPos, nClrFore,;
                   nClrBack, lPixel, lDesign, nWidth, nHeight,;
                   cMsg, lVertical ) CONSTRUCTOR

       METHOD ReDefine( nId, oWnd ) CONSTRUCTOR

    ENDCLASS

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

    METHOD New( nTop, nLeft, oWnd, nPos, nClrFore, nClrBack, lPixel,;
                lDesign, nWidth, nHeight, cMsg, lVertical ) CLASS TMyControl

       DEFAULT nTop     := 0, nLeft := 0,;
               oWnd     := GetWndDefault(),;
               nClrFore := oWnd:nClrText,;
               nClrBack := GetSysColor( COLOR_BTNFACE ),;
               lPixel   := .f.,;
               lDesign  := .f.,;
               nWidth   := 200, nHeight := 21,;
               lVertical := .f.

       ::nStyle    = nOR( WS_CHILD, WS_VISIBLE, WS_TABSTOP )
       ::nId       = ::GetNewId()
       ::oWnd      = oWnd
       ::cMsg      = cMsg
       ::nTop      = If( lPixel, nTop, nTop * SAY_CHARPIX_H )
       ::nLeft     = If( lPixel, nLeft, nLeft * SAY_CHARPIX_W )
       ::nBottom   = ::nTop + nHeight - 1
       ::nRight    = ::nLeft + nWidth - 1
       ::lDrag     = lDesign
       ::lCaptured = .f.
       ::nClrText  = nClrFore
       ::nClrPane  = nClrBack

       ::Register()

       if ! Empty( oWnd:hWnd )
          ::Create()
          ::Default()
          oWnd:AddControl( Self )
       else
          oWnd:DefControl( Self )
       endif

       if lDesign
          ::CheckDots()
       endif

    return Self

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

    METHOD ReDefine( nId, oWnd ) CLASS TMyControl

       DEFAULT oWnd := GetWndDefault()

       ::nId  = nId
       ::oWnd = oWnd

       ::Register()

       oWnd:DefControl( Self )

    return Self

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




this is the result but we must create the possibility to insert buttons

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 08:46 AM
I insert another method METHOD AddItem(cPrompt, bAction, cBitmap)






[code]
METHOD AddItem(cPrompt, bAction, cBitmap) CLASS TMyControl
local oItem
local nPos


oItem =TBtnBmp():New( 1, 1,, ::nHeight-4,,, cBitmap, cBitmap,bAction, self, cPrompt )


* AAdd( ::aItems, oItem )

return nil[code]
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 09:17 AM

Silvio,

We can have any control on top of a browse, or at its sides, no limits...

Thats why I see no reason to implement what you described. Why should we behave like that ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 09:24 AM

Antonio, cannot we create buttonbar or toolbar on top of xbrowse ?
can make a tet sample please?

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 09:32 AM

Antonio,
Sorry....I saw now we can !!!

   oBar:= TBar():New(oDlg)
   oBar:ntop := oGrid:nTop+(nHeightBar-2)
   oBar:nLeft:= oGrid:nLeft
   oBar:nwidth :=oGrid:nwidth
   oBar:nbottom:= nHeightBar

ok we have resolve this!!

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 09:42 AM


oBar:= TBar():New(oDlg)
oBar:ntop := oGrid:nTop+8
oBar:= oGrid:nLeft
oBar:nwidth :=oGrid:nwidth
oBar:= nHeightBar
oBar:l2010 :=.t.
oBar:l3D :=.t.
oBar:nMode :=1




Antonio,
Good ...but how I can to erase Black border of Bar?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 03:50 PM
Silvio,

For First We must create a Class to create a control Like buttonBar to insert on the top of the xbrowse because buttonbar or toolbar can be create in the dialog or on the wnd and not on top of the object xbrowse


Why does it matter? It looks the same and works the same, so what difference does it make?

Regards,
James
FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 04:40 PM

the matter.. was... I thinked it cannot be made but now I tried and I can insert a buttonbar on top of xbrowse

the new matter is I cannot insert a toolBar on the top of the xbrowse as a buttonbar or you have a idea ?

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 06:11 PM

>the matter.. was... I thinked it cannot be made but now I tried and I can insert a buttonbar on top of xbrowse

What do you mean by "top of xBrowse." How is this different from putting a buttonbar at the top of the window which also contains the browse?

>the new matter is I cannot insert a toolBar on the top of the xbrowse as a buttonbar or you have a idea ?

I don't understand. Are you saying a toolbar is different than a buttonbar?

You can put a buttonbar at the top of a window, dialog, or panel and put the browse under it. That should work for whatever you are trying to do.

Regards,
James

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 07:29 PM
I understood you not understood

On a Italian application made with Delphi, I saw a Grid as xbrowse ( please see the first message of this topic)

this grid have a toolbar on top ( navigation and other utilities)

the user can select a menupop up to hide or show the toolbar

I thinked it made as you understood ... a toolbar on the dialog on top or on bottom of the dialog

but then I understood it not made in this easy types because I saw on the same application a procedure where I can see a grid with the same toolbar on different position of the dialog :



On a folder







on Middle position on the dialog, after some other controls






So, I thinked , it perhaps was made on the top of xbrowse


So, I tried before with a buttonbar , then with toolbar

while I can set the position of buttonbar in any position of the dialog ... I cannot made it with toolbar !!!!

I hope you understood my problem now

How I can make it with fwh ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: To Nages: Proposal for implementation
Posted: Mon May 13, 2013 08:11 PM
So, I tried before with a buttonbar , then with toolbar
while I can set the position of buttonbar in any position of the dialog ... I cannot made it with toolbar !!!!


Sorry, I didn't know until now there was a new control called "toolbar." I thought you were talking about the original buttonbar.

How is the toolbar different from the buttonbar?

Regards,
James
FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: To Nages: Proposal for implementation
Posted: Tue May 14, 2013 06:59 AM
yes,
I believe ToolBar is more good than buttonbar
the problem is I not Know how create toolbar at x,y

to make a toolbar you must create before the imagelist ( a type of library of all images of buttons)

then you can create your toolbar

a small test
#define LIGHTCYAN nRGB( 203, 225, 252 )

function Main()
....DEFINE DIALOG..oDlgLook.

nColore_ToolBar := LIGHTCYAN
Create_ImageList(nColore_ToolBar)

....ACTIVATE DIALOG oDlgLook CENTER;
ON INIT BtnBarLook(oImageList)
RETUR NIL

//---------------------------------------------------------------------------------//
Function Create_ImageList(nColore_ToolBar)

DEFINE IMAGELIST oImageList SIZE 16,16
oImageList:AddMasked( TBitmap():Define( "LOOK_TOP",, oDlgLook ), nColore_ToolBar )
oImageList:AddMasked( TBitmap():Define( "LOOK_PREV",, oDlgLook ), nColore_ToolBar )
oImageList:AddMasked( TBitmap():Define( "LOOK_NEXT",, oDlgLook ), nColore_ToolBar )
oImageList:AddMasked( TBitmap():Define( "LOOK_BOTTOM",, oDlgLook ), nColore_ToolBar )
RETURN oImageList
//--------------------------------------------------------------------------------------//


Function BtnBarLook(oImageList)

oReBar := TReBar():New( oDlgLook )

DEFINE TOOLBAR oBar OF oReBar SIZE 22,22 IMAGELIST oImageList

DEFINE TBBUTTON OF oBar ;
ACTION oBrwLook:KeyDown(VK_HOME, 0) ;
TOOLTIP i18n( "Primo record" ) ;
MESSAGE i18n( "Primo record dell'elenco." )


.....

RETURN NIL
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: To Nages: Proposal for implementation
Posted: Tue May 14, 2013 06:52 PM

Silvio,

I am still not clear what you want to do. Do you want to be able to allow the user to show and hide the toolbar? If so,

oWnd:oTop:= oToolbar
oWnd:oClient:= oBrowse
ACTIVATE WINDOW oWnd

Then to hide the toolbar:
oWnd:oTop:=nil
oWnd:resize()

Or to show the toolbar
oWin:oTop:= oToolbar
oWnd:resize()

Not tested, but I think that will work.

Regards,
James

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10