Clipper On Line • Ver Tópico - Editbox em pdv frente de caixa

Editbox em pdv frente de caixa

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

Moderador: Moderadores

 

Editbox em pdv frente de caixa

Mensagempor nilv » 20 Out 2020 12:30

ola pra todos, estou fazendo um pdv - frente de caixa e notei em varios sistemas que usam texto tipo editbox para mostrar as mercadorias vendidas, gostaria de saber se realmente é usado o editbox e se for como fazer para mostrar sempre os ultimos itens quando termina o numero de itens no espaco visivel, como gobottom de uma banco de dados. desde ja agradeço.
Anexos
pdv.png
Avatar de usuário

nilv
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 25 Jan 2013 12:54
Cidade/Estado: viçosa/MG
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Editbox em pdv frente de caixa

Mensagempor fladimir » 20 Out 2020 14:04

use o listbox, acredito q vc irá ter um melhor controle
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Editbox em pdv frente de caixa

Mensagempor JoséQuintas » 20 Out 2020 19:01

nilv escreveu:como fazer para mostrar sempre os ultimos itens quando termina o numero de itens no espaco visivel, como gobottom de uma banco de dados. desde ja agradeço.


Veja se o controle tem a opção de ir para o final.

Em último caso, o Windows tem algo parecido com KEYBOARD, basta usar o handle da janela.
Só não mencionou qual é a LIB, isso faz diferença sobre a solução.
Num primeiro momento, essa tela pode ser até gtwvg ou gtwvw, ainda mais porque está no tópico do Harbour.
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: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Editbox em pdv frente de caixa

Mensagempor Fernando queiroz » 20 Out 2020 20:12

@ 457,96 RICHEDIT oRichedit1 TEXT cRichedit1 SIZE 544,471 ;
STYLE ES_MULTILINE +WS_BORDER+ES_WANTRETURN+ES_AUTOVSCROLL +WS_VSCROLL ;
FONT HFont():Add( 'Courier',0,-13,400,,,)
oRichedit1:Anchor := 161
Abrindo a Venda:
cRichedit1 += "PEDIDO ##"+STRZERO(MEMVAR->nNUMNOT,6,0) + '## ' + DTOC(MEMVAR->dDAT_HOJE) + " " + TIME() + HB_EOL()+ HB_EOL()

Colocando um Item novo no Pedido
cRichedit1 += "##"+STR(MEMVAR->nCODPRO,13,0) + '# ' + SUBSTR(PRODUTOS->DESPRO,1,30) + HB_EOL()
cRichedit1 += " " + STR(MEMVAR->nQTDPRO,10,3)+" " + PRODUTOS->TIPUNI + " X " + STR(PRODUTOS->PREVEN,10,2)+ " = " + STR((PRODUTOS->PREVEN * MEMVAR->nQTDPRO),10,2) + HB_EOL()
formVendas:oRichedit1:SETTEXT(cRichedit1)
formVendas:oRichedit1:SETFOCUS()

Adicionando Mais itens ja existente no Pedido
cRichedit1 += "##"+STR(MEMVAR->nCODPRO,13,0) + '# ' + SUBSTR(PRODUTOS->DESPRO,1,30) +" ADD"+ HB_EOL()
cRichedit1 += " " + STR(ITENS->QTDPRO,10,3)+" " + PRODUTOS->TIPUNI + " X " + STR(PRODUTOS->PREVEN,10,2)+ " = " + STR((PRODUTOS->PREVEN * ITENS->QTDPRO),10,2) + HB_EOL()
formVendas:oRichedit1:SETTEXT(cRichedit1)
formVendas:oRichedit1:SETFOCUS()

Removendo item do Pedido
cRichedit1 += "##"+STR(MEMVAR->nCODPRO,13,0) + '# ' + SUBSTR(PRODUTOS->DESPRO,1,30) +" DEL"+ HB_EOL()
cRichedit1 += " " + STR(ITENS->QTDPRO,10,3)+" " + PRODUTOS->TIPUNI + " X " + STR(PRODUTOS->PREVEN,10,2)+ " = " + STR((PRODUTOS->PREVEN * ITENS->QTDPRO),10,2) + HB_EOL()
formVendas:oRichedit1:SETTEXT(cRichedit1)
formVendas:oRichedit1:SETFOCUS()
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Editbox em pdv frente de caixa

Mensagempor MSDN » 20 Out 2020 20:41

Vc pode usar um GRID, e sempre que atualizar as informações nele, deixar o foco sempre na última linha.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Editbox em pdv frente de caixa

Mensagempor asimoes » 20 Out 2020 20:50

Pode tentar isso:

hwg_Re_insertText( ThisForm:oEdit:handle, ::cText ) // Insere o texto no RICH, o cursor posiciona na última linha
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Editbox em pdv frente de caixa

Mensagempor JoséQuintas » 20 Out 2020 21:23

Interessante.

por um lado, a "mais GUI" seria o grid, porque não fica preso a um fonte "console".
por outro lado, o fonte console pode criar uma semelhança maior com o cupom fiscal, dependendo do cupom fiscal.

Leve em conta o conjunto: o que precisa pra controlar a venda inteira, impressão, etc.
Veja qual conjunto terá um melhor aproveitamento de fonte.
Se usar um array ou um banco de dados, pode ser que facilite usar algo relacionado, pra mostrar/controlar/imprimir.
É por onde eu escolheria, pelo melhor custo/benefício.
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: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Editbox em pdv frente de caixa

Mensagempor MSDN » 20 Out 2020 22:12

Se escolher um GRID, pode salvar as informações da venda ( no momento em que vende ) em um Array, em um DBF ou em uma tabela SQL, fica mais fácil de manipular, usar o GRID é como usar o Excel, linha x coluna.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Editbox em pdv frente de caixa

Mensagempor Claudio Soto » 21 Out 2020 09:57

Esta funcion en C coloca el cursor al final de un EditBox.
ej.
SetEnd( hWndEditBox )

HB_FUNC ( SETEND )
{
HWND hWnd = hb_parnl (1);
int iLen = GetWindowTextLength( hWnd );
SendMessage( hWnd, EM_SETSEL, iLen, iLen );
SendMessage( hWnd, EM_SCROLLCARET, 0 , 0 ) ;
}
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Editbox em pdv frente de caixa

Mensagempor asimoes » 21 Out 2020 15:03

Dr Claudio,

Para posicionar em uma linha especifica como fica a função ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Editbox em pdv frente de caixa

Mensagempor Claudio Soto » 21 Out 2020 16:40

asimoes escreveu:Dr Claudio,

Para posicionar em uma linha especifica como fica a função ?

Hola Alexandre,
cambiar esta linea:
int iLen = GetWindowTextLength( hWnd );
Por esta:
int iLen = hb_parnl(2);

Pasar a la funcion como segundo parametro la linea deseada.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Editbox em pdv frente de caixa

Mensagempor asimoes » 21 Out 2020 17:31

Posicionou na coluna não na linha, fiz assim:
HB_FUNC ( GOTOLINE )
{
   HWND hWnd = hb_parnl (1);
   int iLen = hb_parnl(2);
   SendMessage( hWnd, EM_SETSEL, iLen, iLen );
   SendMessage( hWnd, EM_SCROLLCARET, 0 , 0 ) ;
}
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Editbox em pdv frente de caixa

Mensagempor Claudio Soto » 21 Out 2020 18:07

Esa funcion posiciona en un determinado caracter, el EditBox no trabaja con lineas/columnas, todo el contenido es tratado como una unica string.
Para localizar una determinada linea, hay que obtener la string del EditBox, hacer una split con los CRLF, y luego calcular el numero del caracter que corresponde al inicio de la linea en cuestion.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Editbox em pdv frente de caixa

Mensagempor asimoes » 21 Out 2020 20:02

Claudio Soto escreveu:Esa funcion posiciona en un determinado caracter, el EditBox no trabaja con lineas/columnas, todo el contenido es tratado como una unica string.
Para localizar una determinada linea, hay que obtener la string del EditBox, hacer una split con los CRLF, y luego calcular el numero del caracter que corresponde al inicio de la linea en cuestion.

Já que não tem como a gente simula

nLinha := 1
     
FOR I:=0 TO nLinha
   hwg_Keyb_event( VK_DOWN )
NEXT
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Editbox em pdv frente de caixa

Mensagempor asimoes » 21 Out 2020 20:24

Ajustes:
     SetTop( ThisForm:oEdit:handle )
     
      nLinha := 3
     
      FOR I:=1 TO nLinha STEP 2
         hwg_Keyb_event( VK_DOWN )
      NEXT
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para Harbour

Quem está online

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