Hola Antonio:
Me es muy difícil en este momento ya que como no sabia como solucionarlo quite las dos BUTTONBAR y sus botones y lo estoy sustituyendo por RIBBONBAR.
Pero era muy sencillo de recrear era en una ventana inical con un menú y se creaba la BUTTONBAR
Pongamos:
Code: Select all | Expand
DEFINE WINDOW oVentPrinc MDI FROM 0, 0 TO 24,80;
COLORS escri1, RGB (100, 10, 10);
ICON "FyVWin.ico"
SET FONT OF oVentPrinc TO oFont
SET MESSAGE OF oVentPrinc TO LocaText( 1, 1,837) KEYBOARD CLOCK DATE 2007
oVentPrinc:oMenu:End()
ACTIVATE WINDOW oVentPrinc MAXIMIZED ON INIT pintboto() VALID ! GetKeyState (VK_ESCAPE)
En un principio quito el menú y ejecuto "PintBoto" para colocar las cosas en un orden y no este saltando en la pantalla las cosas
Code: Select all | Expand
PROCEDURE pintboto()
oVentPrinc:SetMenu(MenuPrin())
if ! empty (oBar)
oVentPrinc:oBar:End()
endif
if ! empty (oDlgwDat)
oDlgwDat:End()
endif
DEFINE BUTTONBAR oBar OF oVentPrinc PIXEL SIZE 80,80 2010
DEFINE BUTTON ...
DEFINE BUTTON ...
pintabaj()
oBar:SetFocus()
RETURN( NIL )
Todas las opciones del Menu llaman una función con dos variables Menu y Submenú para ejecuar lo deseado y antes poder poner la pantalla como quiero
Code: Select all | Expand
Procedure OpciMenu(men,sumen,xOpc)
menu = men
submenu = sumen
oDlgwDat:End()
aquí va una de estas dos lineas
oBar:End()
oVentPrinc:oBar:End()
oVentPrinc:oMenu:End()
oVentPrinc:SetFocus()
oVentPrinc:Refresh()
if xOpc = 1
oBar:nheight:=20
DatoSele(0)
else
oBar:nheight:=50
endif
do case
case menu = 1
gestempr()
...
Y una vez entrado en GestEmpr creaba una MDICHILD para su gestión y otra BUTTONBAR de la ventana principal y es aquí cuando se ponía la letra mal o no. Incluso después cuando volvia a la pantalla principal estaba mal la letra.
Mas o menos es así espero que sirva.
Un saludo
Carlos