Clipper On Line • Ver Tópico - Formulário de Notificações Temporárias

Formulário de Notificações Temporárias

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

Moderador: Moderadores

 

Formulário de Notificações Temporárias

Mensagempor microvolution » 14 Nov 2021 12:49

Pessoal, estou querendo implementar, mas, não encontrei nada na internet, um formulário contendo as últimas alterações do meu sistema, para que o usuário possa ler, pois o manual com todos os "releases", infelizmente ele(s) não lê(em).

Seria algo como o do facebook, onde esse formulário que pode ser em GTWVG ou HMG, apareça na tela assim que ele fizer login no sistema e só fecha após clicar no "x" ou "ok".

Esse formulário também tenha um tipo de chek-box, onde esteja assim:
"não mostrar essa tela novamente". Caso ele marque, não aparecerá mais para ele.

Assim, toda alteração que a gente fizer no sistema, aparecerá a notificação obrigatória para que ele(a) leia e teste as novidades.

Algum dos colaboradores deste nosso precioso fórum tem alguma noção ou já tenha feito, pra nos auxiliar com um código mais enxuto?

gracias!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 14 Nov 2021 13:12

vb.png


Usei isso há uns 20 anos atrás.
Era até automático no VB6, como opção de criar um modelo de 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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Formulário de Notificações Temporárias

Mensagempor Kapiaba » 14 Nov 2021 16:36

Olá, vejas se a sua linguagem tem a função MsgList() ou Tips().

Regards, saludos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 14 Nov 2021 17:53

Kapiaba escreveu:Olá, vejas se a sua linguagem tem a função MsgList() ou Tips().

eu uso o harbour que vem dentro da HMG 3.5.
Como dentro do harbour tem a contribs/gtwvg eu uso um mix de GTWVG + HMG (Console e GUI) juntos num só programa.

Não consegui localizar na HMG e nem na GTWVG essas funções internas:
MSGLIST() e TIPS()

grato por interagir conosco!

JoséQuintas escreveu:Usei isso há uns 20 anos atrás.

Meu nobre, como é um especialista em GTWVG, achei o seguinte na pasta contribs\gtwvg\tests da HMG 3.5 que é o mesmo do harbour 3.4 do Viktor Szakats:
Dentro do DEMOWVG.PRG (VOUCH) tem as seguintes funções, do sub-menu: MODELESS DIALOGS, DYNAMIC DIALOG MODAL, que em parte, dá pra fazer o que estou querendo.

Então, aproveitei parte do código, mesmo colocando os #DEFINE que faltavam, tais como:
******** retirei do arquivo hbwin.ch pra funcionar
#define WIN_WM_TIMER                       275
#define WIN_WM_COMMAND                     273
#define WIN_WM_INITDIALOG                  272
#define WIN_WM_DESTROY                     2
******** retirei do arquivo hbwin.ch pra funcionar

******** retirei do arquivo wvtwinlg.ch pra funcionar
#define WM_TIMER                                   WIN_WM_TIMER
#define WM_COMMAND                                WIN_WM_COMMAND
#define WM_INITDIALOG                             WIN_WM_INITDIALOG
#define WM_DESTROY                                WIN_WM_DESTROY
******** retirei do arquivo wvtwinlg.ch pra funcionar

apresenta erro de funções indefinidas, como:
wapi_IsDlgButtonChecked()
SetFonts()
wapi_SendMessage()
wapi_CheckDlgButton()

Mas, as funções abaixo NÃO apresentaram o erro de funções indefinidas:
wapi_GetDlgItem()
wapi_SetDlgItemText()
wapi_MessageBox()


pelo meu humilde conhecimento e pesquisa na internet pelo WAPI_ISDLGBUTTONCHECKED, encontrei do Viktor um arquivo por nome de HBWIN.HBX que contém esses nomes, mas, dentro da hmg, na pesquisa aqui no meu computador, achei esse arquivo HBWIN.HBX e está dentro da pasta harbour\contrib\hbwin;

Desculpe a pergunta que pode ser idiota: "como faço para incluir esse arquivo dentro do sistema"?
é um tipo de #include hbwin.hbx ou #include hbwin.ch?


E agora José Quintas, quem poderá nos defender?
rsrs
Pode, nos ajudar?

obs de última hora:
1)
#include hbwin.ch já estava no meu sistema
2)
#require hbwin.ch - não estava e coloquei e não deu certo

3)
no caso do HBWIN.HBX é uma lib que tem que ser inclusa como o HBWIN.HBC?
4)
o HBWIN.HBC já está incluso como lib adicional na IDE/HMG, bem como está a GTWVG.HBC, mas, mesmo assim acontece o erro.

5)
como se adiciona o HBWIN.HBX dentro do meu sistema????
6)
aliás, no arquivo HBWIN.HBX que vem dentro da HMG.3.5\CONTRIBS\HBWIN não existem as funções que estão aparecendo como indefinidas.

Somente dentro do HBWIN.HBX que está no github do VIKTOR é que tem essas funções abaixo que estão apresentando erro de "funções indefinidas":
wapi_IsDlgButtonChecked()
SetFonts()
wapi_SendMessage()
wapi_CheckDlgButton()


E, agora José, quais funções são substitutas e que estão dentro do harbour da HMG 3.5?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 14 Nov 2021 19:41

Quer fazer o que?
Uma dialog com um checkbox ?
HMG deve ter isso de sobra, porque complicar tanto?
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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 14 Nov 2021 21:40

JoséQuintas escreveu:HMG deve ter isso de sobra, porque complicar tanto?

Se o usuário for usar o sistema ainda 100% console com gráficos da GTWVG, não dá pra usar os forms da HMG, exceto as MSG's.
JoséQuintas escreveu:Uma dialog com um checkbox ?

Pra ele marcar pra não ver novamente o "você sabia..."
Resumindo, pretendo fazer 2 modelos, um em 100% hmg (já sei fazer) e outro pra rodar em ambos em 100% gtwvg, não sei fazer!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 15 Nov 2021 20:20

microvolution escreveu:Resumindo, pretendo fazer 2 modelos, um em 100% hmg (já sei fazer) e outro pra rodar em ambos em 100% gtwvg, não sei fazer!


Não entendo porque precisa fazer nos dois.
O único problema de GTWVG é que ela costuma usar os controles padrão do Windows, e por esse motivo provavelmente ter problema com cores.
Acho até que já usou tudo que precisa em outro fonte.
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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 16 Nov 2021 14:54

JoséQuintas escreveu:Não entendo porque precisa fazer nos dois.
se a gente fizer um formulário hmg com botões, labels, checkbox, etc... já sei fazer.
O problema é o seguinte:
- como estou ainda migrando o sistema de console para gui, cerca de 85% ou mais do código, está ainda em console, com apenas GTWVG para simular uma tela gráfica, mas, console.
- Apenas a tela de splash, tela de login e main win (formulário principal) que já estão em 100% HMG.

Mas, qual o problema então?
Como ainda está funcionando em forma beta, deixei uma opção interna que só meu usuário/senha de administrador é que se muda para:
1- console/wvg;
2- console/wvg/hmg;

Na primeira opção, os códigos de criação de formulários MainWindow da HMG não funcionam, somente na segunda opção.

Por isso, preciso aprender a fazer esse formulário(tela console/wvg) de notificações baseada na GTWVG que funciona tanto em console, quando na HMG com formulários padrão windows.

Já se eu desenvolver um formulário HMG e estiver habilitada a opção (1 - console/wvg) não irá funcionar, pois não está habilitada para forms HMG.

Expliquei ou compliquei?

Por isso, vi no exemplo DEMOWVG.prg a tal tela que mencionei anteriormente, mas, ela é diferente do pacote do Viktor para o oficial da HMG 3.5 (.0.1)
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 16 Nov 2021 16:23

Radicalize geral.

Primeiro organize os fontes

Se possível, compile com -w3 -es2

Procure usar multithread, e misture tudo que quiser, sem limitações.

Acho que dá até pra usar GTWVG + HMG + HWGUI ao mesmo tempo.

Sobre HMG: Tem lá uma opção de não trabalhar com Main Window, isso resolve muitos problemas.

Sobre o aplicativo: Já deveria estar liberando. Tem que funcionar no cliente, não na sua máquina, é justamente lá que os problemas acontecem.
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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 16 Nov 2021 18:15

JoséQuintas escreveu:Sobre o aplicativo: Já deveria estar liberando
já está. só as alterações que não. O formulário de notificações é pra que o usuário tente descobrir sozinho o passo-a-passo de como colocar em prática as novas alterações...
tô mudando aqui pra fazer um WVGCRT, e, o texto estou usando um WVG_MESSAGEBOX, mas, ele tem largura pequena, parece ser 20 caracteres e altura enorme.
Pergunto, existe algum tipo de @ SAY de apenas uma linha que dê quebra de linha automaticamente, após passar de 80 caracteres na tela?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 16 Nov 2021 18:19

JoséQuintas escreveu:Se possível, compile com -w3 -es2
já tentei, mas, achei muito difícil, pois são tantos os erros que apresentam rsrsrs
JoséQuintas escreveu:Procure usar multithread, e misture tudo que quiser, sem limitações.
se o "basicão" agarra e "morde sem ter dentes", quanto mais uma coisa complexa como esta da thread. Até no delphi que estou desenvolvendo mobile, isso tá pegando!
JoséQuintas escreveu:Acho que dá até pra usar GTWVG + HMG + HWGUI ao mesmo tempo.
eu vi uma postagem sua sobre o assunto nalgum lugar aqui no fórum, interessante, mas, muito complexo ainda pra mim.
JoséQuintas escreveu:Sobre HMG: Tem lá uma opção de não trabalhar com Main Window, isso resolve muitos problemas.
não sei se vai dar certo, pois já tentei e não fui feliz na tentativa.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 17 Nov 2021 09:36

Pode ser mais fácil do que todo resto.
E vai te obrigar a trabalhar direito, o que é bom.
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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 17 Nov 2021 15:01

JoséQuintas escreveu:E vai te obrigar a trabalhar direito, o que é bom.
V.Sa. já tentou me ensinar. Acontece que compilo via IDE/HMG, pois via .BAT ou via .BUILD (com ajuda do Dr. Soto) não deram certo.
Se na compilação de dentro da IDE/HMG (F5) tiver como colocar os parâmetros sugeridos, por favor, nos mostre, pra gente melhorar, afinal, estamos em construção também!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor microvolution » 18 Nov 2021 08:30

Bom dia nobres professores(as)!
Não é o q eu queria, mas, como não consegui desvendar o mistério, fiz de forma tradicional o formulário Notificações que será exibido, tanto em console/WVG, quanto em 100% GUI/HMG.
21-1118 - Tnotificações_teste.png
Tela Notificações Simples WVG/HMG

Como fiz?
1- usei um WVGCRT pra criar uma tela com informações que seriam usadas somente nela;
2- usei @ say pra preencher individualmente todas as 24 linhas da tela;
3- tem um inkey(0) impedindo o fechamento automático da tela, sem que o usuário possa ler ou decidir fechar;
4- para a pergunta, usei o seguinte código:
FUNCTION WVGSimNao( cText, cTitulo )
   LOCAL lValue
   hb_Default(@cTitulo, win_ansitoOem("Confirmação")  )
   lValue := wapi_MessageBox( wapi_GetActiveWindow(), cText, cTitulo, MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON1 ) == IDYES
RETURN lValue

A chamada a essa função é muito simples, que dispensa esclarecimentos.
Já que uso um híbrido de console/wvg com gui/hmg ao mesmo tempo num(a) único(a) sistema(thread), por que então não usei a MSGYESNO() da HMG que dispensa fazer essa manualmente?

Muito simples:
A MSGYESNO() da HMG é do tipo NÃO MODAL, ou seja, ela fica solta e se por ventura o usuário clicar noutro lugar da tela do windows, pode acontecer de não se ver a mensagem de confirmação automaticamente, tendo que ficar procurando-a num dos programas abertos;
Já a WVGSIMNAO() personalizada, é do tipo MODAL e enquanto a tela de NOTIFICAÇÕES não for fechada com o SIM ou NÃO ela ficará grudada nela.

5- Quando se sai da PERGUNTA, e, para poupar criação de uma nova tabela somente para salvar a resposta se SIM ou se NÃO, eu uso a regedit mesmo para salvar nas configurações do usuário. Com isso, se o usuário responder SIM, é criada um registro na REGEDIT (não importa qual o versão do win xp ou superior 32/64) por nome de NOTIFICACAO com o valor 1. Caso seja NÃO, o valor será 0;
5.1- A quem possa me indagar: "tome cuidado com a REGEDIT, pois ali é do Windows e vc pode danificar, e, blá blá blá, etc...". Em 1998, quando estava sendo lançado na primeira emissora de rádio do Brasil, o simples software PLAYLIST DIGITAL, feito 100% em C e C++, eu vi que o autor desse pequeno "sisteminha de fundo de quintal", usava esse recurso para impedir pirataria do seu software;
5.2- O software hoje, é tão pequeno, que ocupa 24% do mercado nacional de automação de emissoras de rádio (AM, FM, WEB, etc) do Brasil;
5.3- O Playlist Digital ocupa pouca parcela do mercado da América Latina. O segundo colocado no ranking no Brasil, detém 12% do mercado nacional de rádios rsrsrsrsrs. O "sisteminha" tem o dobro do 2º colocado, sendo o PRIMEIRO COLOCADO EM SOFTWARE para GESTÃO e AUTOMAÇÃO de músicas, comerciais, vinhetas, etc, de rádios no nosso país;
5.4- Até hoje, o software usa o REGEDIT do Windows para evitar pirataria, além de outros novos recursos.

6- Com isso, toda vez que entrar no sistema é feita uma verificação na REGEDIT. Se o registro existir e for 0, não será mostrada a tela de NOTIFICAÇÕES, se for 1, será mostrada até o usuário decidir não vê-la novamente.
o Código é bem simples, veja:
     if WVGSimNao( win_ansiToOem("Mostrar esta Notificação da próxima vez ?" )) = .t.
            Regtmp:= win_regRead( cRootKey + "Notif")
            if Regtmp = nil
                 Win_RegWrite ( cRootKey + "Notif", 1 , WIN_REG_DWORD )
            else
                 Win_RegWrite ( cRootKey + "Notif", 1 , WIN_REG_DWORD )
            endif
     else
            Regtmp:= win_regRead( cRootKey + "Notif")
            if Regtmp = nil
               Win_RegWrite ( cRootKey + "Notif", 0 , WIN_REG_DWORD )
            else
               Win_RegWrite ( cRootKey + "Notif", 0 , WIN_REG_DWORD )
            endif
     endif

6.1- A variável CROOTKEY contém previamente o local onde quero salvar/criar o registro dentro da REGEDIT;
6.2- a linha e suas seguintes IF REGTMP = NIL, é apenas por segurança, talvez, vc ache uma solução com um código mais enxuto;
7- Ao final da resposta SIM/NÃO, claro e não menos importante, mas, sendo obrigatório, senão a WVG bagunça tudo, é feito o oCrt:Destroy();
7.1- Se a gente não fizer assim, aí, teremos uma bagunça nas telas seguintes CONSOLE/WVG.

Se alguém achar uma forma mais simples de se apresentar numa única linha com quebra automática de página todo o texto da NOTIFICAÇÃO, para ser mais fácil a manutenção, vamos agradecer, talvez um tipo de MEMO num único @ SAY.
Pelo meu pouco conhecimento, não sei se existe um @ SAY ou algo similar em clipper/harbour que preencha toda a tela com um único comando/código.

Por enquanto é só pessoal.
Espero que seja útil aos que tem mais dificuldade como eu. Gracias!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Formulário de Notificações Temporárias

Mensagempor JoséQuintas » 18 Nov 2021 11:04

Microevolution
Acho que tenho a solução ideal pra você.
Vai se preparando pra apagar tudo que tem de HMG/Minigui, que pelo que comentou é pouco.
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: 18153
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 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