Página 1 de 3

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 00:36
por cjp
Como o outro tópico foi trancado, abri este para tentar obter ajuda para esta dúvida (a outra, do campo senha, foi resolvida com a sugestão dada naquele tópico).

Meu problema é o seguinte: estou transferindo meu sistema para modo gráfico aos poucos, já que ele é muito grande, não vou conseguir fazer tudo de uma vez. Então, a tela inicial está pronta, com os menus principais. Daí, por enquanto, cada submenu vai chamar uma função que ainda está em modo console, no Harbour puro. Chamo por um .exe, desta forma:

Código: Selecionar todos

function consulta
         __run("consultaprocessos34.exe "+us+" "+vers)
return
Na versão 2.17, estava funcionando normalmente.

Nesta versão 2.23, também está funcionando, mas com um pequeno problema: a janela console abre em background, mantendo a janela hwgui em primeiro plano. O usuário teria que alternar a tela para acessar o modo console. Isto, para meus usuários, bastante leigos, seria um problema.

No outro tópico foi sugerido:
A versão 2.23 tem uma coisa muito melhor que a GTHWG!!!!
Permite trabalhar da forma como GTWVG com os comandos da HWGUI, veja os exemplos. Não me interessei, mas o Kresin usa para os "DIVERSOS" projetos que ele faz. Tem um EDITOR de TEXTOS(Win/Linux) que ele usa.
Verifiquei o arquivo test1.prg, na pasta da GTHWG mencionada, mas não entendi como isso resolveria esta minha dúvida.

Alguém poderia me ajudar?

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 04:09
por alxsts
Olá!

Ainda não testei esta GTHWG mas acho que você está fazendo confusão ...

Você está criando uma janela gráfica da HwGUI com um menu e executando um .Exe via RUN.

Creio que o conceito seja outro: cada item do menu gráfico (HwGUI) deve executar a respectiva função, exatamente como é feito no modo console. A diferença é que a tela carácter (modo console) vai abrir dentro da janela gráfica (main window) que contém o menu...

Aguardar a opinião dos colegas...

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 09:26
por sygecom
Inacio,
Já tive esse mesmo problema.
Na época coloquei no meu .prg principal ( onde tem o MAIN() ) a seguinte linha abaixo para resolver, faça um teste ai e nos diga algo.

REQUEST HB_GT_GUI_DEFAULT

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 09:57
por JoséQuintas
Tente com as funções:

hwg_RunConsoleApp()
hwg_RunApp()
hb_Run()

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 11:41
por cjp
Tente com as funções:

hwg_RunConsoleApp()
hwg_RunApp()
hb_Run()
Testei com as três opções, nenhuma resolveu.
Inacio,
Já tive esse mesmo problema.
Na época coloquei no meu .prg principal ( onde tem o MAIN() ) a seguinte linha abaixo para resolver, faça um teste ai e nos diga algo.

REQUEST HB_GT_GUI_DEFAULT
Testei, mas não resolveu.

Olá!

Ainda não testei esta GTHWG mas acho que você está fazendo confusão ...

Você está criando uma janela gráfica da HwGUI com um menu e executando um .Exe via RUN.

Creio que o conceito seja outro: cada item do menu gráfico (HwGUI) deve executar a respectiva função, exatamente como é feito no modo console. A diferença é que a tela carácter (modo console) vai abrir dentro da janela gráfica (main window) que contém o menu...
Isso seria excelente. Mas como fazer isto?

Abertura de outro programa console via hwgui

Enviado: 13 Mar 2024 13:48
por Itamar M. Lins Jr.
Olá!
Inácio, o que vc tem pronto da Hwgui ? Já tem algumas telas com get ?
Agora foi que entendi como vc está fazendo.
Precisamos saber como está seu nível na Hwgui. Coloca se possível for, uma tela sua da Hwgui aqui.

Saudações,
Itamar M. Lins Jr.

Abertura de outro programa console via hwgui

Enviado: 14 Mar 2024 00:41
por cjp
Olá!
Inácio, o que vc tem pronto da Hwgui ? Já tem algumas telas com get ?
Agora foi que entendi como vc está fazendo.
Precisamos saber como está seu nível na Hwgui. Coloca se possível for, uma tela sua da Hwgui aqui.
Meu nível é básico básico, super mega principiante.
Mas estou satisfeito com os avanços que fiz até aqui (já tinha tentado antes, sem nenhum avanço).
Seguem as telas que tenho prontas no anexo.
Segue também o prg:

Código: Selecionar todos

#include "hwgui.ch"
MEMVAR cnSQL
REQUEST HB_GT_GUI_DEFAULT

FUNCTION Main
         Local cRet, oSay1, oSay2, oSay3, nId, cTxt
		 Local oFont := HFont():Add( "MS Sans Serif",0,-13 )
		 private vers :="12/07/22"
		 private oDlg, cnSQL, us, nmus, seis
		 private cSair :="N"
		 private hrabertura :=time()
		 private nProvAtiv :=3

         if "MPCTAC"$netname() .or. "LAPTOP-QG9OOFQ9"$netname()
            nProvAtiv=18
         endif
		 
		 set date brit
		 
         PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
         PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
 
		 do while .t.
		    if us=NIL
		       cRet=login()
			endif

			if us#NIL
               cadativ("Processos34","Processos34: iniciou",,0," ",0,0," ")
               exqado("update fazendo set data='"+dtsql(date())+"',hora='"+time()+"',assunto='Iniciou o processo34' where usuario='"+us+"'",18)
			endif
			
            INIT DIALOG oDlg TITLE "Processos - Versão: "+substr(vers,7,2)+"."+substr(vers,4,2)+"."+substr(vers,1,2) AT 1, 1 SIZE 650, 600 FONT oFont

            MENU OF oDlg
                 MENU TITLE "&Finalizar" //ACTION ConfirmarFechar()
                      MENUITEM "&Sair do sistema" ACTION ConfirmarFechar() //hwg_Msginfo( "Just a test", "Message" )
                 ENDMENU

                 MENU TITLE "&Consultar"
                      MENUITEM "&Abrir opções de consulta" ACTION consulta() 
					  MENUITEM "&Item em execução ou próximo a executar" ACTION consproxima()
                 ENDMENU
				 
                 MENU TITLE "C&adastrar"
                      MENUITEM "&Abrir opções de cadastrar" ACTION cadastro()
					  
                 ENDMENU
				 
                 MENU TITLE "&Manutenção" 
                      MENUITEM "&Abrir opções de manutenção" ACTION manutencao() 
                 ENDMENU
            ENDMENU


            @ 0,110  BITMAP        Bitmap1 ;
             SHOW          "ImagemLondres.jpg" ; 
             STRETCH       0 ;
             SIZE          650,430 //nWidth, nHeight - 65

   
			if cRet="N" .or. cSair="S"
			   return .f.
				   
			elseif cRet="S"
               hb_run("start PROC2P.exe " + us + " " + "visível-"+nmus + " " + seis)			   
			   
               @ 5,60 SAY oSAY2 CAPTION "Olá, "+alltrim(nmus)+". Escolha uma das opções clicando nos botões ou nos menus acima. As opções abrirão, por enquanto, ainda na interface tradicional, até que a mudança de interface seja completada" SIZE 590, 50

               cnSQL := ConexaoMySQL()
               cProc=cnSQL:Open()
       
               cProc=cnSQL:execute("select texto from biblia where dtuso='" + Transform( DtoS( Date() ), "@R 9999-99-99" ) + "'")
			   if cProc:recordcount()=0
		          cProc=cnSQL:execute("select top 1 texto,id from biblia order by dtuso")
			      nId=cProc:Fields("id"):Value
			      cTxt=cProc:Fields("texto"):Value
			      cProc=cnSQL:execute("UPDATE biblia set dtuso='"+dtsql(date())+"' WHERE id="+alltrim(str(nId)))
			   else
			      cTxt=cProc:Fields("texto"):Value
			   endif
               cnSQL:Close()
			   oDlg:Close()
			   
               @ 0,5 BUTTON "Finalizar (Esc)" SIZE 140,50 ON CLICK {||ConfirmarFechar()}
			   
               @ 170,5 BUTTON "Consultar" SIZE 140,50 ;
                 ON CLICK {||consulta()}

               @ 340,5 BUTTON "Cadastrar" SIZE 140,50 ;
                 ON CLICK {||cadastro()}
     
               @ 510,5 BUTTON "Manutenção" SIZE 140,50 ;
                 ON CLICK {||manutencao()}

			   @ 5,540 SAY oSAY3 CAPTION "Pensamento do dia: "+ansi(cTxt) SIZE 590, 170
			   
			endif

            ACTIVATE DIALOG oDlg

			if lastkey()=27
			   if confirmarfechar()="S"
			      return .f.
			   else
			      loop
			   endif
			endif

		 enddo

Return		 

function tradicional
         hb_run("\processos\processos.exe")
return


FUNCTION ConfirmarFechar()
   LOCAL lConfirmado
   lConfirmado := hwg_MsgYesNo("Tem certeza que deseja sair?", "Confirmação")
   IF lConfirmado
      cadativ("Processos34","Processos34: fechou",,0," ",0,0," ")
      exqado("update fazendo set data='"+dtsql(date())+"',hora='"+time()+"',assunto='Saiu do processo34' where usuario='"+us+"'",18)
      oDlg:Close()
	  cSair="S"
	  return "S"
   ENDIF
RETURN "N"

function consulta
         hwg_runapp("consultaprocessos34.exe "+us+" "+vers)
return

function cadastro
         hb_run("cadastraprocessos34.exe "+us+" "+vers)
return

function manutencao
         hb_run("manutencaoprocessos34.exe "+us+" "+vers)
return

function login		 
         Local oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer, oSAY1, oSAY5
         Local snh := ""
		 Local cSenhaErrada :="N"
         Local oE5, cProc
		 private cSair :="N"

		 do while .t.
		    if cSair="S"
			   return "N"
			endif
			
         INIT DIALOG oDlg TITLE "Processos - Versão: "+substr(vers,7,2)+"."+substr(vers,4,2)+"."+substr(vers,1,2) AT 150, 150 SIZE 650, 600 FONT oFont
		 
         @ 0,35  BITMAP        Bitmap1 ;
          SHOW          "WALLPAPER.JPG" ; 
          STRETCH       0 ;
          SIZE          650,530 //nWidth, nHeight - 65
		 
		 if cSenhaErrada="S"
		    snh=space(20)
            @ 20,50 SAY oSAY1 CAPTION "Senha errada; digite novamente a sua senha" SIZE 275, 20
		 endif
		 
         @ 4,10 SAY oSAY1 CAPTION "Digite a sua senha:" SIZE 120, 25
   
         @ 135,00 GET oE5 VAR snh PASSWORD SIZE 130, 35 //Precisa do objeto GET oE5

         @ 300,00  BUTTON "Entrar (Enter)" SIZE 120,35 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}

         @ 460,00 BUTTON "Abandonar (Esc)" SIZE 120,35 ON CLICK {||ConfirmarFechar()}
		 
		 @ 480,565 BUTTON "Abrir no modo tradicional" SIZE 160,30 ON CLICK {||tradicional()}

         @ 3,570 SAY oSAY2 CAPTION "O sistema está apenas começando a mudar de interface; não estranhe" SIZE 425, 20
		 
         ACTIVATE DIALOG oDlg
       
         if lastkey()=27
            if confirmarfechar()="N"
			   loop
			endif
         else
            cnSQL := ConexaoMySQL()
            cProc=cnSQL:Open()
       
            cProc=cnSQL:execute("SELECT usuario,nomeusuar,baseseis FROM usuario WHERE senha='"+snh+"'")
            if cProc:recordcount()=0
			   cProc:Close()
               cnSQL:Close()
			   cSenhaErrada="S"
               loop
            else
               us=cProc:Fields("usuario"):Value
			   nmus=cProc:Fields("nomeusuar"):Value
			   seis=cProc:Fields("baseseis"):Value
               cnSQL:Close()
			   oDlg:Close()
			   return "S"
            endif
         endif
		 enddo
RETURN "D"




FUNCTION ConexaoMySQL(nProvedor)
   LOCAL cnSQL := win_OleCreateObject("ADODB.Connection")
   LOCAL cServer :="mssql.xxx.com.br"
   LOCAL cDatabase :="xxx"
   LOCAL cUser :="xxx"
   LOCAL cPassword :="xxx"
   Local cPorta :="1039"
   Local cDriver :="SQL Server"

   if nProvedor=3
      cServer:="mysql.xxx.com.br"
	  cPassword="xxx"
	  cPorta="3306"
	  cDriver="MariaDB ODBC 3.1 Driver"
   endif
   
   cnSQL:ConnectionString := "DRIVER=" + cDriver +";SERVER=" + cServer + ";Database=" + cDatabase + ";UID=" + cUser + ";PWD=" + cPassword + ";PORT=" + cPorta
   cnSQL:CursorLocation   := 3
RETURN cnSQL


*****************************************

//=========================================================
//N|ANSI
//---------------------------------------------------------
//D|converte textos com caracteres ASCII para o padrÒo ANSI
//---------------------------------------------------------
//R|texto convertido
//=========================================================
function ANSI(cTxt) // 1 texto a ser convertido para o padrÒo ANSI

local I
local aTab
local nCod

aTab:= {;
199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,;
201,230,198,244,246,242,251,249,255,214,220,248,163,216,215,131,;
225,237,243,250,241,209,170,176,191,174,172,189,188,161,171,187,;
35, 35, 35,124, 43,193,194,192,169, 43,124, 43, 43,162,165, 43,;
43, 43, 43, 43, 45, 43,227,195, 43, 43, 43, 43, 43, 61, 43,164,;
240,208,202,203,200,185,205,206,207, 43, 43, 35, 35,166,204, 35,;
211,223,212,210,245,213,181,254,222,218,219,217,253,221,175,180,;
173,177, 61,190,182,167,247,184,186,168,183,185,179,178, 35, 32 }

for I:= 1 to Len(cTxt)
nCod:= ASC(SubStr(cTxt,I,1))

if nCod >= 128
cTxt:= Stuff(cTxt,I,1,Chr(aTab[nCod -127]))
endif
next
return cTxt






function cadativ(ac,det,nrt,pr,cp,tu,tc,ass,usus,mc,tp)
         local tela, cquery, ret
		 local prgor :=Hb_CmdArgArgV()
		 local nvz :=0
		 local nvz2 :=0
		 
         do case
		    case "vis¡vel"$nmus
			     prgor=prgor+"-Vis¡vel"
		    case "visível"$nmus
			     prgor=prgor+"-Visível"
		    case "Task"$nmus
			     prgor=prgor+"-Task"
			case "ireto"$nmus
			     prgor=prgor+"-Direto"
			otherwise
			     prgor=prgor+"-N"
		 endcase

		 prgor=prgor+"-"+hrabertura
		 if len(prgor)>95
		    prgor=substr(prgor,1,95)
		 endif

		 tu=round(tu,1)
		 
		 if empty(usus) .or. valtype(usus)="U"
		    usus=us
		 endif
		 
		 if empty(nrt)
		    nrt="-----"
		 endif
		 
		 if empty(mc) .or. valtype(mc)="U"
		    mc="N"
		 endif
		 
		 if empty(tp) .or. valtype(tp)="U" .or. tp=NIL .or. tp=nil
		    tp=0
		 endif
		 
	     do while !empty(substr(det,nvz))
		    nvz2++
			if us="I" .and. nvz2>3000 .and. int(nvz2/1000)=nvz2/1000
			   @ maxrow(),1 say "Acertando det no cadativ "+alltrim(str(nvz2))
			   inkey(.001)
			endif
			if nvz2>30000
			   exit
			endif
		    if asc(substr(det,nvz,1))=0 .or. asc(substr(det,nvz,1))=39
		       if empty(substr(det,nvz))
			      exit
			   endif
			   det=substr(det,1,nvz-1)+substr(det,nvz+1)
			else
			   nvz++
			endif
	     enddo

		 det=alltrim(substr(det,1,2200))+"; "+procname(1)+"("+alltrim(str(procline(1)))+"); "+procname(2)+"("+alltrim(str(procline(2)))+"); "+procname(3)+"("+alltrim(str(procline(3)))+"); "+procname(4)+"("+alltrim(str(procline(4)))+"); "+procname(5)+"("+alltrim(str(procline(5)))+"); "+procname(6)+"("+alltrim(str(procline(6)))+"); "+procname(7)+"("+alltrim(str(procline(7)))+"); versÆo: "+vers+"; nProvAtiv: "+alltrim(str(nProvAtiv))
			
		 if empty(ass) .or. len(ass)=0 .or. valtype(ass)="U"
		    ass="-------"
		 endif
		 
		 if len(ass)>45
		    ass=substr(ass,1,45)
		 endif

         cQuery="INSERT INTO ativ (usuario,programa,data,hora,acao,detalhes,nrtarefa,prioridade,campo,tempousado,tempocompu,tempopago,assunto,maquina,marca) "+;
		  "values ('"+usus+"','"+prgor+"','"+dtsql(date())+"','"+time()+"','"+ac+"','"+det+"','"+nrt+"',"+alltrim(str(pr))+",'"+cp+"',"+alltrim(str(tu))+","+alltrim(str(tc))+","+alltrim(str(tp))+",'"+ass+"','"+netname()+"','"+mc+"')"
 
         ret=exqado(cquery,nProvAtiv)
		 
return .t.






function exqado(cQuery,nServidor)
		 local exq

         if empty(nServidor) .or. nServidor=NIL
            nServidor=3
		 endif

         conexaoado=ConexaoMySQL(nServidor)
         conexaoado:open()
			
         exq=conexaoado:execute(cQuery)
		 
	     conexaoado:Close()
return .t.




function dtsql(dt)
return Transform( DtoS( dt ), "@R 9999-99-99" )

Abertura de outro programa console via hwgui

Enviado: 14 Mar 2024 20:10
por JoséQuintas
Minha sugestão é fazer o contrário.

Já tem o aplicativo funcionando sem hwgui.
Agora basta abrir dialogs hwgui, NO MESMO EXE.
No final, com tudo pronto, troque menu e login.

Com certeza só posso ajudar no pontapé inicial, o mesmo que já fiz no dlgauto.
A partir daí vai precisar de quem realmente usa hwgui.

Se não tiver ajuda, não há o que fazer, vai ter que procurar outra opção.

Abertura de outro programa console via hwgui

Enviado: 14 Mar 2024 20:32
por Itamar M. Lins Jr.
Olá!
Mas estou satisfeito com os avanços que fiz até aqui (já tinha tentado antes, sem nenhum avanço).
Então posta aqui um .PRG desse seu um que gera um .exe desse que vc chama.
Pega o mais simples que vc tem o menor. Se for muito grande coloque a parte que vc ainda não sabe converter para Hwgui.
Hwgui é a LIB gráfica MAIS SIMPLES de aprender(que conheço) e que tem mais sintaxe parecida com clipper.

Saudações,
Itamar M. Lins Jr.

Abertura de outro programa console via hwgui

Enviado: 14 Mar 2024 20:38
por JoséQuintas
Atenção:
Só tome cuidado pra não postar fonte com usuário/senha, se está separando em módulos, agora deve ter isso em tudo que é fonte.

Abertura de outro programa console via hwgui

Enviado: 15 Mar 2024 01:46
por cjp
Segue um dos .prgs:

Código: Selecionar todos

         REQUEST SQLMIX, SDDODBC, DBFNTX
         ANNOUNCE RDDSYS

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

function main()
		 parameters us, vers //entrada, versentrada
		 Local cProc
		 private conexao
         public ptreceb :=""
         public ptbase :="\tarefas"
         setcancel(.f.)

         RDDSETDEFAULT("DBFNTX")
         HB_SETCODEPAGE('PT850')
         HB_LANGSELECT('PT')

		 
         set color to w/b,b/w
		 cls

		 @ 1,25 say "Menu consultar"
		 @ 2,0 to 2,maxcol() double
		 
		 pargerais()
		 
         IF ADOconecta( 18, 5 )
		    cProc=conexao:execute("select nomeusuar,dtinicio,dtaltsnh,envia,pastaftp,baseseis from usuario where usuario='"+us+"'")
		    nmus=cProc:Fields("nomeusuar"):Value
		    dtinic=cProc:Fields("dtinicio"):Value
            dtsnh=cProc:Fields("dtaltsnh"):Value
            usant=cProc:Fields("envia"):Value
            ativ="ativ"+lower(us)
            ptreceb=alltrim(cProc:Fields("pastaftp"):Value)
            seis=cProc:Fields("baseseis"):Value
	        cProc:Close()
		    conexao:close()
		 Endif
				  
                  chmfunc("consulta",,"S")
				  
return .t.
A função consulta está em outro prg, assim:

Código: Selecionar todos

function consulta
         local tlcons, cProc
         private nTecla2 :=lastkey()
		 private nTecla :=lastkey()
		 private entscons :="N"
		 private conexao
          if us="I"
             private v1[6]
             v1[1]="Data"
             v1[2]="Substr(str(Prioridade),1,1)"
             v1[3]="arquivo"
             v1[4]="Assunto"
             v1[5]="substr(tarefa,1,13)"
             v1[6]="Vinculo"
             private v3[5]
             v3[1]="Obs"
             v3[2]="Prior."
             v3[3]="Nr.item"
             v3[4]="Assunto"
             v3[5]="Tarefa"
          else
             private v1[4]
             v1[1]="alltrim(str(prioridade))" //  "Substr(str(Prioridade),1,1)"
             v1[2]="arquivo"
             v1[3]="Assunto"
             v1[4]="substr(tarefa,1,21)"
             private v3[4]
             v3[1]="Prior."
             v3[2]="Nr.item"
             v3[3]="Assunto"
             v3[4]="Tarefa"
          endif
          save scre to tlcons
          do while .t.
             keysec(27,150,-1,.t.)
             opcons=0
             use
             rest scre from tlcons
             if us="I"
			    a=8
				if "N293S0U"$upper(netname()) .or. "INACIO"$upper(netname()) .or. "INACIOCARVALHO"$upper(netname()) .or. "RODRIGO"$upper(netname()) .or. "CAMYLLA"$upper(netname()) .or. "VANESSA"$upper(netname()) .or. "LUIZ"$upper(netname()) .or. "MVAZ"$upper(netname())
				   b=69
				else
				   b=62
				endif
			 else
			    a=4
				b=16
			 endif
			 
             do case
                case us="I"
                     @ a,b clear to a+21,b+39
                     @ a,b to a+21,b+39 double
				case us="V" .or. us="W"
                     @ a,b clear to a+13,b+39
                     @ a,b to a+13,b+39 double
				case us="G"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+15,b+39 double
                case us="Y" .or. us="J" .or. us="N" .or. us="V" .or. us="Z"
                     @ a,b clear to a+14,b+39
                     @ a,b to a+14,b+39 double
				case us="E"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+15,b+39 double
				case us="Z" .or. us="D"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+13,b+39 double
                otherwise
                     @ a,b clear to a+11,b+39
                     @ a,b to a+11,b+39 double
             endcase
			 
             @ a+1,b+1 prompt "Finalizar                             "
			 @ a+2,b+1 prompt "Item em execução ou próximo a executar"
             @ a+3,b+1 prompt "Por assunto                           "
             @ a+4,b+1 prompt "Pelo conteúdo                         "
             @ a+5,b+1 prompt "Pelo número do item                   "
             @ a+6,b+1 prompt "Instruções de uso do sistema          "
             if us="E" .or. us="G" .or. us="Y"
                @ a+7,b+1 prompt "Pontos do programa                    "
             else
                @ a+7,b+1 prompt "Programa de produtividade             "
             endif
			 if us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I"
                @ a+8,b+1 prompt "Pelo número do processo               "
                @ a+9,b+1 prompt "Pela data de carga do processo        "
			    @ a+10,b+1 prompt "Por data de audiência                 "
			 endif
			 if us="I"
			    a=a+3
			 endif
             if us="I" .or. us="V" .or. us="Y" .or. us="G" .or. us="J" .or. us="D" .or. us="Z" .or. us="N" .or. us="W" .or. us="E" // .or. us="U" .and. date()>ctod("04/02/16")) .or. us="F" .or. us="M"
                @ a+8,b+1 prompt "Telefones                             "
                @ a+9,b+1 prompt "Dados pessoais                        "
                @ a+10,b+1 prompt "Lista de compras                      "
				@ a+11,b+1 prompt "Transferências bancárias              "
				@ a+12,b+1 prompt "Notas para lançamento                 "
				if us="J" .or. us="Z"
				   @ a+13,b+1 prompt "Transferência para músicos           "
				endif
				if us="E"
			       @ a+13,b+1 prompt "Despesas Bia                         "
				   @ a+14,b+1 prompt "Despesas Meg                         "
				endif
				if us="G"
				   @ a+13,b+1 prompt "Atividades externas                   "
				   @ a+14,b+1 prompt "Contas pra pagar                      "
				endif
				if us="Z"
				   @ a+14,b+1 prompt "Contas pra pagar                      "
				endif
             endif
             if us="I"
                @ a+13,b+1 prompt "Prioridade zero                       "
                @ a+14,b+1 prompt "Por vínculo                           "
                @ a+15,b+1 prompt "Por usuário                           "
                @ a+16,b+1 prompt "Por usuário não resolvida             "
             endif
             menu to opcons
			 
			 if opcons#0 .and. opcons#1
			    @ maxrow()-3,15 say "Abrindo consulta; aguarde..."
		     endif
			 set key -6 to
                do case
				   case us="E" .and. (opcons=13 .or. opcons=14)
                        IF ADOconecta( 3, 4 )
				           if opcons=13
                              cProc=conexao:execute("select sum(valor) as soma from despbia where id>=1")
				           else
                              cProc=conexao:execute("select sum(valor) as soma from despmeg where id>=1")
			               endif
		                   s1=cProc:Fields("soma"):Value
   		                   cProc:Close()
		                   conexao:close()
			               cls
				           @ maxrow()-1,1 say "Total: "+alltrim(str(s1))
                           inkey(2)						
						Endif
						consado("select data,valor,descricao,situacao from "+if(opcons=13,"despbia","despmeg")+" where id>=1")

                   case opcons=2
                        cadativ("C.próxima","Consulta item em execução ou próximo a executar; tarfaz: "+tarfaz," ",0," ",0,0," ")
                   case opcons=3
                        cadativ("C.assunto","Consulta por assunto"," ",0," ",0,0," ")
                   case opcons=4
                        cadativ("C.expressão","Consulta pelo conteúdo"," ",0," ",0,0," ")
                   case opcons=5
                        cadativ("C.nr.item","Consulta por número do item"," ",0," ",0,0," ")
                   case opcons=6
                        cadativ("C.instruções","Consulta instruções"," ",0," ",0,0," ")
				   case opcons=8 .and. (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I")
                        cadativ("C.nr.processo","Consulta pelo número do processo"," ",0," ",0,0," ")
				   case opcons=9 .and. (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I")
                        cadativ("C.dtcarga","Consulta pela data da carga de processos"," ",0," ",0,0," ")
				   case opcons=10 .and. (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I")
                        cadativ("C.audiências","Consulta por data de audiências"," ",0," ",0,0," ")
                   case (opcons=7 .and. us#"I") .or. (us="I" .and. opcons=10)
                        cadativ("C.produtividade","Consulta programa de produtividade"," ",0," ",0,0," ")
                   case (opcons=8 .and. us#"I") .or. (us="I" .and. opcons=11)
                        cadativ("C.telefones","Consulta telefones"," ",0," ",0,0," ")
                   case (opcons=9 .and. us#"I") .or. (us="I" .and. opcons=12)
                        cadativ("C.dad.pessoais","Consulta dados pessoais"," ",0," ",0,0," ")
                   case (opcons=10 .and. us#"I") .or. (us="I" .and. opcons=13)
                        cadativ("C.compras","Consulta lista de compras"," ",0," ",0,0," ")
                   case (opcons=11 .and. us#"I") .or. (us="I" .and. opcons=14)
                        cadativ("C.transfer","Consulta transferências a realizar"," ",0," ",0,0," ")
                   case (opcons=12 .and. us#"I") .or. (us="I" .and. opcons=15)
                        cadativ("C.notas","Consulta notas para lançamento"," ",0," ",0,0," ")
                endcase
			
             do case
                case opcons=0 .or. opcons=1
                     exit
					 
				case opcons=2
                     chmfunc("consprox",,"S")				

                case opcons=3 .or. opcons=4 .or. opcons=15
				     if nProvTar=18
					    chmfunc("novaconsexpr",,"S")
					 else
					    chmfunc("consexpr",,"S")
					 endif

                case opcons=5
				     chmfunc("consnrtar",,"S")
					 
                case opcons=6
				     chmfunc("consinstr",,"S")

			    case (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I") .and. opcons=8
					 chmfunc("consproc",,"S")
					 
			    case (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I") .and. opcons=9
				     chmfunc("consdtcarga",,"S")

			    case (us="U" .or. us="S" .or. us="K" .or. us="M" .or. us="F" .or. us="I") .and. opcons=10
				     chmfunc("consdtaud",,"S")
					 
				case (opcons=7 .and. us#"I") .or. (us="I" .and. opcons=10)
				     chmfunc("consprod",,"S")

				case (opcons=8 .and. us#"I") .or. (us="I" .and. opcons=11)
                     chmfunc("listinic",,"S")

				case (opcons=9 .and. us#"I") .or. (us="I" .and. opcons=12)
				     chmfunc("consdadp")

				case (opcons=10 .and. us#"I") .or. (us="I" .and. opcons=13)
                     chmfunc("comprar",,"S")

				case (opcons=11 .and. us#"I") .or. (us="I" .and. opcons=14)
				     chmfunc("transferban",,"S")
					 
				case (opcons=12 .and. us#"I") .or. (us="I" .and. opcons=15)
				     chmfunc("consnotas",,"S")
					 
                case opcons=16
                     chmfunc("conszero",,"S")

			    case (us="J" .or. us="Z") .and. opcons=13
					 chmfunc("transfermus",,"S")
						
			    case us="G" .and. opcons=13
					 chmfunc("externas",,"S")
						
			    case (us="G" .or. us="Z") .and. opcons=14
					 chmfunc("contaspagar",,"S")
						
                case opcons=17
				     save scre to tlrsp
                     do while .t.
                        oprsp=0
                        rest scre from tlrsp
                        @ 10,30 clear to 15,68
                        @ 10,30 to 15,68 double
                        @ 11,31 prompt "Finalizar"
                        @ 12,31 prompt "Exibir atuais por ordem de prioridade"
                        @ 13,31 prompt "Ordenar atuais por realizador        "
                        @ 14,31 prompt "Exibir todas por ordem de prioridade "
                        menu to oprsp
                        do case
                           case oprsp=0 .or. oprsp=1
                                exit
                           case oprsp=2 .or. oprsp=3 .or. oprsp=4
                                consrespsql() 
                        endcase
                     enddo
					 
                case opcons=18 .or. opcons=19
				     chmfunc("consusu",,"S")

              endcase
           enddo
cadativ("Consulta","Consulta: final",,0," ",0,0," ")
return
O problema, como podem ver, é que cada função chama várias outras, que, por sua vez, chama ainda outras. É muita coisa. Não tenho condições de adaptar tudo de uma vez.
Por isso minha ideia de ir adaptando aos poucos, colocando a parte já adaptada no prg principal, já em hwgui. E o que ainda não está adaptado, deixando assim, no sistema antigo.
Pra isso funcionar, só falta conseguir abrir a tela console em primeiro plano, como estava acontcendo na versão 2.17. Só isso já me resolveria o problema por agora.
Mas a ideia de abrir em modo console na mesma janela seria ainda melhor, só que não faço ideia de como fazer isso.

Abertura de outro programa console via hwgui

Enviado: 15 Mar 2024 07:57
por Itamar M. Lins Jr.
Olá!
Pra isso funcionar, só falta conseguir abrir a tela console em primeiro plano, como estava acontcendo na versão 2.17.
Tem aqui no forum, uma função que traz pra frente a tela do .exe, eu não consegui achar ainda.
Uma que vê se já esta em execução e outras... Não lembro onde está e nome.
Mas essas telas que vc postou não é complicado. Depois vc coloca a TELA pronta como fica, pra ter uma noção melhor.(claro s for possível)

Saudações,
Itamar M. Lins Jr.

Abertura de outro programa console via hwgui

Enviado: 15 Mar 2024 10:42
por cjp
A única opção que achei no fórum foi neste tópico:
viewtopic.php?f=4&t=19089&p=164136#p164136
Mas testei e não funcionou. Até postei lá, mas não obtive resposta.
Segue tela no anexo.

Abertura de outro programa console via hwgui

Enviado: 15 Mar 2024 11:48
por Itamar M. Lins Jr.
Olá!
Captura de tela 2024-03-15 115037.png
Captura de tela 2024-03-15 115037.png (8.62 KiB) Exibido 11918 vezes

Código: Selecionar todos

#include "hwgui.ch"
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850, HB_CODEPAGE_UTF8EX
Function Main
Local oDlg,oFont, cTitle := "Menu Consultar"
HB_CDPSELECT([PTISO])
hb_langselect([PT])

PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -16

INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitle Font oFont AT 0,0 SIZE 380,450 ;
                                                       STYLE  WS_POPUP+WS_VISIBLE+WS_CAPTION+WS_SYSMENU+DS_CENTER

@ 10,010 BUTTON "Finalizar"                               SIZE 350,30 On Click {||hwg_EndDialog()}
@ 10,040 BUTTON "Item em Execução ou próximo a executar"  SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")} 
@ 10,070 BUTTON "Por Assunto"                             SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,100 BUTTON "Pelo Conteúdo"                           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,130 BUTTON "Pelo Número do Item"                     SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,160 BUTTON "Instruções de Uso do Sistema"            SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,190 BUTTON "Programa de produtividade"               SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,220 BUTTON "Pelo número do processo"                 SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,250 BUTTON "Pela data de carga do proceso"           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,280 BUTTON "Pro data de audiência"                   SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}

oDlg:Activate()

Return .T.
Lembrando que existe muitas formas de fazer, essa que estou mostrando é uma maneira de fazer.
ATENÇÃO, usando o PTISO no editor do FONTE PRG! Por conta das palavras acentuadas.

Saudações,
Itamar M. Lins Jr.

Abertura de outro programa console via hwgui

Enviado: 15 Mar 2024 13:09
por Itamar M. Lins Jr.
Olá!
Lembrando que o Button da Hwgui 2.23(SVN) pega imagem!!!! E roda no LINUX.

Código: Selecionar todos

* utils/tutorial/tutor_eng.xml
    * "Get system"/"Dialog with text Gets" - icons on buttons added
Pode desenhar os botões maiores com imagens.

A 2.17 NÃO TEM ISSO!
ButtonEx Só roda no WINDOWS!
Depois que vc vai entendendo como é, precisamos de tempo e criatividade para usufruir de tantas opções.

Saudações,
Itamar M. Lins Jr.