GARANTIR DESCONTO

Fórum Criar Teclado "Virtual" com Delphi #378511

28/05/2010

0

Boa tarde a todos.
Não sei se esta questão já foi solucionada, então aí vai:
Tenho 2 forms (FPrinc e FSec).Em FPrinc eu tenho vários edits (ednome, edrua, edcasa, etc...).Em FSec eu acrescentei 25 botões que correspondem as letras do alfabeto.
O que eu estou pretendendo fazer é uma espécie de "Teclado Virtual". Se o usuário estiver com problemas no teclado, este chamará FSec para preencher o campo que estiver focado em Fprinc.EX:O usuário está preenchendo "ednome", ao chamar FSec o aplicativo fará o seguinte comando:
Fprinc.ednome.text := Fprinc.ednome.text + Tbutton(sender).caption;

Onde o caption do Tbutton é justamente as letras do alfabeto.
O código funciona perfeitamente, o problema é que não posso colocar esse mesmo comando para todos os edits de FPrinc. Existe alguma forma de generalizar este comando para todos os edits e maskedits que existam em FPrinc ?
Grato pela atenção.
Hacson Alexandre

Hacson Alexandre

Responder

Posts

09/06/2010

Carlos Mazzi

Vc teria que armazenar , num flag, qual o ultimo tEdit selecionado pelo usuario , eu usuario a propriedade Tag que existe num Tedit, ou seja se recebesse um foco num campo, mudava esse tag para 1 , por exemplo...   e ai eu verificaria no meu teclado virtual dessa forma:   Por exemplo , a letra  "A":   procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
        for i := 0 to ComponentCount -1 do
      begin
        if (Components[i] is TEdit)   then
         begin
          if TEdit(Components[i]).tag = 1 then
          begin
              TEdit(Components[i]).Text:= TEdit(Components[i]).Text +'A';
          end;
         end;
       end;
A rotina, conta quantos componentes sao Tedit, marca e visualiza a qual esta com a propriedade tag =1 , (ou vc pode mudar colocando diferente de 0...) e adiciono o string nela.   O caminho das pedras ta ai.. agora pode ficar muito mas facil abstraindo mais esse metodo, para nao ter q criar campo a campo... Sugiro que passe a String por parametro.   Abracos++
Responder

Gostei + 0

09/06/2010

Marco Salles

Boa tarde a todos.
Não sei se esta questão já foi solucionada, então aí vai:
Tenho 2 forms (FPrinc e FSec). Em FPrinc eu tenho vários edits (ednome, edrua, edcasa, etc...). Em FSec eu acrescentei 25 botões que correspondem as letras do alfabeto.
O que eu estou pretendendo fazer é uma espécie de "Teclado Virtual". Se o usuário estiver com problemas no teclado, este chamará FSec para preencher o campo que estiver focado em Fprinc. EX: O usuário está preenchendo "ednome", ao chamar FSec o aplicativo fará o seguinte comando:
Fprinc.ednome.text := Fprinc.ednome.text + Tbutton(sender).caption;

Onde o caption do Tbutton é justamente as letras do alfabeto.
O código funciona perfeitamente, o problema é que não posso colocar esse mesmo comando para todos os edits de FPrinc. Existe alguma forma de generalizar este comando para todos os edits e maskedits que existam em FPrinc ?
Grato pela atenção.
..   este codigo esta aonde ???   
Fprinc.ednome.text := Fprinc.ednome.text + Tbutton(sender).caption;
    e como vc chama este Form ... E Clicando alguma tecla ??? é em algum evento ???  
este chamará FSec para preencher o campo que estiver focado em Fprinc.
    Acho que a solução para isto é simples basta uma Orientação a Objeto
Responder

Gostei + 0

09/06/2010

Saulo Benvenutti

MARCO ... de for o delphi 2010, o componente teclado virtual é nativo ...
para as outras versões ... tbm existe na biblioteca da TMS ...
mas se quizer fazer na unha mesmo tera que usar hooks de teclado ...
ex.:   keybd_event(222, 0, 0, 0); a função keydb_event chama a api de teclado e simula uma tecla pressionada ...procure na web sobre esta função e vc terá as informações que necessida para implementar o teclado ...
minha sugestão é vincular a tag de um sppedbutton ... na chamada !!!


espero ter ajudado
Responder

Gostei + 0

09/06/2010

Marco Salles

MARCO ... de for o delphi 2010, o componente teclado virtual é nativo ...
para as outras versões ... tbm existe na biblioteca da TMS ...
mas se quizer fazer na unha mesmo tera que usar hooks de teclado ...
ex.:   keybd_event(222, 0, 0, 0); a função keydb_event chama a api de teclado e simula uma tecla pressionada ... procure na web sobre esta função e vc terá as informações que necessida para implementar o teclado ...
minha sugestão é vincular a tag de um sppedbutton ... na chamada !!!
espero ter ajudado
nun sou eu que quero fazer não.. Conheço o tclado virtual do Delphi 2010 particularmente não gosto de usar tag ( engessa o codigo . é uma alternativa estrturada mas foge da OO) não conheço o TMS ,  mas se for codigo aberto pode cumprir ao propósito  
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar