Editbox em pdv frente de caixa

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

Moderador: Moderadores

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 »

El problema de usar VK_DOWN es que asume que el cursor esta en la primera linea.

No lo probé, pero el codigo sería algo así:

Código: Selecionar todos

#define CRLF HB_OsNewLine()
aLines := HB_ATOKENS( cText, CRLF )
nPos := 0
nLine := 3 // linea a buscar
FOR i = 1 TO LEN( aLines ) - 1
   IF i < nLine 
      nPos += LEN( aLines[i] ) + LEN( CRLF )
   ENDIF
NEXT
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, o código que você postou como posicionar o valor de nPos?

Seria isso?
GoToLine( ThisForm:oEdit:handle, nPos )

Testei aqui, até posiciona na linha mas não não primeira coluna.

É complicado mesmo trabalhar com string

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_LINEINDEX, iLen , 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 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 »

Fiz essa modificação, agora funcionou

nPos += Len( aLines ) + 1 //Len( CRLF )
►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:Fiz essa modificação, agora funcionou

nPos += Len( aLines ) + 1 //Len( CRLF )

Me alegro que lo hayas solucionado, si usas Unicode cambia ese Len() por HB_ULEN()
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 obrigado pelas dicas, pode ser útil para os nossos colegas.
►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
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Editbox em pdv frente de caixa

Mensagem por Poka »

Obrigado.




Poka
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Editbox em pdv frente de caixa

Mensagem por rochinha »

Amiguinhos,

O bloco onde se apresenta os itens pode se usar grid, browse, tbrowse ou textbox. O Textbox seria o mais indicado pois ele não chama foco. Desta forma o foco se mantem no get que pega o código do produto.

Esta tela pode ter preenchida de textboxes para apresentar valores e listas, 1 editbox/get para pegar o codigo e 1 imagebox para apresentar fotos dos produtos.

Como acabou a era da concomitância para pdvs então se pode usar para apresentar os itens um grid ou similar que permita navegar entre os itens e excluir ou alterar alguma informação. Tal recurso, dependendo do cliente, pode ser desabilitado para permitir inclusões mais rápidas e sem intervenção.
pdv.png
No meu caso sempre usei browse e a partir dele disparo todas rotinas e funções.

Estou para fazer uma tela mais simples usando textboxes para apresentar informações de valor, hora, usuario, cupom e um editbox/get para receber a captura de digitação ou leitor.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Editbox em pdv frente de caixa

Mensagem por Itamar M. Lins Jr. »

Olá!
No meu caso sempre usei browse e a partir dele disparo todas rotinas e funções.
Fiz da mesma forma. Como vamos apagar um item por exemplo ?
Falta dar um "tapa" no visual para ficar assim, mais "smart"!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Editbox em pdv frente de caixa

Mensagem por rochinha »

Amiguinhos,
Fiz da mesma forma. Como vamos apagar um item por exemplo ?
Como usei um browse, ele é o foco central de controle, então enquanto se vende apos inserir um item pode-se navegar com setas para cima e para baixo.

Posicionando sobre um item posso fazer qualquer coisa.

As famosas teclas INS e DEL são as metáforas mais indicadas e de fácil memorização pelo fuçuário.

Os botões existentes na interface, podem ser acionados mas sempre retornam o foco para o browse.

Numa tela de venda onde o foco for em um editbox/get para excluir um item eu indicaria inserção de um código de barras especial do gerente de caixa que muda o modo de trabalho do caixa que ao invés de incluir itens permite excluir itens passando o código de barras do produto indesejado.

Não implementei esta idéia, me veio a cabeça durante uma visita ao trono.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
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 »

Mais uma pergunta sobre RichEdit, como pegar o texto selecionado?
►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:Mais uma pergunta sobre RichEdit, como pegar o texto selecionado?

Código: Selecionar todos

//       cText = RichEditBox_GetText ( hWndControl , lSelect )
HB_FUNC ( RICHEDITBOX_GETTEXT )
{
   HWND hWndControl = (HWND) HMG_parnl (1);
   BOOL lSelect     = (BOOL) hb_parl  (2);

   GETTEXTLENGTHEX  GTL;
   GTL.flags = GTL_PRECISE;
   #ifdef UNICODE
       GTL.codepage = CP_UNICODE;
   #else
       GTL.codepage = CP_ACP;
   #endif
   LONG nLength = SendMessage ( hWndControl, EM_GETTEXTLENGTHEX, (WPARAM) &GTL, 0 );
   TCHAR cBuffer [ nLength ];

   GETTEXTEX  GT;
   GT.cb = sizeof (cBuffer);
   GT.flags =  ( lSelect ? GT_SELECTION : GT_DEFAULT );
   #ifdef UNICODE
      GT.codepage = CP_UNICODE;
   #else
      GT.codepage = CP_ACP;
   #endif
   GT.lpDefaultChar = NULL;
   GT.lpUsedDefChar = NULL;

   SendMessage ( hWndControl, EM_GETTEXTEX, (WPARAM) &GT, (LPARAM) &cBuffer );
   HMG_retc ( cBuffer );
}
Cambiar HMG_parnl por hb_parnl y HMG_retc por hb_retc
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, perfeito, algum problema quando eu fiz, CTRL-V, aqui chamamos de copy/paste do inferno
►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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Editbox em pdv frente de caixa

Mensagem por rubens »

Bom dia...
Tá na seção harbour então vale falar de qualquer lib...
Faço na minigui com browse também.. Usando um dbf temporário na memória que é criado qdo entra no form de vendas..
Mas o controle fica no textbox código... que é onde será digitado/lido o código. Na saída deste textbox fica o validador das regras de negócio, se é código de balança, qual a qtde de itens.
Daí para apagar um item setei F10 que joga o foco no browse.. aí éh pressionar delete apagar o registro, e atualizar o browse e recalcular totais usando os labels/text mesmo.. praticamente sem controle de variáveis...
Fica menos controle de teclas e variáveis...
E o posicionamento dos itens/linhas do browse, é facilmente manuseado pela função _Browsend() que posiciona o cursor na última linha do browse.
A manipulação dos itens fica mais simples e contralada pelo dbf e atualização do browse.
Att..
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
marcosLP
Usuário Nível 1
Usuário Nível 1
Mensagens: 47
Registrado em: 13 Nov 2020 10:24
Localização: guarpauava/pr

Editbox em pdv frente de caixa

Mensagem por marcosLP »

Tem muitas opções de cada programador que usa eu gosto mais de exibir uma GRID em que vai sendo alimentada cfe. o codigo da mercadoria foi inserida. Mas como já disse antes existem "N" soluções e a melhor sempre será a que vc desenvolver e poder muda-la sempre que desejar.
Responder