PDA

Ver la Versión Completa : no me detecta teclado numero


Rofocale
17-06-2011, 20:00:20
hola a todos una pregunta en el programa que estoy haciendo solo me detecta el teclado numero del lado derecho al escribir algun numero en un text edit.. pero los numeros de la parte superior de las teclas del alfabeto no me las detecta cuando las aprieto no funcionan.. y si estoy en una laptop solo tengo los numeros encima de las teclas del alfabeto y estas no me funcionan y ya no puedo escribir los numeros.. a que se debe ? como lo puedo solucionar muchas gracias

Rofocale
17-06-2011, 21:22:18
me olvidaba uso este codigo para poder ingresar los numeros bueno los decimales en el edit pero como les mencione los numeros de arriba no funcionan a ver si me pueden ayudar

Var i: Integer;
pos: Cardinal;
begin
i:=0;
//Permite que desepues de se digite el . solo se puedan ingresar 2 Registros Mas
if ( StrScan('0123456789.'+chr(7)+chr(8), Key) = nil ) then Key := #0;
// cambia el punto decimal por coma
if key = '.' then key := '.';
//controlar entrada una sola coma
for i := 1 to length(txtPrecio1.Text) do
if ( copy(txtPrecio1.Text,i,1) = '.' ) and not ( StrScan('.', Key) = nil ) then Key := #0;

with Sender as TcxTextEdit do
begin
pos := System.Pos('.', Text);
if not LongBool(Pos) then Dec(Pos);
Properties.ReadOnly := not (Key in ['0'..'9', '.', #8]) or
(Pos <> $FFFFFFFF) and (Key = '.') or
((Key <> #8) and (Pos < (SelStart - 1)));
end;

newtron
18-06-2011, 08:34:39
Hola.

¿Has probado a no usar esa función a ver si es de ella o de otra cosa?

Saludos

ecfisa
18-06-2011, 19:56:50
Hola Rofocale.

No conozco el componente TcxTextEdit, y este comentario:
//Permite que desepues de se digite el . solo se puedan ingresar 2 Registros Mas
Me hace dudar si hago bién al suponer que queres limitar el ingreso a dos caracteres luego del separador decimal. Si es eso, fijate si podés adaptar este código para el TcxTextEdit:

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
var
PosDe: Integer; // posicion separador decimal
LenDe: Integer; // nro de caracteres a partir del separador
begin
if Key = '.' then Key:= ','; // respetando tu código.
if not(Key in ['0'..'9', #8, ',']) then // no es caracter válido
begin
MessageBeep(MB_ICONERROR);
Key:= #0
end
else
begin
PosDe:= Pos(',', TEdit(Sender).Text); // posición separador
if PosDe > 0 then
begin
LenDe:= Length(TEdit(Sender).Text) - PosDe; // nro caracteres decimales
if(LenDe > 1) and (Key in ['0'..'9']) and // evaluar nro caracteres decimales
(TEdit(Sender).SelStart > PosDe-1) then
Key:= #0;
end;
end;
end;

Pienso que cambiando los cast TEdit(Sender) por TcxTextEdit(Sender) debería funcionar si este último tiene la propiedad SelStart.

Saludos.

oesqueda
20-06-2011, 23:00:14
si tienes los componentes de devexpress porque no usas un TcxMaskEdit o el tcxCurrencyEdit