Página 1 de 2

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 12:30
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.

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 14:04
por fladimir
use o listbox, acredito q vc irá ter um melhor controle

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 19:01
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.

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 20:12
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()

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 20:41
por MSDN
Vc pode usar um GRID, e sempre que atualizar as informações nele, deixar o foco sempre na última linha.

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 20:50
por asimoes
Pode tentar isso:

hwg_Re_insertText( ThisForm:oEdit:handle, ::cText ) // Insere o texto no RICH, o cursor posiciona na última linha

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 21:23
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.

Editbox em pdv frente de caixa

Enviado: 20 Out 2020 22:12
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.

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 09:57
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 ) ;
}

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 15:03
por asimoes
Dr Claudio,

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

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 16:40
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.

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 17:31
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 ) ;
}

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 18:07
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.

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 20:02
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

Editbox em pdv frente de caixa

Enviado: 21 Out 2020 20:24
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