Change MsgBox() Font and its Size
Posted: Sun Jul 24, 2016 2:14 pm
Is it possible to change the font (and its size too) of messages when using MsgBox function in the HMG Console mode? It will be great if somebody solves the problem.
Exclusive forum for HMG, a Free / Open Source xBase WIN32/64 Bits / GUI Development System
http://hmgforum.com/
Code: Select all
xVar:="Este proceso borra todos los datos" +CRLF+CRLF + ;
"de la empresa.") +CRLF+CRLF + ;
"Se eliminaran todos los datos " +CRLF+CRLF + ;
"sin posibilidad alguna de recuperación." + CRLF+CRLF+ ;
"¿ Desea continuar ..?"
JM_BOXSINO("¡¡ATENCION!!", xVar, "Arial",10,RED,1,2)
Code: Select all
//----------------------------------------------------
//--> CUADRO DE MENSAJE
//----------------------------------------------------
// Recibe el Titulo, Mensaje, Fuente y Tamaño, el color, el Tipo Ventana, y Botones
// nTipo=1 Ventana de Interrogación
// nTipo=2 Ventana de Cancelar-Prohibido
// nBton=1 -- Aceptar
// nBton=2 -- Aceptar y Cancelar
FUNCTION JM_BOXSINO( Titulo, Mensaje, sFont,sSize,color_win,nTipo,nBton)
LOCAL aJm_Msg:={}
LOCAL nFor:=0
LOCAL nPos:=0
LOCAL nLen:=0
LOCAL nAncho:=0
LOCAL nAlto:=0
LOCAL lOk:=.T.
LOCAL nPosButton:=0
// --> Cargo los tipos de letra y el color por defecto
DEFAULT sFont:="Arial"
DEFAULT sSize:=10
DEFAULT Color_win:=COLOR_LemonChiffon1
DEFAULT nTipo:=1
DEFAULT nBton:=2
// --> Busco si tiene lineas (CRLF+CRLF) para cargar un array
nPos:=AT(CRLF+CRLF,Mensaje)
DO WHILE nPos!=0
AADD(aJm_Msg,SUBSTR(Mensaje,1,nPos-1))
Mensaje:=substr(Mensaje,nPos+4)
nPos:=AT(CRLF+CRLF,Mensaje)
ENDDO
AADD(aJM_Msg,Mensaje)
// --> Vamos a calcular la dimensión de la Ventana
FOR nFor=1 TO LEN(aJm_Msg)
// --> Longitud Máxima de la línea
nLen:=IF(LEN(aJm_Msg[nFor])> nLen,LEN(aJm_Msg[nFor]),nLen)
NEXT
// ------------------------------------------------------------->
// Cojemos la línea de Mayor longitud y multiplicamos por 7
// ¡¡ Ojo, si cambia el tamaño/tipo de LETRA hay que ajustar.
// Pero yo creo que tiene que haber algo que nos pueda indicar
// el tamaño de las letras... Window lo sabe, Bill Gates tambien..,
// y nosotros no. Maldito sea el queso de bola..
// ------------------------------------------------------------->
nAncho:=(nLen*7)+ 40 //-> le añado 40 por MARGENES
nAlto := ( LEN(aJm_Msg)*40)+60 //-> le añado 60 por los botones
// --> Tamaño Minimo
nAncho:=IF(nAncho<360,360,nAncho)
nAlto :=IF(nAlto<160,160,nAlto)
IF LEN(aJm_Msg)=1 //--> Un chorrada de ajuste para cuando solo tiene una línea
nAlto:=140
ENDIF
nPosButton:=INT(nAncho/4)
DEFINE WINDOW JM_BOX ;
AT 0, 0 ;
WIDTH nAncho HEIGHT nAlto ;
TITLE Titulo ;
MODAL NOSIZE NOSYSMENU ;
BACKCOLOR COLOR_Win ;
FONT sFont SIZE sSize
FOR nFor:=1 TO LEN(aJm_Msg)
cSay="SAY_"+StrZero(nFor,2)
@ (30*nFor)-15 ,55 LABEL &cSAY VALUE aJm_Msg[nFor] TRANSPARENT AUTOSIZE FONT sFont SIZE sSize
NEXT
DO CASE
CASE nTipo=1
@ 25,10 IMAGE Img_JM_BOX PICTURE "ayuda_g" WIDTH 36 HEIGHT 36 TRANSPARENT
CASE nTipo=2
@ 25,10 IMAGE Img_JM_BOX PICTURE "cancelar_g" WIDTH 36 HEIGHT 36 TRANSPARENT
CASE nTipo=3
@ 25,10 IMAGE Img_JM_BOX PICTURE "alerta_g" WIDTH 36 HEIGHT 36 TRANSPARENT
ENDCASE
DO CASE
CASE nBton=1
@ nAlto-70,(nPosButton*2)-20 BUTTON Aceptar CAPTION "Aceptar" PICTURE "cancelar" ;
LEFT WIDTH 120 HEIGHT 30 FONT sFont SIZE sSize BOLD;
ACTION (lOk:=.F., JM_BOX.Release() )
CASE nBton=2
@ nAlto-70,nPosButton-25 BUTTON Aceptar CAPTION "Aceptar" PICTURE "aceptar" ;
LEFT WIDTH 120 HEIGHT 30 FONT sFont SIZE sSize BOLD ;
ACTION (lOk:=.T., JM_BOX.Release() )
@ nAlto-70,(nPosButton*2)+35 BUTTON Cancelar CAPTION "Cancelar" PICTURE "cancelar" ;
LEFT WIDTH 120 HEIGHT 30 FONT sFont SIZE sSize BOLD;
ACTION (lOk:=.F., JM_BOX.Release() )
ENDCASE
END WINDOW
CENTER WINDOW JM_BOX
JM_BOX.Activate
RETURN lOk