Página 1 de 1

Rotina pra mensagens estilo messagebox

Enviado: 17 Mai 2013 09:54
por JoséQuintas
A hbwin tem o uso da função do Windows MessageBox.
Só que a Messagebox tem opções padrão básicas, pra OK ou SIM/NAO.
Tem alguma função no Windows pra opções do usuário?

Rotina pra mensagens estilo messagebox

Enviado: 17 Mai 2013 10:41
por JoséQuintas
Acaba sendo interessante, por não depender de LIB gráfica.
Mas falta pra outras opções.
Estou usando essa, que por permitir bastante texto é util.

Rotina pra mensagens estilo messagebox

Enviado: 17 Mai 2013 16:40
por asimoes
pessoal,

Tem como alterar a fonte de um messagebox?

Rotina pra mensagens estilo messagebox

Enviado: 17 Mai 2013 19:04
por JoséQuintas
Que eu saiba não, já que ela usa o default do Windows.

http://msdn.microsoft.com/en-us/library ... s.85).aspx

Ainda não peguei parte gráfica pra valer.
Da outra vez que testei a Messagebox não funcionou direito, porque eu usava console.
Desta vez só substitui as minhas MsgYesNo() e MsgExclamation()

Essa daí da foto, era uma janela criada com wOpen() / wClose().
Agora virou MsgExclamation( cTexto ), e coloco tudo nesse texto.
A função do Windows faz o resto.

Rotina pra mensagens estilo messagebox

Enviado: 17 Mai 2013 19:06
por asimoes
José,

Eu tinha esse problema acabei desenvolvendo a minha própria caixa de mensagem:
Veja se te ajuda.

Código: Selecionar todos

cMens:=IF(APC40->TipoBen="T","Sócio","Dependente")+" selecionado para exclusão:"+HB_EOL()+HB_EOL()
cMens+=AllTrim(APC40->NomeBen)+HB_EOL()+HB_EOL()
cMens+="Clique no botão cancelar ou tecle [Esc] para desistir."+HB_EOL()+HB_EOL()
cMens+="Atenção esta ação não poder  ser desfeita."

IF Confirmacao("E",cMens,320,650,2)
   ...
ENDIF   

Código: Selecionar todos

FUNCTION Confirmacao(cTipo,cMensagem,nTamanho,nLargura,nDefault)
LOCAL oDlg, oEdit, oHttp, cMess:="", oPg
LOCAL oIconSair  := HIcon():AddResource("ICON_CANCELAR")
LOCAL oIconGravar:= HIcon():AddResource("ICON_GRAVAR")
LOCAL cOpcao
PRIVATE btnSair

   HB_Default(@nTamanho,200)
   HB_Default(@nLargura,605)
   HB_Default(@nDefault,1)
   
   cEscolha:=IF(cTipo="I","&Gravar",IF(cTipo="A","&Alterar","&Excluir"))
   
   INIT DIALOG oDlg TITLE "Confirmação de "+IF(cTipo="I","gravação",IF(cTipo="A","alteração","exclusão")) ;
   AT 0,0 SIZE nLargura,nTamanho ;
   ICON HIcon():AddResource("ICON_GRAVAR")  ;
   FONT HFont():Add( 'Courier New',0,-13,500,,,) CLIPPER  NOEXIT ;
   STYLE DS_CENTER +WS_SYSMENU+WS_VISIBLE ;
   ON INIT {| oDlg | oDlg:ninitfocus:=IF(nDefault=1,btnEscolha,btnSair)}

   nLinha:=nTamanho-80

   hwg_SetToolTipBalloon(.T.)

   @ 010, 010      GET oEdit VAR cMensagem SIZE nLargura-25, nTamanho-105 STYLE WS_VSCROLL + ES_MULTILINE + ES_READONLY + WS_BORDER ;
                         COLOR hwg_RGB(0,0,255) ;
                         WHEN { || hwg_SendMessage( oEdit:handle, EM_SETSEL, 0, 0 ),btnEscolha:setfocus(),.F.};
                         FONT HFont():Add( 'Courier New',0,-18,550,,,);
                         BACKCOLOR hwg_RGB(211,237,250)

   @ 010,nLinha   BUTTONEX btnEscolha CAPTION cEscolha ON CLICK { || oDlg:lResult:=.T.,hwg_EndDialog()} SIZE 110, 40 ;
                         ICON oIconGravar:handle  ;
                         TOOLTIP "Clique aqui para "+Lower(cEscolha)+" os dados."

   @ nLargura-125,nLinha BUTTONEX btnSair CAPTION "Cancelar" ON CLICK { || oDlg:lResult:=.F.,hwg_EndDialog()} SIZE 110, 40 ;
                         ICON oIconSair:handle  ;
                         TOOLTIP "Clique aqui para cancelar a "+IF(cTipo="I","gravação",IF(cTipo="A","alteração","exclusão")) 

   oDlg:Activate()

RETURN oDlg:lResult

Rotina pra mensagens estilo messagebox

Enviado: 18 Mai 2013 11:07
por asimoes
Criei essa caixa de mensagem personalizada.

Imagem

Código: Selecionar todos

   Uso:
   cMensagem:="Vimos atrav‚s desta convocar V.S. para a assembl‚ia ordin ria que se realizar  no dia 25/05/2013"+HB_EOL()
   cMensagem+=" s 09:00 horas em primeira convoca‡Æo e  s 09:30 horas segunda e £ltima convoca‡Æo na sala de reuniÆo"+HB_EOL()
   cMensagem+="a fim de deliberarem"+HB_EOL()
   cMensagem+="sobre os seguintes assuntos:"+HB_EOL()+HB_EOL()
   cMensagem+="Aprova‡Æo de Contas"+HB_EOL()
   cMensagem+="Elei‡Æo de Sindico"+HB_EOL()
   cMensagem+="Nomea‡Æo de Conselho Fiscal"+HB_EOL()
   cMensagem+="Outros assuntos"

   MensagemSistema("Aten‡Æo",cMensagem,500,1024)


FUNCTION MensagemSistema(cTitulo,cMensagem,nTamanho,nLargura,nDefault)
LOCAL oDlg, oEdit, cMess:="", oPg
LOCAL oIconOk  :=HIcon():AddResource("ICON_OK")
LOCAL oIconSair:=HIcon():AddResource("ICON_SAIR")
LOCAL cOpcao
PRIVATE btnSair

   HB_Default(@cTitulo,"")
   HB_Default(@cMensagem,"")
   HB_Default(@nTamanho,200)
   HB_Default(@nLargura,605)
   HB_Default(@nDefault,1)
   
   nLargura+=80
   nTamanho+=80

   cMess  :=HB_OemtoAnsi(cMensagem)
   
   cTitulo:=HB_OemtoAnsi(cTitulo)

   
   INIT DIALOG oDlg TITLE cTitulo ;
   AT 0,0 SIZE nLargura,nTamanho ;
   FONT HFont():Add( 'Courier New',0,-13,500,,,) CLIPPER  NOEXIT ;
   STYLE DS_CENTER +WS_SYSMENU+WS_VISIBLE 

   nLinha:=nTamanho-80

   hwg_SetToolTipBalloon(.T.)


   @ 010, 020            BITMAP "BITMAP_EXCLAMA1" FROM RESOURCE TRANSPARENT SIZE 60,60


   @ 080, 010            GET oEdit VAR cMess SIZE nLargura-95, nTamanho-105 STYLE WS_VSCROLL + ES_MULTILINE + ES_READONLY + WS_BORDER ;
                         COLOR hwg_RGB(0,0,255) ;
                         WHEN { || hwg_SendMessage( oEdit:handle, EM_SETSEL, 0, 0 ),.F.};
                         FONT HFont():Add( 'Courier New',0,-18,550,,,);
                         BACKCOLOR hwg_RGB(211,237,250)

   nColX:=(nLargura-45) / 2 

   //@ nColx, nLinha  OWNERBUTTON SIZE 110,40 ;
   //              TEXT "Ok" COORDINATES 55,0,0,0;
   //              BITMAP "BITMAP_OK2" FROM RESOURCE COORDINATES 5,0,0,0 TRANSPARENT;
   //              TOOLTIP "Sair" ;
   //              ON CLICK { || oDlg:Close(),hwg_EndDialog()}

   @ nColx,nLinha BUTTONEX btnSair CAPTION "Ok" ON CLICK { || oDlg:lResult:=.F.,hwg_EndDialog()} SIZE 110, 40 ;
                         ICON oIconSair:handle  ;
                         TOOLTIP "" 

   oDlg:Activate()

RETURN oDlg:lResult