Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   asterisco (*) en keydown o keypress (https://www.clubdelphi.com/foros/showthread.php?t=63717)

pborges36 27-02-2009 12:58:33

asterisco (*) en keydown o keypress
 
Holas. Creo que esta pregunta es simple, solo que no le encuentro la vuelta.
La idea es que en un TEdit el usuario carga codigo de producto. Pero antes de cargar el codigo carge la cantidad ingresando el numero seguido de *.
Poe ejemplo: 2*.
hice lo siguiente:

Código Delphi [-]
procedure Tventa.codigoproductoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState); 
   if key=106 then
      begin
          key:=0;
          cantidadproducto.Text:=codigoproducto.text;
          codigoproducto.Text:='';
          
      end;

el problema es que al salir del evento, en el codigoproducto solo queda el *, deberia quedar vacio.

Tambien intente hacerlo en el keypress.
pero en:
Código Delphi [-]
if key='*' then
  begin 
 
  end;

cualquiera sea la tecla presionada, siempre entraba al if.
creo que la mejor opcion es el keydown, pero como hago para dejar el TEdit vacio?
Gracias. Saludos.

pjmedina 27-02-2009 13:02:36

No te vale poniendo la propiedad del edit, PasswordChar='*'

Caro 27-02-2009 13:33:25

Hola, el * no es el 106 (j) es el 42 (*)

Código Delphi [-]
procedure Tventa.codigoproductoKeyPress(Sender: TObject; var Key: Word;
  Shift: TShiftState); 
begin
   if key=#42 then
      begin
          key:=#0;
          cantidadproducto.Text:=codigoproducto.text;
          codigoproducto.Text:='';          
      end;

Saluditos

Neftali [Germán.Estévez] 27-02-2009 13:39:37

Prueba poniendo esto en el KeyPress.

Código Delphi [-]
  if key='*' then begin
    key:=#0;
    cantidadproducto.Text:=codigoproducto.text;
    codigoproducto.Text:='';
  end;

EDITO: Se me adelantó Caro. :o:o
Supongo que utiliza el 106, porque quiere detectar el * del teclado numérico (que ese sí el el 106).
Con la solución propuesta detectarás los dos *'s. ;)

duilioisola 27-02-2009 13:43:44

Yo creo que deberías poner todo en el evento OnChange.

Código Delphi [-]
procedure TForm1.Edit1(Sender: TObject);
var
   cantidad : integer;
begin
   // Si hay u *
   if (pos('*',Edit1.Text) > 0) then
   begin
      // Obtengo el numero entre la posicion 1 y el *
      cantidad := StrToIntDef(copy(Edit1.Text,1,Length(Edit1.Text)-1))
      Edti1.Clear;
   end;
end;

pborges36 27-02-2009 19:57:03

Muchas gracias a todos. Probe la solucion de Caro y funciona a la perfeccion.

Cita:

Empezado por Caro (Mensaje 339576)
Hola, el * no es el 106 (j) es el 42 (*)


Código Delphi [-]
procedure Tventa.codigoproductoKeyPress(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=#42 then
begin
key:=#0;
cantidadproducto.Text:=codigoproducto.text;
codigoproducto.Text:='';
end;





Saluditos

Gracias de nuevo.
Saludos.


La franja horaria es GMT +2. Ahora son las 01:37:53.

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