PDA

Ver la Versión Completa : Evento OnEnter


leogobo
06-06-2011, 21:12:48
hola,

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


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:


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


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 (http://lists.lazarus.freepascal.org/pipermail/lazarus/2004-January/015279.html)

Saludos.

ecfisa
06-06-2011, 23:23:03
y para que me deje escribir otros caracteres???

Si tu código es como te indicaron:

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


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.