Página 1 de 1

Tirando vantagem do console igual GUI

Enviado: 25 Jul 2025 19:32
por JoséQuintas
Comecei a mexer em fonte de terceiros, e acabei usando algumas coisas não comuns.

Minha GETSYS tem uma alteração simples: atualizar GETs, mesmo com WHEN .F.

Acabei também usando algo fora do comum, fazer o que....

Código: Selecionar todos

   @ 06, 71 GET vc[22] PICTURE "@K9999" ;
      WHEN cOpcao == "I" .OR. lPodeAlterar ;
      VALID { ||
         LOCAL lOk
         vc[22] := StrZero( Val( vc[22] ), 3 )
         lOk := pesquisa( "ven",vc[22],"codven","nome" )
         vc[22] := ven->CodVen // retorno da pesquisa
         //@ 13, 17 SAY Left( ven->Nome, 20 )
         cTxtVendedor1 := Left( ven->Nome, 20 ) // atualiza tela
         RETURN lOk
         }
O fora do comum é esse codeblock no valid.

O recurso da minha GETSYS não dá pra ver só olhando esse bloco.
é necessário ver o outro GET.

Estou apenas tentando facilitar o trabalho.
Eram 3 telas de get, e agora só uma.

Qual o maior problema em tela cheia de coisas ?
Por exemplo, mostrar o nome do vendedor, que por sinal é várias linhas depois do GET.

Como GUI Faz ?
Ela tem lá o LABEL, é só atualizar o LABEL.

Código: Selecionar todos

   @ 13, 02 SAY 'Vendedor 1/2.:                     /                                         '
   @ 13, 17 GET cTxtVendedor1 WHEN .F.
   @ 13, 38 GET cTxtVendedor2 WHEN .F.
Pois é.... tenho GET que não faz GET.
Se não faz GET..... é um SAY.
Pra atualizar o nome dos vendedores, eu atualizo a variável cTxtVendedor1 e cTxtVendedor2

Por enquanto me limitando a deixar SAY perto de GET.

Código: Selecionar todos

   @ 10, 02 SAY 'Entr:                                          Bai:                          '

   @ 10,08 GET vc[16] PICTURE "@!"
   @ 10,54 GET vc[17] PICTURE "@!"

   @ 11, 02 SAY 'Cid.:                           UF..:    CEP.:           Fax:                '

   @ 11,08 GET vc[18] PICTURE "@!"
   @ 11,40 GET vc[19] PICTURE "@!"
   @ 11,49 GET vc[20] PICTURE "@r 99999-999"
   @ 11,64 GET vc[15]
Depois posso mudar tudo pra Row() + 1, Col() + 2, sem nenhum problema de linha desconhecida.

Ah sim, uso a mesma tela pra SAY e GET.
Pra SAY é só fazer CLEAR GETS no final.

É uma coisa meio comum em GUI, de ter tela fixa e só atualizar conteúdo.
Mas estou fazendo a mesma coisa usando console.

Por default o harbour não atualiza GET com WHEN.
Essa alteração simples da getsys faz toda diferença.

É até interessante.... mas em GUI seria quase o mesmo fonte !!!
Ao invés de cTxtVendedor1 := texto, seria LabelVendedor1:Value := texto

E assim vou indo....
Fonte não GUI, mas não tão fora do estilo GUI....

Talvez interessante pra ajudar quem só trabalha com console a entender mudanças GUI.
Que só precisa criar a tela uma vez.

E a tela vazia ?
Ué....

Código: Selecionar todos

GOTO BOTTOM
SKIP
Pega os mesmos campos, que virão vazios, e usa o mesmo SAY.

Tirando vantagem do console igual GUI

Enviado: 25 Jul 2025 20:09
por JoséQuintas
Aproveitando....
Acho que já comentei aqui.

O segredo desse tipo de codeblock é não colocar o ponto e vírgula

Código: Selecionar todos

{ ||
Se colocar ponto e vírgula, será um codeblock comum.
Se deixar sem nada, na próxima linha começa a "function" sem nome, que pode declarar variáveis e ter RETURN.
Demorei pra perceber isso.