Editbox em pdv frente de caixa

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

Moderador: Moderadores

Avatar do usuário
nilv
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 25 Jan 2013 13:54
Localização: viçosa/MG

Editbox em pdv frente de caixa

Mensagem por nilv »

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 do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Editbox em pdv frente de caixa

Mensagem por fladimir »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Editbox em pdv frente de caixa

Mensagem por JoséQuintas »

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 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/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Editbox em pdv frente de caixa

Mensagem por Fernando queiroz »

@ 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
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Editbox em pdv frente de caixa

Mensagem por MSDN »

Vc pode usar um GRID, e sempre que atualizar as informações nele, deixar o foco sempre na última linha.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Editbox em pdv frente de caixa

Mensagem por asimoes »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Editbox em pdv frente de caixa

Mensagem por JoséQuintas »

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 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/
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Editbox em pdv frente de caixa

Mensagem por MSDN »

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.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Editbox em pdv frente de caixa

Mensagem por Claudio Soto »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Editbox em pdv frente de caixa

Mensagem por asimoes »

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)
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Editbox em pdv frente de caixa

Mensagem por Claudio Soto »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Editbox em pdv frente de caixa

Mensagem por asimoes »

Posicionou na coluna não na linha, fiz assim:

Código: Selecionar todos

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)
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Editbox em pdv frente de caixa

Mensagem por Claudio Soto »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Editbox em pdv frente de caixa

Mensagem por asimoes »

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

Código: Selecionar todos

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Editbox em pdv frente de caixa

Mensagem por asimoes »

Ajustes:

Código: Selecionar todos

     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)
Responder