Rotina pra mensagens estilo messagebox

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina pra mensagens estilo messagebox

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina pra mensagens estilo messagebox

Mensagem 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.
Anexos
erroregra.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Rotina pra mensagens estilo messagebox

Mensagem por asimoes »

pessoal,

Tem como alterar a fonte de um messagebox?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Rotina pra mensagens estilo messagebox

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Rotina pra mensagens estilo messagebox

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Rotina pra mensagens estilo messagebox

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder