Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error Abstracto (https://www.clubdelphi.com/foros/showthread.php?t=46143)

Caray 25-07-2007 04:47:05

Error Abstracto
 
Hola gente de Club Delphi, les escribo porque tengo un problemilla con un código.
Comenzaré explicando lo que estoy haciendo: tengo un form (se llama frmcontraseña) con dos edit (edusuario y edcontraseña) y dos botones (btnaceptar y btncancelar), ahora les pondré el código que me manda el error y les sigo explicando.
Código:

if(Key=#13)then
begin
btnaceptarclick(sender);
end;

El anterior código lo tengo en el evente onkeypress del form y la propiedad keypreview del form lo cambio a true;lo que quiero hacer es que al presionar la tecla enter me mande al evento onclick del btnaceptar, con que fin... pues que cuando introduzca la contraseña aunque este en el edcontraseña si presiono la tecla enter me mande al evento onclick de btnaceptar.

El evento del btnaceptar lo que hace es que si los datos estan mal me manda un mensaje de error, pero si estan bien me manda a otro form (frmmenu).
El código al compilarlo no me manda error, pero si los datos estan bien y entro a frmmenu y le doy en la opcion salir del menu (que lo unico que tiene de código es application.terminate ) me manda un error que dice: " EabstractError" Error Abstracto, y la verdad no se porque sale, si le quito el codigo de arriba me funciona bien pero necesito usarlo.
Si me pueden ayudar se los agradeceria muchisimo.

MaMu 25-07-2007 05:54:56

Caray, no entiendo porque te complicas tanto la vida. Si lo que queres hacer es que al escribir la contraseña, es decir, al ya haber terminado de cargar tu ultimo dato se ejecute el OnCLick de un boton con solo apretar enter, entonces simplemente modifica la propiedad Default:=False por Default:=True (propiedad del boton en cuestion)
y listo, al presionar Enter se ejecutara su evento. Debo recordarte que te fijes en el Tab Order de los componentes del form, para que estos se encuentren en el orden correcto, es decir, al salir de los mismos, quien le pasa el foco a quien.

Saludos

Neftali [Germán.Estévez] 25-07-2007 10:16:05

Sólo viendo el trozo de código no acabo de situarlo, pero lo único que veo que puede ser problemático es la llamada al button aceptar.

Código Delphi [-]
  btnaceptarclick(nil);

Delar 25-07-2007 11:15:37

O sino podrias hacer una procedure para comprobar y te ahorrarias codigo:
Código Delphi [-]
procedure Comprobar(usr, pass: string);
begin
if (edusuario = usr) then
 begin
 if (edcontraseña = pass) then
  begin
  //Lo que tengas que hacer si es correcto
  end;
 end
else
 begin
 ShowMessage('Nombre o contraseña incorrectos');
 end;
end;
Luego haces:
Código Delphi [-]
if (key=#13) then
begin
Comprobar('usuario','contraseña');
end;
Y en el btnaceptarClick:
Código Delphi [-]
begin
Comprobar('usuario','contraseña');
end;

Saludos!

Caray 31-07-2007 03:47:10

Error Resuelto
 
Hola compañeros del Foro, quisiera agradecerles a todos por sus respuestas, me fueron de muchisima ayuda.
Utilizando la propuesta del compañero mamu fue la manera más fácil que vi, aunque cheque todas las propuestas muy bien antes de tomar una desición.
Me hubiera gustado ponerles el código que use en el evento onclick del btnaceptar para que vieran y me dieran consejos del código, pero en fin será para la otra.
Bueno Muchisimas Gracias gente.


La franja horaria es GMT +2. Ahora son las 00:27:33.

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