Teclado Virtual :: Falta Pouco

Delphi

14/05/2004

Bom, como muitos procuram um teclado virtual, comecei a fazer um para preenchimento de componentes herdados da classe TCustomEdit. As funcionalidade para adicionar as letras/números/caracteres no na posição atual do TCustomEdit está funcionando. Mas falta as outras funcionalidades, tais como ´backspace´, ´delete´, ´insert´, entre outras...

Vamos tentar finalizar este divã...

TForm
Name = frmTecladoVirtual
BorderStyle = bsDialog
Caption = ´Teclado Virtual´
FormStyle = fsStayOnTop

TSpeedButton´s das letras/números/caracteres
Caption = ´a´ ... ´z´
Tag = 0

TSpeedButton´s das funcionalidades
Caption = Esc/Ins/Del/PgUp/...
Tag = *Código da tecla* (27=esc/13=enter)

procedure TfrmTecladoVirtual.SpeedButton37Click(Sender: TObject);
var
  Texto, NovoTexto, Letra: String;
  Posicao: Integer;
begin
  with TCustomEdit(Componente) do begin
    if (TSpeedButton(Sender).tag = 0) then begin
      Texto := Text;
      Posicao := SelStart;

      Letra  := TSpeedButton(Sender).Caption;

      if Posicao = Length(Texto) then
        NovoTexto := Texto + Letra
      else
        if Posicao = 0 then
          NovoTexto := Letra + Texto
        else
          NovoTexto := Copy(Texto, 1, Posicao) + Letra + Copy(Texto, Posicao + 1, Length(Texto) - Posicao);

      Text := NovoTexto;
      SelStart := Posicao + 1;
    end else ;
  end;
end;

procedure TfrmTecladoVirtual.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;


Exemplo para utilização do componente TTecladoVirtual.

TForm
Name = Form1;

TEdit
Name = Edit1;

TSpeedButton
Name = SpeedButton1;
OnClick = SpeedButton1Click;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  Application.CreateForm(TfrmTecladoVirtual, frmTecladoVirtual);
  frmTecladoVirtual.Componente := ActiveControl;
  frmTecladoVirtual.Show;
end;


PS: Aroldo! Cadê você com seus paradigmas orientados a objeto para nos ajudar?


Tinorj

Tinorj

Curtidas 0

Respostas

Tinorj

Tinorj

14/05/2004

Já implementei os botões delete, backspace e tab. Abaixo segue o link para pegar o projeto atual com as alterações feitas.

[url]http://www.tinojpa.kit.net/download/tecladovirtual.zip[/url]


GOSTEI 0
Tinorj

Tinorj

14/05/2004

SOBE


GOSTEI 0
Nildo

Nildo

14/05/2004

Legal tinorj, parabens!


GOSTEI 0
Tinorj

Tinorj

14/05/2004

Nildo, sua ajuda foi muito importante... :lol:

[]´s


GOSTEI 0
Tinorj

Tinorj

14/05/2004

SOBE


GOSTEI 0
Tinorj

Tinorj

14/05/2004

sobe


GOSTEI 0
Zoom

Zoom

14/05/2004

Da pra por favor todo mundo para com este negóio de UP,será possível que isso vai voltar aqui no fórum, por favor pessoal, quando quiser que o tópico suba escreva algo útil e que traga informações complementares ao assunto abordado.


GOSTEI 0
Braytiner Heggendorn

Braytiner Heggendorn

14/05/2004

Estive lendo sua mensagem no fórum da Clube Delphi e vc disse que conseguiu incluir no teclado virtual a tecla TAB. Como?
Estou trabalhando com um form, onde preciso tratar na OnKeyDown a tecla TAB, mas essa tecla não gera eventos de teclado, vc tem alguma idéia de como poderia faze-lo/

Obrigado

Braytiner


GOSTEI 0
Tinorj

Tinorj

14/05/2004

Coloquei um link com o projeto. Busca lá o código.


GOSTEI 0
Otto

Otto

14/05/2004

Olá. uma vezs tb fiz um tecladinho virtual, e tanto podia ser digitando quanto apertando as teclas com o mouse...

altere a propriedade Keypreview do form pra true, e no evento OnKeyPress do form do teclado vc faz:

var
  i : Integer;
begin
  if PodeDigitar then // if true [bool]
     begin
       if key = 13 then btnEnviar.Click;    // Enter
       if Ord(Key) = 32 Then btnEspaco.Click // espaço
       else if Ord(Key) = 8 Then btnbackspace.Click // backspace
       else // se nao for nenhuma dessas, entao
          for i := 0 to ComponentCount - 1 do
            if Components[i] is TSpeedbutton then
               if (Components[i] as TSpeedButton).Caption = Uppercase(Key) Then
                  Begin
                    (Components[i] as TSpeedButton).Click;
                    Break;
                  End
      else // se nao tiver a recla digitada ele da um beep
        Beep;
     end
  else // se nao poder digitar.
    Beep;
end;


a variavel PodeDigitar é uma que eu coloquei la pra saber se o carinha pode digitar ou nao, dai é so remove-la se quiser.
e se perceber, tem algumas teclas la que eu me referi a alguns botoes...

flw...


GOSTEI 0
Otto

Otto

14/05/2004

IMG::


::IMG


GOSTEI 0
Tinorj

Tinorj

14/05/2004

oTTo,

Isto já está pronto, falta implementar éas teclas ALT, CTRL, SHIFT, CAPS LOCK, NUN LOCK, ...

Mas valeu pela tentativa... :lol:


GOSTEI 0
POSTAR