Barra de Botones

Post Reply
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Barra de Botones

Post by colthop »

Hola a Todos:

Como puedo repintar una barra de botones en el menu principal ya que cuando lo hago me la pinta pero es como si estubiera desactivada.

Un saludo

Carlos
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Post by Antonio Linares »

Carlos,

oWnd:oBar:Refresh()

Puedes publicar un pequeño ejemplo de como lo haces y el error que te da ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Post by colthop »

Hola Antonio:

No quiero refrescarla ya que lo que hago es quitarla, y volver a pintarla cuando regrese al menu principal.

Lo que hago es lo siguiente esta es la ventana principal:

DEFINE WINDOW oVentPrinc MDI FROM 0, 0 TO 24,80; // Se define la ventana principal
TITLE "CYEWIN Contabilidad y Estimaciones en WINDOWS"; //T¡tulo de la ventana
COLORS escri01, fondo01;
ICON "cyewin.ico"

SET FONT OF oVentPrinc TO oFont

repintar()

oPre:Show()

ACTIVATE WINDOW oVentPrinc MAXIMIZED

despues en repintar :

PROCEDURE repintar()
oVentPrinc:Setfocus()
if repin = 1
opre:End()
else
repin = 1
endif
public opre
DEFINE WINDOW opre MDICHILD OF oVentPrinc FROM 3,5 TO 9,93 TITLE "Datos de trabajo" color escri01, fondo01 STYLE nOr(WS_DLGFRAME)
@ 7, 10 SAY datt4 var " Persona o Entidad" OF opre PIXEL SIZE 120, 18 COLOR escri01, fondo01
@ 27, 10 SAY datt5 var " Nombre " OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 47, 10 SAY datt6 var " Ejercicio" OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 67, 10 SAY datt8 var " Fecha " OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 7,130 say dat01 var empr OF opre PIXEL SIZE 50, 18 COLOR escri03, fondo02 BORDER CENTER
@ 27, 80 say dat02 var " " + momb OF opre PIXEL SIZE 602, 18 COLOR escri03, fondo02 BORDER
@ 47, 80 say dat02 var ejer OF opre PIXEL SIZE 40, 18 COLOR escri03, fondo02 BORDER CENTER
@ 67, 80 say dat04 var dtoc(datita) OF opre PIXEL SIZE 75, 18 COLOR escri03, fondo02 BORDER CENTER
ACTIVATE WINDOW opre
SET MESSAGE OF oVentPrinc TO empr + " - " + momb + " Ejercicio : " + ejer + " Colt Hop ED., S.L." 2007 CLOCK KEYBOARD
oBarra()
oVentPrinc:SetMenu(PepePrin())
oVentPrinc:Refresh()
SysRefresh()
RETURN (NIL)

La llamada a la barra es oBarra() que es:

FUNCTION oBarra()
DEFINE BUTTONBAR oBar OF oVentPrinc PIXEL _3D SIZE 80,32 2007
@ 1, 0 BTNBMP oBot01 FILE "empresa.bmp" OF oBar WHEN .T. ACTION gestempr() SIZE 80,30 NO BORDER MESSAGE "Gestión de Personas y Entidades"
@ 1, 81 BTNBMP oBot02 FILE "diario.bmp" OF oBar WHEN .T. ACTION gestdiar(1) SIZE 80,30 NO BORDER MESSAGE "Asientos Comunes"
@ 1,162 BTNBMP oBot03 FILE "compras.bmp" OF oBar WHEN .T. ACTION gestfact(6) SIZE 80,30 NO BORDER MESSAGE "Compras y Gastos"
@ 1,243 BTNBMP oBot04 FILE "ventas.bmp" OF oBar WHEN .T. ACTION gestfact(7) SIZE 80,30 NO BORDER MESSAGE "Ventas e Ingresos"
@ 1,324 BTNBMP oBot05 FILE "modulos.bmp" OF oBar WHEN .T. ACTION gestmodu(5) SIZE 80,30 NO BORDER MESSAGE "Cálculo de Módulos"
@ 1,405 BTNBMP oBot06 FILE "regular.bmp" OF oBar WHEN .T. ACTION gestmodu(7) SIZE 80,30 NO BORDER MESSAGE "Cálculo de la Regularización"
@ 1,486 BTNBMP oBot07 FILE "cierres.bmp" OF oBar WHEN .T. ACTION gestcipe() SIZE 80,30 NO BORDER MESSAGE "Cierre Periódico"
@ 1,567 BUTTON oBot08 FILE "salida.bmp" OF oBar WHEN .T. ACTION salida() SIZE 80,30 NO BORDER MESSAGE "Salir"
RETURN (.T.)

y cuando entra en cualquier opcion hago quitmenu()

Procedure quitmenu()
oPre:Hide()
oVentPrinc:oBar:End()
oVentPrinc:oMenu:End()
oVentPrinc:SetFocus()
oVentPrinc:Refresh()
SysRefresh()
RETURN( .T. )

El funcionamiento sería:

Cuando entramos hace la ventana principal que llama a repintar() para poner en la ventana tres cosas, la primera una ventana con el usuario activo, 2 el menu principal y 3 la barra de botones con oBarra().

Cuando entra en una opcion del menu hace quitmenu() que lo que hace es eliminar el menu principal y la barra de botones para que no ocupen en la ventana ocultos.

Y Cuando sale vuelve a ponerlos con Repintar(), lo que hace ahora es poner bien el menu principal y la barra de botones la pone pero no esta activa se ven los botones pero cuando pinchas o pasas el raton por encima no hace nada.

Tambien he detectado una cosa muy rara yo el objeto que contiene el menu principal le he llamado oPepe1 dela siguiente manera:

STATIC FUNCTION PepePrin()
PUBLIC oPepe1 // Objeto que contendr  el Men£
MENU oPepe1 2007
MENUITEM "&Generales"
MENU
MENUITEM "Personas o Entidades" ;
ACTION gestempr();
MESSAGE "Gestión de los datos identificativos de las Personas o Entidades de la aplicaci¢n"
SEPARATOR

....
....

ENDMENU
ENDMENU
RETURN( oPepe1 )

Pero si te das cuenta en quitmenu() para borrar el menu principal he tenido que poner :

oVentPrinc:oMenu:End()

en vez de :

oVentPrinc:oPepe1:End()

Gracias por tu interes espero tu respuesta si la hay.

Un saludo

Carlos
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Post by Antonio Linares »

Carlos,

Para quitarla puedes "ocultarla":

oWnd:oBar:Hide()

y cuando quieras mostrarla:

oWnd:oBar:Show()
regards, saludos

Antonio Linares
www.fivetechsoft.com
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Post by colthop »

Hola Antonio ya estoy en las ultimas en este tema:

Bien en vez de destruir y volver a crear la oculto y la muestro pero para que no ocupe en la parte superior lo que hago es la oculto y la pongo abajo con :

oVentPrinc:oBar:Hide()
oVentPrinc:oBar:GoDown()

y a la hora de volver la muestro y la pongo arriba otra vez con:

oVentPrinc:oBar:GoTop()
oVentPrinc:oBar:Show()

pero me da un error este :

Application
===========
Path and name: C:\programa\cyewin\cyewin.exe (32 bits)
Size: 2,894,848 bytes
Time from start: 0 hours 0 mins 4 secs
Error occurred at: 01/12/2007, 13:01:38
Error description: Error BASE/1004 Class: 'NIL' has no exported method: GOTOP
Args:
[ 1] = U

Y pasa cuando vuleve de una opcion y no al principio cuando lo pongo la primera vez.
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Post by Antonio Linares »

Carlos,

No la cambies de sitio, sino quítala de oWnd:oBar

oWnd:oBar:Hide()
oWnd:oBar := nil
oWnd:oTop := nil
...
oWnd:oBar = oBar // la variable que usastes para crearla ó una nueva
oWnd:oBar:Show()
regards, saludos

Antonio Linares
www.fivetechsoft.com
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Post by colthop »

Hola Antonio:

Estoy con ello pero pasa lo mismo que cuando lo hacia antes, se pintan los botones pero se quedan como si estubieran DISABLED y no se pueden utilizar.

Esto lo hace correctamente ya que lo quita y lo oculta bien:
oWnd:oBar:Hide()
oWnd:oBar := nil
oWnd:oTop := nil

Pero cuando hace esto lo vuelve a poner y lo deja inactivo es como si faltara algo mas que poner algo como antes era NIL para quitar.

oWnd:oBar = oBar // la variable que usastes para crearla ó una nueva
oWnd:oBar:Show()

Un saludo

Carlos
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Post by colthop »

Hola Antonio:

Estoy con ello pero pasa lo mismo que cuando lo hacia antes, se pintan los botones pero se quedan como si estubieran DISABLED y no se pueden utilizar.

Esto lo hace correctamente ya que lo quita y lo oculta bien:
oWnd:oBar:Hide()
oWnd:oBar := nil
oWnd:oTop := nil

Pero cuando hace esto lo vuelve a poner y lo deja inactivo es como si faltara algo mas que poner algo como antes era NIL para quitar.

oWnd:oBar = oBar // la variable que usastes para crearla ó una nueva
oWnd:oBar:Show()

Un saludo

Carlos
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Post by Antonio Linares »

Carlos,

Prueba solamente a hacerle :Hide() y más tarde :Show() y comprueba si funcionan los botones, gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Post by colthop »

Hola Antonio:

No se porque pero lo que interferia era la ventana que ponia el usuario la he quitado y los datos los he puesto en la barra de mensajes y ya funciona bien de las dos formas y como digo yo, si funciona no busques el porque ya que estas tardando en seguir, gracias por tu interes y ya comentare algo del menu del preview que no me sale pero como no sale no me importa me importa mas el terminar el resto.

Gracias

carlos
Post Reply