Clipper On Line • Ver Tópico - Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

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

Moderador: Moderadores

 

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 15 Ago 2019 13:15

Boa tarde,

Alguem poderia me dizer se tem uma forma de customizar a aparência das telas das funções abaixo:
MsgInfo, MsgStop, MsgYesNo, MSGEXCLAMATION
Eu gostaria de alterar a fonte, cor de fundo e texto tanto do painel quanto dos botões.
É possível? Caso afirmativo, teria como explicar como fazer?

Outra coisa estou compilando minha aplicação conforme linha abaixo do HBP mas ocorre o erro "undefined reference HB_FUN_MSGINFO" as demais funções funciona ok.
xhb.hbc
hbwin.hbc
hbct.hbc
gtwvg.hbc

Grato!!!

rgds,
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 15 Ago 2019 18:52

Aqui eu uso, mas criei minhas próprias.
Se não me engano, também tem na HMG.

Na prática são a MessageBox() do Windows, apenas o ícone é que se altera.
No Harbour essa MessageBox() fica disponível na hbwin.

Nota: o nome das constantes pode variar conforme Harbour 3.2 ou 3.4

FUNCTION MsgYesNo( cText )

   LOCAL lValue

   lValue := wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == WIN_IDYES

   RETURN lValue

FUNCTION MsgExclamation( cText )

   wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONASTERISK )

   RETURN NIL

FUNCTION MsgWarning( cText )

   wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONEXCLAMATION )

   RETURN NIL

FUNCTION MsgStop( cText )

   wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONHAND )

   RETURN NIL


Se quiser diferente do Windows, só criando suas próprias rotinas, ou usando alguma que alguém tenha criado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 16 Ago 2019 13:30

Jose, consegui entender o conceito das mensagens. Mas não sei nem por onde começar para modificar minhas janelas. Teria como dar um exemplo ou apontar algum diretório do Harbour onde posso trabalhar?
Tentei verificar o fonte demowvg.prg mas ele precisa de threads e estou fugindo disso, hehehe...
Agradeceria muito se alguém pudesse me ajudar, inclusive colocarei o meu fonte final para todas degustarem.

obrigado.

rgds,
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 16 Ago 2019 14:41

Me confundi.
É mensagens ou visual do aplicativo?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 16 Ago 2019 14:49

Estou tenteando mudar a aparência da aplicação e por isso preciso mudar a aparência das mensagens. É possível?
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 16 Ago 2019 15:04

Ué.. pode deixar os fontes preparados pra isso, e depois se concentra só no visual.

IF MsgYesNo( "Exclui" )
   DELETE
ENDIF


No meu caso tenho minha rotina tradicional, e essas da API

Mensagem( "Digite campos, ESC sai" )
Mensagem( "Sim ou Não", "S,N" )
Mensagem( "Sim ou não ou ESC", "S,N, 27" )
Mensagem( "Sim ou Nao", "S,N", 1, 1 )
MsgYesNo( "Sim ou não" )
Mensagem()


Na tradicional, os parâmetros adicionais indicam se tem beep, ou se são no centro da tela.
Se no seu aplicativo ainda não usa rotina de mensagem, pode começar por aí.
Depois, pode alterar a rotina para o visual que quiser, e já altera todo aplicativo de uma vez.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 16 Ago 2019 15:09

E no fonte anterior que postei, se não usar GTWVG é só verificar a função correspondente que retorne o handle da janela atual.
Se deixar sem nada funciona, mas não fica vinculada à janela atual, pode até ficar atrás da janela atual, por isso o handle é importante.

 wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONASTERISK )


Se não me engano, hbwin tem equivalente a isso, pra retornar o hWnd da janela atual.
Dá uma testada e veja como fica.

 wapi_MessageBox(  , cText, "Atenção" )
wapi_MessageBox(  , cText, "Atenção", WIN_MB_ICONASTERISK )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 16 Ago 2019 22:49

Só pra deixar ilustrado....

REQUEST HB_CODEPAGE_PTISO

#include "set.ch"

PROCEDURE Main

   Set( _SET_CODEPAGE, "PTISO" )
   SetMode(30,90)
   SetColor("W/B")
   CLS
   Mensagem( "Digite campos, ESC Sai" )
   Inkey(0)
   Mensagem()
   Inkey(0)
   Mensagem( "Sim ou Não", "S,N" )
   Mensagem( "Sim ou Não ou ESC", "S,N, 27" )
   Mensagem( "Sim ou Não", "S,N", 1, 1 )
   MsgYesNo( "Sim ou Não" )
   Mensagem( "dshfksdhdkh dkslhklh kh kh kh kh kh kh kh kj hk hk hk hk jh kh k hk hk hl h" + ;
      "kdskhdd fkhk hkhkj hkj hkj hkjh k hkh  hk hk hkj h", " 13" )
   Mensagem( "dshfksdhdkh dkslhklh kh kh kh kh kh kh kh kj hk hk hk hk jh kh k hk hk hl h" + ;
      "kdskhdd fkhk hkhkj hkj hkj hkjh k hkh  hk hk hkj h", " 13", 1, 1 )

   RETURN


mensagem1.png
mensagem1.png (11.68 KiB) Visualizado 1917 vezes


mensagem2.png
mensagem2.png (7.01 KiB) Visualizado 1917 vezes


mensagem3.png
mensagem3.png (10.61 KiB) Visualizado 1917 vezes


mensagem5.png
mensagem5.png (9.98 KiB) Visualizado 1917 vezes


mensagem6.png


mensagem7.png
mensagem7.png (11.19 KiB) Visualizado 1917 vezes


mensagem8.png


É engraçado, mas a mensagem console está mais com a cara do Windows 10 do que a da API do Windows kkkkkk
A da API Windows parece velha kkkk
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 17 Ago 2019 19:14

Concordo com você Jose!
Este estilo chama-se flat design e é nele que estou me concentrando para fazer uma nova UI para console.
Vou criar uma nova função Alert ao estilo Flat com funcionalidade de mouse, e com alinhamento personalizado (esquerdo, direito, centralizado ou justificado). Tudo o que eu for desenvolvendo vou disponibilizar neste fórum.

rgds,
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 21 Ago 2019 19:51

Conforme prometido segue o meu fonte da minha função MsgAlert, similar ao Alert porem abre uma nova janela CRT por cima. Alem disso funciona com mudança de linha com o caracter ";" igual o alert mas a minha função pode justificar ou alinhar para a esquerda ou direita. Alem disso pode personalizar as cores dos botões. Eu deixei o padrão, vermelho e verde mas pode-se fazer com qualquer cor, basta alterar o fonte que esta bem simples.
Anexos
fontes-msgalert.rar
Fontes MsgAlert
(8.6 KiB) Baixado 147 vezes
tela msgalert.png
Tela do MsgAlert
tela msgalert.png (11.63 KiB) Visualizado 1857 vezes
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lugab » 22 Ago 2019 04:07

Bom dia, Lwinter...
Faltou definir essa variavel
┌──────────────────────────────────────────────────────────────┐
│ Error BASE/1003 Variable does not exist: WIN_SW_RESTORE │
│ │
│ Quit Retry │
└──────────────────────────────────────────────────────────────┘
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 22 Ago 2019 04:59

Talvez porque indicou LIBs e não HBC
gtwvg.hbc hbwin.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor Ana Mitoooo » 22 Ago 2019 23:58

wvtwin.ch(287): #define SW_RESTORE         9
hbgtwvg.ch(143): #define HB_GTS_SW_RESTORE 9
Ana Mitoooo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 82
Data de registro: 17 Out 2018 10:00
Cidade/Estado: Sobradinho/DF
Curtiu: 41 vezes
Mens.Curtidas: 36 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor JoséQuintas » 24 Ago 2019 01:38

Só pra curiosidade, a GTWVG.HBC

description=GTWVG (an extension of GTWVT, win-only)
skip={!allwin}
incpaths=.
headers=hbgtwvg.ch wvgparts.ch wvtwin.ch
gt=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=hbwin.hbc
gui=yes
mt=yes


skip={!allwin} significa que vai ser pulada se não for Windows
headers=hbgtwvg.ch wvgparts.ch wvtwin.ch são justamente os arquivos CH, que são adicionados no uso da GTWVG
libs=hbwin.hbc

Não concordo com essa parte, deveria ser só pelo #include mesmo.
É que se o aplicativo tratar GTWVG e outra LIB gráfica ao mesmo tempo, essa definição dentro do GTWVG.hbc vai atrapalhar, então melhor deixar manual.
O mesmo pra hbwin.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagempor lwinter » 27 Ago 2019 20:55

Me desculpe pela demora da resposta mas esta linha em questão não é necessária para a função MsgAlert. Se vocês tirarem vai funcionar normalmente. Eu herdei ela do exemplo da demowvg.prg e esqueci de tirar.
lwinter
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 123
Data de registro: 07 Mar 2011 12:08
Cidade/Estado: Campinas - SP
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro