Tirando vantagem do console igual GUI

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tirando vantagem do console igual GUI

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tirando vantagem do console igual GUI

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder