Page 1 of 1
centrar mensaje en statusbar
Posted: Sun Jun 23, 2024 9:12 pm
by JoseAlvarez
Saludos amigos,
Siempre he usado el
Code: Select all | Expand
set message of _oWnd to cMensajeMenu centered color "N/W"
Para colocar mensajes en la barra de mensajes de una ventana. Tengo dias buscando como quitarle el efecto 3d pero no he podido.
Buscando en el foro me encuentro con la StatusBar, me da el efecto plano que quiero, pero no se como centrar los mensajes.
Ya revise la clase y no veo ninguna clausula que se relacione con centrar.
la coloco asi
Code: Select all | Expand
DEFINE STATUSBAR oStatusBar PROMPT cMensajeMenu OF _oWnd
Pero me muestra el mensaje justificado a la izquierda, como lo señalo en la imagen siguiente.
¿Cómo centrarlo?
Re: centrar mensaje en statusbar
Posted: Mon Jun 24, 2024 8:37 am
by Antonio Linares
Estimado José,
Habría usar el estilo SBS_CENTERALIGN al crear el control. Para eso habría que modificar la clase TStatusBar así:
#define SBS_CENTERALIGN 0x0004
::nStyle = nOR( WS_CHILD, WS_VISIBLE, SBS_CENTERALIGN )
Pruébalo y a ver si funciona como deseas.
Probaste con ?
set message of _oWnd to cMensajeMenu centered color "N/W" FLAT
Re: centrar mensaje en statusbar
Posted: Mon Jun 24, 2024 12:47 pm
by JoseAlvarez
Saludos Master Antonio,
el set message con la clausula FLAT me dio error de sintaxis:
Prg\Cuentas32.PRG(441) Error E0030 Syntax error "syntax error at 'MESSAGE'"
Respecto a la clase, la modifiqué según sus indicaciones, aunque no domino nada de clases, lo hice así,
Code: Select all | Expand
// Win32 common controls StatusBar
#include "FiveWin.ch"
#define SB_SETTEXT 1025
#define SB_SETPARTS 1028
#define SB_GETPARTS 1030
#define WM_ERASEBKGND 20
#define TIMER_INTERVAL 400
#define SIZE_MAXIMIZED 2
#ifdef __XPP__
#define ::Super ::TControl
#endif
#define SBS_CENTERALIGN 0x0004
//----------------------------------------------------------------------------//
CLASS TStatusBar FROM TControl
DATA cMsgDef
DATA oTimer
...
...
...
Code: Select all | Expand
METHOD New( oWnd, cText, aWidths, aPrompts, lClock ) CLASS TStatusBar
DEFAULT oWnd := GetWndDefault(), cText := "", lClock := .f.
#ifdef __XPP__
DEFAULT ::lDrag := .f.
#endif
::lUnicode = FW_SetUnicode()
::oWnd = oWnd
::nId = ::GetNewId()
::nStyle = nOR( WS_CHILD, WS_VISIBLE )
::cMsgDef = cText
::nStyle = nOR( WS_CHILD, WS_VISIBLE, SBS_CENTERALIGN )
Pero el resultado es que la barra se desaparece.
¿que me esta faltando?
Re: centrar mensaje en statusbar
Posted: Mon Jun 24, 2024 12:51 pm
by karinha
José, asi, funciona bién!
Code: Select all | Expand
SET MESSAGE OF oWnd TO "© Contato Sistemas: (11) 2941-6446 / 3569-6446 " ;
+ "- contato@pleno.com.br" + " - www.pleno.com.br" FONT oFont ;
NOINSET CLOCK DATE KEYBOARD CENTERED COLOR CLR_HBLUE, CLR_WHITE 2007
Regards, saludos.
Re: centrar mensaje en statusbar
Posted: Mon Jun 24, 2024 1:25 pm
by JoseAlvarez
karinha wrote:José, asi, funciona bién!
Code: Select all | Expand
SET MESSAGE OF oWnd TO "© Contato Sistemas: (11) 2941-6446 / 3569-6446 " ;
+ "- contato@pleno.com.br" + " - http://www.pleno.com.br" FONT oFont ;
NOINSET CLOCK DATE KEYBOARD CENTERED COLOR CLR_HBLUE, CLR_WHITE 2007
Regards, saludos.
Estimado amigo y maestro Joao,
Un par de retoques, y quedo como quería, 100% plano.
Gracias amigo!!