Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4508 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal sei que minha duvida não é especifica sobre o ACBR porém como muitos aqui tem PDV acredito que alguns já tenha passado com esse problema.

Eu estou num dilema eu fiz um PDV que usa apenas o teclado ele dispensa completamente o uso do Mouse, porém percebo que em algumas situações a aplicação perde o focu.

eu já fiz rotinas matando o processo "Explorer.exe" assim que abre o meu PDV e volta a executar o "Explorer.exe" quando o meu PDV é fechado mais mesmo assim não tenho tido os resultados esperados

Eu já usei esse tipo codigo em um Timer

if Not Application.Active then begin

if Assigned(Screen.ActiveForm) Then

ForceWindow(Screen.ActiveForm.Handle);

end;

Aqui em minha cidade existe uma rede grande de supermercados que o PDV deles é muito interessante pois o mesmo tem um Interface muito bonita, não sei a linguagem que é feito se é Delphi, Visual Studio, Java ou outra mais o interessante que ele não tem Focu nos campos, não aparece o cursor nos campos e trabalha completamente sem o Mouse como isso é possivel será algo feito em eventos do formulario como o "FormKeyDown" seria isso possivel.

Bem gostaria de algumas ideias e conselho dos colegas.

Postado

Bom, eu tinha problemas nesse sentido, principalmente relacionados a abertura de janelas do client do tef.

Então o primeiro passo foi usar um tef com client em background.

Outra modificação foi colocar o sistema no shell, ou seja, não abrindo o explorer, para evitar os "balões" do windows e notificações de outros sistemas que também perdiam o foco.

E por último coloquei no sistema uma hotkey, que em caso de perda do foco, o operador pressiona uma tecla joga o foco novamente na aplicação.

Desde então não tive mais problemas com isso.

Mas essa opção que você falou de não ter campos com foco também é possível, mas não creio que resolva, pois como eu disse, as vezes a aplicação como todo perde o foco.

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Postado

Como você fez isso "Outra modificação foi colocar o sistema no shell"

Você mata o processo "Explorer.exe" na abertura do seu PDV e abre novamente quando fecha o PDV ??

que codigo o colega usou para fazer isso poderia postar ? pois eu já usei alguns codigo mais sempre que fecha o "Explorer.exe" ele reinicia automaticamente, e não consigui nada que abra novamente o Explorer.exe sem travar o meu PDV.

Postado

Então Luciano.

Seria alterar no registro do windows para o mesmo não iniciar o explorer e sim a sua aplicação.

procedure GravarRegistro(const path, name, value: string;

  root: cardinal);

begin

  with TRegistry.Create do

    try

      RootKey := root;

      OpenKey(path, False);

      WriteString(name, value);

    finally

      Free

    end

end;
Incluir no shell
GravarRegistro('Software\Microsoft\Windows NT\CurrentVersion\Winlogon','shell','c:\seu_sistema.exe',HKEY_CURRENT_USER);
Remover no shell
GravarRegistro('Software\Microsoft\Windows NT\CurrentVersion\Winlogon','shell','',HKEY_CURRENT_USER);
Foi assim que eu fiz. Criei no menu do sistema a opção para incluir e remover do shell. A opção para incluir uma tecla que jogue o foco para sua aplicação também é boa.

// Declaração da procedure

procedure WMHotkey(var Msg: TWMHotkey); message WM_HOTKEY;

procedure WMHotkey(var Msg: TWMHotkey);

begin

  case Msg.HotKey of

    1: begin

        Application.BringToFront;

       end

  end;

end;

// Registra a tecla C (67) como tecla do foco

RegisterHotkey(Handle, 1, 0, 67); 
UnRegisterHotkey(Handle, 1);

É isso!

Espero ter ajudado!

Att.

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Postado

gostei desse ideia de registrar no Shell do windows mais me responda mesmo com isso precisa de um hotkey para voltar o foco pois pelo que pude testar aqui o foco fica exclusivo no PDV pois fica sem outra aplicação no windows, em sua experiencia mesmo assim precisa disso ???

outra coisa percebi que criando o HotKey eu não consigo usar mais aquela tecla exemplo se eu usar o "F" de foco e o usuario quiser fazer uma busca de produto ele não vai conseguir digitar a Letra "F" mais tem como resolver isso.

Grato.

Postado

Na teoria o foco fica com o teu sistema sim, mas como eu disse se você usa um tef que não é background esse foco pode ir pra outra janela.

Também pode ter alguma dialog do teu sistema, dialog do teu sistema, ou mesmo uma dialog do windows (ex: relatório de erro) que pode aparecer.

Essa "marvadas" acabam indo pra atrás da janela principal do sistema e ainda levam o foco.

Eu não uso elas no pdv justamente pra evitar. Mensagem de qualquer tipo (erro,autenticação,confirmação) eu uso um form próprio pra exibir.

A tecla fica reservada sim, mas você pode desativar a hotkey (UnRegisterKey) quando abrir em uma tela que precise usar essa tecla, e ativar novamente ao fechar a tela.

Com essas duas medidas eu não tive mais problemas.

Att.

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

Postado

Tivemos problemas com essa história de foco "fugir" no TEF, já que ele tem algumas exigências em relação a isso.

Resolvemos assim:

procedure TFormPrincipal.ForceForegroundWindow(hwnd: THandle);

// (W) 2001 Daniel Rolf

// Home - danielrolf.com

// [email protected]

var

   hlp: TForm;

begin

      hlp := TForm.Create(nil);

   try

      hlp.BorderStyle := bsNone;

      hlp.SetBounds(0, 0, 1, 1);

      hlp.FormStyle := fsStayOnTop;

      hlp.Show;

      mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

      mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

      SetForegroundWindow(hwnd);

   finally

      hlp.Free;

   end;

end;
Chama assim:
ForceForegroundWindow(FormPrincipal.Handle);

Meio "gambi", mas resolveu.

Postado

Hum entendo por isso meu TEF vai ser tudo usando minhas telas sem essa se outro programa.

Agora eu consegui uma proesa aqui, consegui criar todo o teclado como HOTKEY e com isso meu programa não perde o focu nunca, bem estou testando isso ainda mais a principio parece ter ficado muito bom.

  • Este tópico foi criado há 4508 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.