FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour RIBBONBAR GROUP Resize ?
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
RIBBONBAR GROUP Resize ?
Posted: Sun Feb 22, 2015 08:39 PM

Hi all

How to resize GROUP of RibbonBar when group is focused od some button of the group is pressed ?
On some ITEMS of RibbonBar i have more groups than can be showed so resizing can help

Best regards,

Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Thu Feb 26, 2015 08:33 AM

Anyone ?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: RIBBONBAR GROUP Resize ?
Posted: Fri Feb 27, 2015 07:59 AM

Could you provide a screenshot ? thanks

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sat Feb 28, 2015 02:48 PM
This is my original ribbon bar

I want to make it like this ... only first part of the group to be visible

But i need to resize GROUP when focused


Best regards,
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 02:11 AM
Hello

try this way

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "ribbon.ch"

function main()
  local oRBar, oLastG
  local oWnd, oGr1, oGr2
  DEFINE WINDOW oWnd TITLE "RibbonBar Test " + FWVERSION from 1,1 to 600,600 pixel //brush oBrush1
   
  DEFINE RIBBONBAR oRBar WINDOW oWnd PROMPT "Config", "Files"  HEIGHT 133 TOPMARGIN 25

  ADD GROUP oGr1 RIBBON oRBar TO OPTION 1 PROMPT "Clipboard" width 60
  oGr1:Cargo = { "STRETCH" => 215, "NORMAL" => 60}
  ADD GROUP oGr2 RIBBON oRBar TO OPTION 1 PROMPT "Font" width 60
  oGr2:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  oRBar:aDialogs[1]:bMMoved = {|| 
    local oControl
    for each oControl in oRBar:aDialogs[1]:aControls
      if oControl:isKindof( "TRBGROUP")
        if oControl:nWidth == oControl:Cargo["STRETCH"] .AND. ! oControl:lMOver
          oControl:SetSize( oControl:Cargo["NORMAL"], oControl:nHeight )
        endif
      endif 
    next 
    oRBar:Refresh()
    return 0
    }

  oGr1:bMMoved = BuildCodeBlockMMoved( oGr1 )

  oGr2:bMMoved = BuildCodeBlockMMoved( oGr2 )

  ACTIVATE WINDOW oWnd MAXIMIZED
   
  oRBar:End()
   
return nil

function BuildCodeBlockMMoved( oGroup )
return {| nRow, nCol|
    Eval( oGroup:oRB:aDialogs[1]:bMMoved )
    oGroup:MouseHover(nRow, nCol)
    if oGroup:nWidth != oGroup:Cargo["STRETCH"]
       oGroup:setSize( oGroup:Cargo["STRETCH"], oGroup:nHeight)
       oGroup:Refresh()
    endif
    return 0
   }
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:20 PM

Daniel,
Thanks for reply

But this sample dont work.
Check it please ?

ribbon5.prg(17) Error E0020 Incomplete statement or unbalanced delimiters
ribbon5.prg(18) Error E0004 LOCAL declaration follows executable statement
ribbon5.prg(28) Error E0030 Syntax error: "syntax error at '}'"
ribbon5.prg(41) Error E0020 Incomplete statement or unbalanced delimiters
ribbon5.prg(43) Warning W0001 Ambiguous reference: 'NROW'
ribbon5.prg(43) Warning W0001 Ambiguous reference: 'NCOL'
ribbon5.prg(49) Error E0030 Syntax error: "syntax error at '}'"

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:29 PM

I've compiled and works perfectly.

regards

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:37 PM

Hello

what compiler are you using?

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:39 PM

Avista

try to move the conde inside the oRBar:aDialogs[1]:bMMoved to a funcion

oRBar:aDialogs[1]:bMMoved = {|| myFunction( oRB ) } //example

Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:42 PM

I use

xHarbour 1.2.3 Intl. (SimpLex) (Build 20141124)
fwh 14.12

Regards,

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 06:45 PM

I guess he is using xHarbour which does not accept { | | .. } for multiline codeblocks. He should replace with < |nRow,nCol| and end with > in the last line.

Regards



G. N. Rao.

Hyderabad, India
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Sun Mar 01, 2015 09:12 PM
Mr Rao
Thanks this sample working good with your sugestion compiled with xHarbour.
Mr Daniel
Thanks for nice idea.

That is realluy what i need (and others i think)
But unfortunatly dont working good. :-)



Please compile this sample and see the results.

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "ribbon.ch"

function main()
  local oRBar, oLastG
  local oWnd, oGr1, oGr2, oGr3, oGr4, oGr5, oGr6, oGr7, oGr8, oGr9
  local oBtn
  DEFINE WINDOW oWnd TITLE "RibbonBar Test " + FWVERSION from 1,1 to 600,600 pixel //brush oBrush1

  DEFINE RIBBONBAR oRBar WINDOW oWnd ;
         PROMPT "Test1", "Test2"     ;
         HEIGHT 133 TOPMARGIN 25

  ADD GROUP oGr1 RIBBON oRBar TO OPTION 1 PROMPT "Group1" width 60
  oGr1:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr2 RIBBON oRBar TO OPTION 1 PROMPT "Group2" width 60
  oGr2:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr3 RIBBON oRBar TO OPTION 1 PROMPT "Group3" width 60
  oGr3:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr4 RIBBON oRBar TO OPTION 1 PROMPT "Group4" width 60
  oGr4:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr5 RIBBON oRBar TO OPTION 1 PROMPT "Group5" width 60
  oGr5:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr6 RIBBON oRBar TO OPTION 1 PROMPT "Group6" width 60
  oGr6:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr7 RIBBON oRBar TO OPTION 1 PROMPT "Group7" width 60
  oGr7:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr8 RIBBON oRBar TO OPTION 1 PROMPT "Group8" width 60
  oGr8:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  ADD GROUP oGr9 RIBBON oRBar TO OPTION 1 PROMPT "Group9" width 60
  oGr9:Cargo = { "STRETCH" => 215, "NORMAL" => 60}

  oRBar:aDialogs[1]:bMMoved = <||
    local oControl
    for each oControl in oRBar:aDialogs[1]:aControls
      if oControl:isKindof( "TRBGROUP")
        if oControl:nWidth == oControl:Cargo["STRETCH"] .AND. ! oControl:lMOver
          oControl:SetSize( oControl:Cargo["NORMAL"], oControl:nHeight )
        endif
      endif
    next
    oRBar:Refresh()
    return 0
    >

  oGr1:bMMoved = BuildCodeBlockMMoved( oGr1 )
  oGr2:bMMoved = BuildCodeBlockMMoved( oGr2 )
  oGr3:bMMoved = BuildCodeBlockMMoved( oGr3 )
  oGr4:bMMoved = BuildCodeBlockMMoved( oGr4 )
  oGr5:bMMoved = BuildCodeBlockMMoved( oGr5 )
  oGr6:bMMoved = BuildCodeBlockMMoved( oGr6 )
  oGr7:bMMoved = BuildCodeBlockMMoved( oGr7 )
  oGr8:bMMoved = BuildCodeBlockMMoved( oGr8 )
  oGr9:bMMoved = BuildCodeBlockMMoved( oGr9 )

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users1" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr1 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group1"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr1 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group1"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr1 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group1" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr1 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users2" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr2 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group2"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr2 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group2"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr2 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group2" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr2 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users3" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr3 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group3"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr3 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group3"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr3 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group3" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr3 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users4" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr4 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group4"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr4 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group4"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr4 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group4" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr4 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users5" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr5 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group5"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr5 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group5"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr5 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group5" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr5 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users6" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr6 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group6"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr6 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group6"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr6 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group6" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr6 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users7" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr7 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group7"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr7 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group7"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr7 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group7" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr7 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users8" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr8 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group8"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr8 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group8"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr8 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group8" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr8 MOSTLEFT ROUND SIZE 135,20

  @ 10, 5 ADD BUTTON oBtn PROMPT "Users9" BITMAP "..\bitmaps\users.bmp" ;
          GROUP oGr9 SPLITPOPUP ROUND SIZE 50,65
  @ 10,65 ADD BUTTON oBtn PROMPT "Add user Group9"    BITMAP "..\bitmaps\addrec.bmp";
          GROUP oGr9 MOSTLEFT ROUND SIZE 135,20
  @ 30,65 ADD BUTTON oBtn PROMPT "Edit user Group9"   BITMAP "..\bitmaps\edit.bmp"  ;
          GROUP oGr9 MOSTLEFT ROUND SIZE 135,20
  @ 50,65 ADD BUTTON oBtn PROMPT "Remove user Group9" BITMAP "..\bitmaps\delrec.bmp";
          GROUP oGr9 MOSTLEFT ROUND SIZE 135,20

  ACTIVATE WINDOW oWnd MAXIMIZED

  oRBar:End()

return nil

function BuildCodeBlockMMoved( oGroup )
return <| nRow, nCol|
    Eval( oGroup:oRB:aDialogs[1]:bMMoved )
    oGroup:MouseHover(nRow, nCol)
    if oGroup:nWidth != oGroup:Cargo["STRETCH"]
       oGroup:setSize( oGroup:Cargo["STRETCH"], oGroup:nHeight)
       oGroup:Refresh()
    endif
    return 0
   >




This is VERRYyyyyyyy useful behavior and i think it need to be improved and included in RIBBONBAR class.

Best regards,
Mr.Daniel, Mr.Rao, Mr.Antonio

And i Please for working sample.
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Tue Mar 03, 2015 09:49 PM

Mr. Daniel, Rao, Antonio ...
Please try sample and give me some sugestions
Regards,

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: RIBBONBAR GROUP Resize ?
Posted: Tue Mar 03, 2015 11:48 PM

hello

sorry, it's no easy... seeking one solution for your requested

Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Re: RIBBONBAR GROUP Resize ?
Posted: Fri Mar 06, 2015 09:38 AM
Some sugestions ? :-)
I need this behavior
and i still think that this behavior need to be improved and included in RIBBONBAR class

/*----------------------------------------------------------------------------//
//GROUP
------------------------------------------------------------------------------*/
#xcommand ADD GROUP [ <oGr> ] ;
[ <of: RIBBONBAR, RIBBON > <oRBar> ];
[ <to: TO OPTION, TO> <nOption> ];
[ PROMPT <cCaption> ];
[ WIDTH <nWidth> ];
[ ONFOCUSWIDTH <nWidthF> ]; // ????
[ ACTION <uAction> ] ;
[ BITMAP <cBitmap> ] ;
[ GRADIANT <aGradSel> ];
=>;
[ <oGr> := ] <oRBar>:AddGroup( <nWidth>, <nWidthF>, <cCaption>, <nOption>,;
[{|Self|<uAction>}], <cBitmap>, <aGradSel> )

Best regards,