Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿como cachar un evento? (https://www.clubdelphi.com/foros/showthread.php?t=74797)

EgyEgy 12-07-2011 07:09:26

¿como cachar un evento?
 
Nuevamente YO dando "lata".

tengo un objeto de Edición y hago una serie de validaciones cuando me voy salir (Exit) de ese componente.

Quiero saber si ese Exit es por que di un click a otro boton.

¿como puedo hacer una condicion en la que indique si di Click a otro componente?

Crandel 12-07-2011 07:15:09

y por que no ejecutas la acción en el evento OnClick del otro componente ?

cual es el efecto que quieres lograr ?

ecfisa 12-07-2011 08:25:24

Hola.

Coincido totalmente con Crandel, que lo lógico es ejecutar la acción en el evento OnClick del componente.

Pero si aún querés saber en el evento OnExit del TEdit si presionó determinado TButton, podés hacer por ejemplo:
Código Delphi [-]
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if ActiveControl.Name = 'btnSalir' then
     Close;
end;

Pero como sugirió Crandel, es más natural hacer:
Código Delphi [-]
procedure TForm1.btnSalirClick(Sender: TObject);
begin
  Close;
end;


Saludos.

Lepe 12-07-2011 09:43:49

Creo se puede hacer mejor.

Si usas controles de Acceso a datos (DBEdit, DBCombo, DBxxx) suelen tener el evento OnValidate y es justo ahí donde puedes hacer esas validaciones.

Si no usas controles DBxxxx Siempre puedes usar el evento BeforePost del dataset.

La razón de no fiarte del evento OnExit es precisamente porque puede NO ocurrir. Si usas un TSpeedButton para guardar, eso no hace saltar el evento OnExit, por ejemplo.

Saludos

EgyEgy 12-07-2011 15:29:01

Me explico
 
En el objeto Tdbedit valido que lo que haya capturado sea un número y que ademas sea mayor al valor de otro objeto adjunto. Pero existe un caso que cuando doy CLICK a un boton lo calcule de forma automatica.

Es ahi cuando por default se ejecuta la validacion dentro del tdbedit y claro me marca un error por que el valor de este es vacio.


Espero haberme hecho entender.

Gracias a todos por su cooperacion.

Caro 12-07-2011 16:14:21

Cita:

Empezado por EgyEgy (Mensaje 406066)
Quiero saber si ese Exit es por que di un click a otro boton.

Hola egyegy, con ActiveControl como te ha indicado ecfisa.

Código Delphi [-]
procedure xxxx.DBEdit5Exit(Sender: TObject);
begin
 if ActiveControl=ButtonCalculo then
  showmessage('se ha presionado el boton xxx');
end;

Cita:

Empezado por EgyEgy (Mensaje 406106)
En el objeto Tdbedit valido que lo que haya capturado sea un número y que ademas sea mayor al valor de otro objeto adjunto. Pero existe un caso que cuando doy CLICK a un boton lo calcule de forma automatica.

Es ahi cuando por default se ejecuta la validacion dentro del tdbedit y claro me marca un error por que el valor de este es vacio.

En ese caso, no te sería suficiente preguntar si tu dbedit esta vacío.

Código Delphi [-]
procedure xxx.DBEdit5Exit(Sender: TObject);
begin
 if Trim(DBEdit.Text)<>'' then
   //si es diferente de vacío hacemos los calculos  
end;

Saluditos


La franja horaria es GMT +2. Ahora son las 04:18:22.

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