Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Teclado para intouch (https://www.clubdelphi.com/foros/showthread.php?t=20111)

ander 06-04-2005 10:50:44

Teclado para intouch
 
He generado un teclado que se activa cuando se ha de cambiar algun dato en una pantalla tactil.Cuando pulso un boton hago que me escriba en el text del Tedit las letras asignadas a los botones , pero me he dado cuenta que voy sumando los carcteres y por este sistema no puedo intercalar o borrar como si lo hiciera desde un teclado normal.¿Como podria usar botones y un tedit y se comportase como un teclado?
Saludos

Neftali [Germán.Estévez] 06-04-2005 13:52:24

Si colocas un form con cuatro botones (SpeedButton por el tema del foco), uno para la tecla (debería ser igual para todas las teclas, pero cambiando el caracter), uno para borrar, uno para la flecha izquierda y otro para la derecha, con algo así debería bastar:

Código Delphi [-]
 procedure TForm1.BotonTeclaClick(Sender: TObject);
 var
   i:Integer;
   ch:Char;
   pos:Integer;
   Str1, Str2:String;
 begin
   // Generar la tecla
   Randomize;
   i := Trunc(Random(25)) + 65;
   ch := Char(i);
   i := Edit1.SelStart;
   // Calcular la posion y los strings parciales
   pos := Edit1.SelStart;
   Str1 := Copy(Edit1.Text, 1, pos);
   Str2 := Copy(Edit1.Text, pos + 1, Length(Edit1.Text));
   // Añadir la nueva
   Edit1.Text := Str1 + ch + Str2;
   Edit1.SelStart := i + 1;
 end;
 
 procedure TForm1.BotonBorrarClick(Sender: TObject);
 var
   pos:Integer;
   Str1, Str2:String;
   i:Integer;
 begin
   // posicion actual del cursor
   i := Edit1.SelStart;
   // Calcular la posion y los strings parciales
   pos := Edit1.SelStart;
   Str1 := Copy(Edit1.Text, 1, pos - 1);
   Str2 := Copy(Edit1.Text, pos + 1, Length(Edit1.Text));
   // Añadir la nueva
   Edit1.Text := Str1 + Str2;
   Edit1.SelStart := i - 1;
 end;
 
 procedure TForm1.BotonFlechaIzquierdaClick(Sender: TObject);
 begin
   // Mover el cursor
   Edit1.SelStart := Edit1.SelStart - 1;
 end;
 
 procedure TForm1.BotonFlechaDerechaClick(Sender: TObject);
 begin
   // Mover el cursor
   Edit1.SelStart := Edit1.SelStart + 1;
 end;

ander 08-04-2005 07:44:24

Con esto me vale,muchas gracias Neftali


La franja horaria es GMT +2. Ahora son las 13:20:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi