Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Evento OnEnter (https://www.clubdelphi.com/foros/showthread.php?t=74232)

leogobo 06-06-2011 21:12:48

Evento OnEnter
 
hola,

quiero que al presionar Enter en un edit, me aparezca un mensaje en el mismo.
Utilizo este codigo:

Código Delphi [-]
procedure TForm1.Edit1Enter(Sender: TObject);
begin
   edit1.Text:='Hola';
end;

Pero apenas le doy clic en el edit1 para poner el cursor aparece el mensaje. Ademas este edit no se deja borrar no editar. No quiero esto. Lo que quiero es cuando le de Enter aparezca el mensaje y que pueda escribir mas cosas.

Gracias

maeyanes 06-06-2011 21:17:56

Hola...

El evento OnEnter en un TEdit no es para cuando presionas la tecla <Enter>, si no para cuando el control recibe el foco del teclado.

Para lo que tu quieres, necesitas usar el evento OnKeyDown del control:

Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    ShowMessage('Hola')
end;


Saludos...

leogobo 06-06-2011 22:42:34

Sale un error que dice : Identifier not found "VK_RETURN".

leogobo 06-06-2011 22:47:28

ok

VK_RETURN=13 para la tecla ENTER.

Gracias

oscarac 06-06-2011 22:47:29

cambialo por 13

Código Delphi [-]
 
if Key = 13 then
 
...

leogobo 06-06-2011 23:13:26

y para que me deje escribir otros caracteres???

ecfisa 06-06-2011 23:16:53

Hola leogobo.

Creo que el equivalente de VK_RETURN para Lazarus en Windows es: Windows.VK_RETURN.

En este enlace explican como asignar valores a los códigos virtuales de teclado según la plataforma sea Windows o Linux: Lazarus

Saludos.

ecfisa 06-06-2011 23:23:03

Cita:

Empezado por leogobo (Mensaje 402799)
y para que me deje escribir otros caracteres???

Si tu código es como te indicaron:
Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = 13 then
    ShowMessage('Hola');
end;
No tendrías que tener problemas en escribir otros caracteres. Hay un condicional y sólo se detiene el ingreso normal de teclado si se cumple que la tecla presionada es Enter.

Si agregaste algo más por favor ponelo para ver por que no te deja escribir.

Saludos.

leogobo 06-06-2011 23:40:23

Bueno, este es el codigo completo

Código Delphi [-]
procedure TForm1.idKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  ultimo: string;
begin
    if Key = 13 then
      begin
              dbf1.Last;
              ultimo:=dbf1.FieldByName('id').AsString;
              dbf1.First;
       while id.Text <> dbf1.FieldByName('id').AsString do
       begin
         if dbf1.FieldByName('id').AsString=ultimo then
             begin
           break;
             end;
         dbf1.Next;
       end;

  end;
end;

leogobo 07-06-2011 00:03:56

Ya solucione el problema,

Era por que tenia un TDBEdit en vez de un TEdit. Con el TEdit no hay problemas.

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 10:03:05.

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