por fenixsorocaba » 03 Jul 2019 16:14
boa tarde asimoes!
sobre as novas indagacoes, trata-se de um sistema em harbour 3.2 console, que se utiliza de algumas telas windows (msgwin(" ")) e outras de escolha sim/nao (msgsimnao()), somente para modernizar um pouco a experiencia com o usuario. o sistema gera tambem em janela windows previsao de relatorio em tela, seleciona a impressora e gera pdf e backup (tudo em janelas windows, fica muito bom, claro considerando se tratar de programacao console ainda...)
eu nao saberia dizer se estão utilizando alguma lib externa, nao tenho este conhecimento.
enfim, são muitas funções novas e bem vindas, mas parece que no meu caso especÃfico possibilita que o usuário consiga burlar as opções disponiveis em qualquer tela, como se o sistema fosse ou tivesse um atalho windows para fechar (c signifique close, talvez??). qualquer outra tecla pode ser pressionada que nada ocorre, se for a letra c ele fecha sem deixar qualquer log.
talvez seja até um bug interno de umas dessa funções (barra de ferramentas que está sempre ativa em todas as telas por exemplo), dificultando ainda mais descobrir a causa..
já tirei todas as perguntas que tinha que utilizavam a letra c, como por exempo [c]onsulta, [c]ódigo, etc, e aparentemente resolveu, mas gostaria de saber se alguem ja passou por isso.
obs: o sistema original em que não acontece isso (antes da conversão) está em xharbour 1.2 console também..
abaixo encaminho parte do prg que trata da barra de ferramentas utilizada, sendo que até bloqueei a saida, para evitar que o usuario saida do sistema com arquivos abertos, por exemplo:
*****************************************
FUNCTION Toolbar() //funcao para criar barra de ferramentas
LOCAL oToolbar
oToolbar := WvgToolBar():New( wvgSetAppWindow(), , { 0, 0 }, { 0, 0 }, , .T. )
oToolbar:style := 1
oToolbar:borderStyle := 1
oToolbar:buttonWidth := 40
oToolbar:buttonHeight := 53
oToolbar:imageWidth := 32
oToolbar:imageHeight := 32
oToolbar:showToolTips := .T.
oToolbar:Create()
oToolbar:addItem( "Coleta", "BF_01" ) //parametros de addItem(): ToolTip (legenda) e Nome da Imagem (ver arquivo open_res.rc)
oToolbar:AddItem( "CTE", "BF_02" )
oToolbar:AddItem( "MDFE", "BF_03" )
oToolbar:AddItem()
oToolbar:AddItem( "Organiza", "BF_04" )
oToolbar:AddItem( "Backup", "BF_05" )
oToolbar:AddItem( "Consulta Status", "REL_BUSCA" )
oToolbar:AddItem()
oToolbar:AddItem( "Consulta CEP", "BF_06" )
oToolbar:AddItem( "Ajuda", "BF_07" )
* oToolbar:AddItem()
* oToolbar:AddItem( "Finaliza", "REL_EXIT" )
oToolbar:ButtonClick := { | oBtn | ExeToolBar( oBtn:index ) } //oBtn:index vai retornar o numero da opcao escolhida...
//cada addItem() (mesmo sem parametros) acima gera um numero de opcao, entao Coleta=1, CTE=2, MDFE=3, Organiza=5, Backup=6, etc
RETURN NIL
*****************************************
FUNCTION ExeToolBar( nIndex_ )
if nIndex_==1
MENUX("BF_Opcao(1)","Coleta")
elseif nIndex_==2
MENUX("BF_Opcao(2)","CTE")
elseif nIndex_==3
MENUX("BF_Opcao(3)","MDFE")
elseif nIndex_==5
MENUX("ORGANIZA()","Organiza")
elseif nIndex_==6
Fazer_Backup()
elseif nIndex_==7
ConsStatus() && verifica status do sefaz
elseif nIndex_==9
ConCEP() && consulta cep
elseif nIndex_==10
AJUDA()
elseif nIndex_==11
* SairProg() && nao utilizado
endif
//observe que pulei o nIndex igual a 4, 8 e 11, que corresponde ao uso da funcao addItem() (sem parametros) na funcao anterior
RETURN NIL
***************************************
Procedure BF_Opcao(nOp_)
If nOp_==1
mop:=1
* CTECOLET()
endif
If nOp_==2
mop:=1
* CTECTRCS()
endif
If nOp_==3
mop:=1
* CTEMDFEL()
endif
Return
***************************************
FUNCTION MENUX(cMacroEx,cTitJan) //funcao para executar opcoes do menu e barra de ferramentas
Local nGt, oCrt
lin1:=4
If lMenuExe
Return Nil
Endif
lMenuExe:=.T.
SetCursor(1)
oCrt := wvgCrt():New( , , { 3.5, 0 },{ 50, 110 }, , .t. )
oCrt:lModal := .t.
oCrt:Resizable := .t.
oCrt:Title := cTitJan
oCrt:icon := "icon_sys.ico"
oCrt:Create()
CLS
&cMacroEx.
oCrt:Destroy()
lMenuExe:=.F.
SetCursor(0)
CLOSE DATA
RETURN NIL
obrigado a todos e bom trabalho!