Problema con RIBBONBAR

Problema con RIBBONBAR

Postby colthop » Mon May 04, 2015 12:03 pm

Hola a todos:

Tengo una aplicación que la estoy poniendo unas RIBBONBAR Y cuando entra el menú principal lo hace correcamente:

Image

Pero cuando entra en una opción tiene que presentar otra RIBBONBAR pero la presenta así:

Image

Después de cambiar retocar y hacer multitud de cosas por error minimice la aplicación y al maximizarla mi sorpresa fue que la presentaba bien:

Image

También al salir al menú presentaba la RIBBONBAR que antes hacia bien ahora así:

Image

y Al minimizar y maximizar volvia a presentarla como al principio.

Image

Podéis ayudarme, como hacer que muestre bien la RIBBONBAR sin necesidad de minimizar y maximizar. He probado con SysRefresh() oWnd:Refresh() y con unas cuantas cosas más pero no consigo dar en el clavo.

Un saludo y gracias

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby colthop » Mon May 04, 2015 1:58 pm

Hola de nuevo:

Siguiendo investigando si pulso la flechita que aparece muestra el menú como si fuera otra ventana así:

Image

Las RIBBONBAR las creo así:

Menu Principal:

Code: Select all  Expand view
DEFINE RIBBONBAR oRBar WINDOW oVentPrinc HEIGHT 95*ProporV TOPMARGIN 0 2010
ADD GROUP oGrupos RIBBON oRBar to OPTION 1 width 1280
@  5,  5 ADD BUTTON xPul01 PROMPT LocaText( 1, 1,836) BITMAP xruta + "user.bmp" GROUP oGrupos ACTION OpciMenu(0,1,0)   FONT oFon01 ROUND SIZE 80,75
@  5, 85 ADD BUTTON xPul02 PROMPT LocaText( 1, 1,646) BITMAP xruta + "peen.bmp" GROUP oGrupos ACTION OpciMenu(1,1,70)  FONT oFon01 ROUND SIZE 80,75
@  5,165 ADD BUTTON xPul03 PROMPT LocaText( 1, 1,162) BITMAP xruta + "conc.bmp" GROUP oGrupos ACTION OpciMenu(2,5,70)  FONT oFon01 ROUND SIZE 80,75
@  5,245 ADD BUTTON xPul04 PROMPT LocaText( 1, 1,140) BITMAP xruta + "pers.bmp" GROUP oGrupos ACTION OpciMenu(2,8,70)  FONT oFon01 ROUND SIZE 80,75
@  5,325 ADD BUTTON xPul05 PROMPT LocaText( 1, 1, 39) BITMAP xruta + "alba.bmp" GROUP oGrupos ACTION OpciMenu(3,2,70)  FONT oFon01 ROUND SIZE 80,75
@  5,405 ADD BUTTON xPul06 PROMPT LocaText( 1, 1,283) BITMAP xruta + "fact.bmp" GROUP oGrupos ACTION OpciMenu(3,3,70)  FONT oFon01 ROUND SIZE 80,75
@  5,485 ADD BUTTON xPul07 PROMPT LocaText( 1, 1,151) BITMAP xruta + "come.bmp" GROUP oGrupos ACTION OpciMenu(3,4,70)  FONT oFon01 ROUND SIZE 80,75
@  5,565 ADD BUTTON xPul08 PROMPT LocaText( 1, 1,671) BITMAP xruta + "pers.bmp" GROUP oGrupos ACTION OpciMenu(2,7,70)  FONT oFon01 ROUND SIZE 80,75
@  5,645 ADD BUTTON xPul09 PROMPT LocaText( 1, 1,280) BITMAP xruta + "fact.bmp" GROUP oGrupos ACTION OpciMenu(3,10,70) FONT oFon01 ROUND SIZE 80,75
@  5,725 ADD BUTTON xPul10 PROMPT LocaText( 1, 1,736) BITMAP xruta + "exit.bmp" GROUP oGrupos ACTION OpciMenu(1,9,0)   FONT oFon01 ROUND SIZE 80,75


La siguiente

Code: Select all  Expand view
DEFINE RIBBONBAR oRBar WINDOW oVentPrinc HEIGHT 70*ProporV TOPMARGIN 0 2010
ADD GROUP oGrupo RIBBON oRBar to OPTION 1 width 1280
@  5,  5 ADD BUTTON xPul01 PROMPT LocaText( 2, 1,  8) BITMAP xruta + "alta.bmp" GROUP oGrupo ACTION AltaEmpr(1) FONT oFon01 ROUND SIZE 80,50
@  5, 85 ADD BUTTON xPul02 PROMPT LocaText( 2, 1,  9) BITMAP xruta + "baja.bmp" GROUP oGrupo ACTION BajaEmpr()  FONT oFon01 ROUND SIZE 80,50
@  5,165 ADD BUTTON xPul03 PROMPT LocaText( 2, 1, 40) BITMAP xruta + "modi.bmp" GROUP oGrupo ACTION ModiEmpr()  FONT oFon01 ROUND SIZE 80,50
@  5,245 ADD BUTTON xPul04 PROMPT LocaText( 2, 1, 37) BITMAP xruta + "list.bmp" GROUP oGrupo ACTION ListEmpr()  FONT oFon01 ROUND SIZE 80,50
@  5,325 ADD BUTTON xPul05 PROMPT LocaText( 2, 1,108) BITMAP xruta + "sele.bmp" GROUP oGrupo ACTION SeleEmpr()  FONT oFon01 ROUND SIZE 80,50
@  5,405 ADD BUTTON xPul06 PROMPT LocaText( 2, 1, 15) BITMAP xruta + "move.bmp" GROUP oGrupo ACTION MoveEmpr()  FONT oFon01 ROUND SIZE 80,50
@  5,485 ADD BUTTON xPul07 PROMPT LocaText( 2, 1, 59) BITMAP xruta + "sali.bmp" GROUP oGrupo ACTION SaliEmpr()  FONT oFon01 ROUND SIZE 80,50


Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby Antonio Linares » Mon May 04, 2015 8:23 pm

Carlos,

Y cómo cambias de una a otra ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con RIBBONBAR

Postby colthop » Mon May 04, 2015 8:59 pm

Hola Antonio:

La primera esta en el menú principal y la segunda hace de menú de las distintas gestiones.

En un principio quitaba la oRBar con un oRBar:End() y cuando entraba en la siguiente opción creaba la segunda. Pero llevo toda la tarde y ahora en vez de quitar la oRBar lo que hago es quitar el oGrupos con oGrupos:End() y creo solo desde el ADD GROUP y ya presenta bien todo.

Lo que me pasa ahora es que hay opciones que no tienen menú y las que lo tienen la oRBar es mas estrecha pasa de 80 a 70 para dar mas ventana a las opciones y por eso tengo que cambiar el tamaño de la oRBar y lo hago con :

oRBar:nHeight(80)
oRBar:nHeight:=80

No se cual es la mas correcta, pero esto lo que hace es que cuando regresa al menú principal solo selecciona la franja del anterior cambio de tamaño. Me explico si puedo, en el menú tiene un alto de 80 y selecciona desde el primero al último el 80 pero le envio a una gestión con opciones y estas tienen 70 aquí selecciona de la 1 a la 70 de alto correcto pero cuando vuelve en el menú principal pese a que la presentación es correcta se ven los 80 solo selecciona cuando pasas el ratón por encima desde el 1 al 70 y si entra en una opción sin menú esta va a 0 y en ella si funciona pero cuando vuelve al menú principal pese a que se ve todo no selecciona nada ya que la anterior era 0. Sin embargo cuando pasamos desde aquí desde 0 en el menú principal a una opción de gestión si lo hace correcto y selecciona los 70 que tiene.

El cambio de altura es correcto como lo hago es como la segunda línea.

Si puedes comentame algo.

Gracias

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby colthop » Mon May 04, 2015 9:42 pm

Hola :

Se me olvido comentar que cuando minimizas y después maximizas se arregla ese efecto también.

Un saludo.

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby colthop » Mon May 04, 2015 10:02 pm

Hola:

Todavía no se porque pasa pero ya he solucionado el tema prácticamente y no teóricamente, me explico ya me funciona bien las selecciones y los botones lo he solucionado pintando primero la RIBBONBAR y después el MENU. Lo que parece es que no refresca bien ya que si minimizamos y maximizamos siempre se arregla.

No obstante si me podéis decir porque no funciona correctamente me dejaríais mas tranquilo.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby colthop » Tue May 05, 2015 6:01 am

Hola a todos:

Ya creo porque puede estar haciendo este efecto y es por lo que sigue:

Básicamente es por cambiar el tamaño de la RIBBON con la instrucción oBRar:nHeight(x) ya que los efectos que se consigue es que no actualiza el punto donde esta el origen de pintado de la ventana y por eso cuando pongo la instrucción antes del pintado del menú o del pintado de la misma RIBBON funciona correctamente ya que estas clases actualizan ese origen de pintado, lo mismo cuando después de minimizar se maximiza. Por favor Antonio u otro gran Master podríais indicarme si este razonamiento es correcto y si es así podríais indicarme cual es la variable o como actualizar al nuevo valor desde código.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby Antonio Linares » Tue May 05, 2015 8:37 am

Carlos,

La forma correcta sería hacer oRBar:End() y crear una nueva RibbonBar.

No entiendo por que no te funciona asi.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con RIBBONBAR

Postby colthop » Tue May 05, 2015 12:38 pm

Hola Antonio:

Yo también creo que se tendría que hacer así pero el resultado no es el correcto me explico:

Código que se ejecuta cuando pulso el botón "Salir" y DatoSele(0) crea una ventana en la posición 0,0 de la ventana principal:

Code: Select all  Expand view
Procedure OpciMenu(men,sumen,xOp)
xOpc    = xOp
menu    = men
submenu = sumen
msginfo(1)
oDlgwDat:End()
* oRBar:nHeight:=(xOpc)*ProporV
* oGrupos:End()
msginfo(2)
oRBar:End()
msginfo(3)
oVentPrinc:oMenu:End()
msginfo(4)
if xOpc = 0
  DatoSele(0)
msginfo(5)
endif
oVentPrinc:SetFocus()
oVentPrinc:Refresh()


A cada MsgInfo corresponde a una imagen de las que sigue:

Image
Image
Image
Image
Image

y si terminara así seria lo deseado, pero si quito los MsgInfo termina la siguente forma, si te das cuenta la posición 0,0 está donde terminaba la RIBBON:

Image

y quitando uno a uno cuando quito el 4 aparece ya así:

Image

Es por lo que te decía que debe dejar alguna variable por actualizar.

He seguido trasteando para ver si daba con alguna solución y he puesto un SysRefresh() después de quitar la RIBBON así

Code: Select all  Expand view
Procedure OpciMenu(men,sumen,xOp)
xOpc    = xOp
menu    = men
submenu = sumen
oDlgwDat:End()
* oRBar:nHeight:=(xOpc)*ProporV
* oGrupos:End()
oRBar:End()
SysRefresh()
oVentPrinc:oMenu:End()
if xOpc = 0
  DatoSele(0)
msginfo(5)
endif
oVentPrinc:SetFocus()
oVentPrinc:Refresh()


Y parece que si lo soluciona. Pero no se tendría que poner nada para que funcionara.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby colthop » Tue May 05, 2015 1:21 pm

Hola de Nuevo:

He implementado el otro menú con la segunda RIBBON de la siguiente manera :

Code: Select all  Expand view
Procedure OpciMenu(men,sumen,xOp)
xOpc    = xOp
menu    = men
submenu = sumen
oDlgwDat:End()
* oRBar:nHeight:=(xOpc)*ProporV
* oGrupos:End()

oRBar:End()
SysRefresh()

oVentPrinc:oMenu:End()
if xOpc = 0
  DatoSele(0)
else
  DEFINE RIBBONBAR oRBar WINDOW oVentPrinc HEIGHT 60*ProporV TOPMARGIN 0 2013
  ADD GROUP oGrupos RIBBON oRBar to OPTION 1 width 1280
  @  2*ProporV,  5*ProporH ADD BUTTON xPul01 PROMPT LocaText( 2, 1,  8) BITMAP xruta + "alta.bmp" GROUP oGrupos ACTION AltaEmpr(1) FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV, 85*ProporH ADD BUTTON xPul02 PROMPT LocaText( 2, 1,  9) BITMAP xruta + "baja.bmp" GROUP oGrupos ACTION BajaEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV,165*ProporH ADD BUTTON xPul03 PROMPT LocaText( 2, 1, 40) BITMAP xruta + "modi.bmp" GROUP oGrupos ACTION ModiEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV,245*ProporH ADD BUTTON xPul04 PROMPT LocaText( 2, 1, 37) BITMAP xruta + "list.bmp" GROUP oGrupos ACTION ListEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV,325*ProporH ADD BUTTON xPul05 PROMPT LocaText( 2, 1,108) BITMAP xruta + "sele.bmp" GROUP oGrupos ACTION SeleEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV,405*ProporH ADD BUTTON xPul06 PROMPT LocaText( 2, 1, 15) BITMAP xruta + "move.bmp" GROUP oGrupos ACTION MoveEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  @  2*ProporV,485*ProporH ADD BUTTON xPul07 PROMPT LocaText( 2, 1, 59) BITMAP xruta + "sali.bmp" GROUP oGrupos ACTION SaliEmpr()  FONT oFon01 ROUND SIZE 80*ProporV,50*ProporH
  DatoSele(0)
endif
oVentPrinc:SetFocus()
oVentPrinc:Refresh()


xOp= es para desviar las pantallas con menú y las que no las tiene.

El resultado es horrible:

Image

Un saludo.

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby Antonio Linares » Tue May 05, 2015 2:29 pm

Carlos,

La ventana principal es mdi ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con RIBBONBAR

Postby colthop » Tue May 05, 2015 2:40 pm

Hola Antonio:

Si es MDI.

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: Problema con RIBBONBAR

Postby Antonio Linares » Tue May 05, 2015 2:54 pm

Carlos,

Aqui un ejemplo que parece funcionar bien (no es MDI):

Code: Select all  Expand view
#include "FiveWin.ch"
#include "Ribbon.ch"

function Main()

   local oWnd

   DEFINE WINDOW oWnd

   BuildRibbon( oWnd )

   ACTIVATE WINDOW oWnd ;
      ON CLICK BuildRibbon( oWnd ) 

return nil

function BuildRibbon( oWnd )

   local oRBar, oGrp, oBtn

   DEFINE RIBBONBAR oRBar WINDOW oWnd ;
    PROMPT  "One", "Two", "Three" TOPMARGIN 25

   oRBar:nWidth = oWnd:nWidth

   ADD GROUP oGrp RIBBON oRBar TO OPTION 1 PROMPT "new" ;
    WIDTH 201

   @ 3, 3 ADD BUTTON oBtn PROMPT "new" GROUP oGrp ;
    ACTION oRBar:End() SIZE 80, 83 TOP      

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con RIBBONBAR

Postby Antonio Linares » Tue May 05, 2015 2:57 pm

En el ejemplo añadiendo la claúsula MDI parece funcionar bien:

DEFINE WINDOW oWnd MDI
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con RIBBONBAR

Postby colthop » Tue May 05, 2015 5:15 pm

Hola Antonio:

El ejemplo que tu me has mandado si elimina la RIBBON pero yo no digo que no la elimine sino que cuando la elimina y pintas una ventana en una posición no es correcto, sin hacer nada minimizas y después maximizas lo hace correcto.

He implementado tu ejemplo así:
Code: Select all  Expand view
include "FiveWin.ch"
#include "Ribbon.ch"

function Main()

   PUBLIC oRBar, oGrp, oBtn, oWnd, oWnd1

   DEFINE WINDOW oWnd MDI

   BuildRibbon( oWnd )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON CLICK BuildRibbon( oWnd )

return nil

function BuildRibbon( oWnd )


   DEFINE RIBBONBAR oRBar WINDOW oWnd HEIGHT 80;
    PROMPT  "One", "Two", "Three" TOPMARGIN 25

   oRBar:nWidth = oWnd:nWidth

   ADD GROUP oGrp RIBBON oRBar TO OPTION 1 PROMPT "new" ;
    WIDTH 201

   @ 3, 3 ADD BUTTON oBtn PROMPT "new" GROUP oGrp ;
    ACTION BuildRibbo0() SIZE 80, 83 TOP

return nil

function BuildRibbo0()

   oRBar:End()

   DEFINE WINDOW oWnd1 MDICHILD OF oWnd PIXEL FROM 0,0 TO 25,3500 STYLE nOr(WS_DLGFRAME)
   ACTIVATE WINDOW oWnd1 NORMAL VALID ! GetKeyState (VK_ESCAPE)

   BuildRibbo2( oWnd )

return nil

function BuildRibbo2( oWnd )


   DEFINE RIBBONBAR oRBar WINDOW oWnd HEIGHT 60;
    PROMPT  "UNO", "DOS", "TRES" TOPMARGIN 25

   oRBar:nWidth = oWnd:nWidth

   ADD GROUP oGrp RIBBON oRBar TO OPTION 1 PROMPT "new" ;
    WIDTH 201

   @ 3, 3 ADD BUTTON oBtn PROMPT "new" GROUP oGrp ;
    ACTION oRBar:End() SIZE 60, 63 TOP

return nil


En vez de cerrar la RIBBON cuando pulsas el botón lo que hace es mandarle a otra función que primero elimina la RIBBON y después pinta una ventana en la posición 0,0 y otra RIBBON mas pequeña verás que se queda separada (mas abajo) de la segunda RIBBON sin hacer nada Minimiza la aplicación y maximízala verás como se han juntado. Haz otra cosa quita la segunda RIBBON verás el efecto mas claro, solo pinta la ventana y veras que se queda separada de arriba y minimizando y después maximizando queda pegada arriba. Ese es lo que te comento.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 76 guests