Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   La Taberna (https://www.clubdelphi.com/foros/forumdisplay.php?f=40)
-   -   Porque no tiene... porque? (https://www.clubdelphi.com/foros/showthread.php?t=55746)

MaMu 25-04-2008 10:20:36

Porque no tiene... porque?
 
Hoy me preguntaba a mi mismo:

"Por qué un componente determinado no tiene eventos OnEnable y OnDisable?"

Por ejemplo, un TEdit.

Es mi duda existencial en estos momentos.

Ivanzinho 25-04-2008 10:42:23

A riesgo de equivocarme voy a dar mi opinión.

Creo que estos eventos no son necesarios porque la habilitación y deshabilitación de los componentes son controladas por código, es decir, dichos eventos se producirían justo después de una línea de código como Componente.Enabled := True o Componente.Enabled := False, es decir, el programador sabe perfectamente cuando van a ocurrir. Por el contrario acciones como pulsar una tecla, salir de un componente, etc. son controladas por el usuario, por lo tanto pueden suceder en cualquier momento, y de ahí la necesidad de eventos para controlar el instante en que ocurren, puesto que no podemos establecer un sitio en nuestro código donde dicha acción va a ocurrir.

Espero haberme explicado.

Un saúdo.

MaMu 25-04-2008 10:49:44

Cita:

Empezado por Ivanzinho (Mensaje 282520)
A riesgo de equivocarme voy a dar mi opinión.

Creo que estos eventos no son necesarios porque la habilitación y deshabilitación de los componentes son controladas por código, es decir, dichos eventos se producirían justo después de una línea de código como Componente.Enabled := True o Componente.Enabled := False, es decir, el programador sabe perfectamente cuando van a ocurrir. Por el contrario acciones como pulsar una tecla, salir de un componente, etc. son controladas por el usuario, por lo tanto pueden suceder en cualquier momento, y de ahí la necesidad de eventos para controlar el instante en que ocurren, puesto que no podemos establecer un sitio en nuestro código donde dicha acción va a ocurrir.

Espero haberme explicado.

Un saúdo.

pero.... porque no?

Código Delphi [-]
procedure TForm1.TEdit1OnEnable(sender:TObjet);
begin
   Color:=clWindow;
end;
 
procedure TForm1.TEdit1OnDisable(sender:TObjet);
begin
   Color:=clBtnface;
end;

Ivanzinho 25-04-2008 11:08:05

Cita:

Empezado por MaMu
pero.... porque no?
Código Delphi [-]
procedure TForm1.TEdit1OnEnable(sender:TObjet);
begin    Color:=clWindow; end;
 
procedure TForm1.TEdit1OnDisable(sender:TObjet);
begin    Color:=clBtnface; end;



Porque no sería necesario, el código que pones haría lo mismo que :

Código Delphi [-]
Componente.Enabled := True;
Componente.Color := clWindow;
...
...
...
Componente.Enabled := False;
Componente.Color := clBtnFace;


Además, esos procedimientos los puedes programar perfectamente :

Código Delphi [-]
procedure TForm1.OnEnabled(Sender:TObject);
begin
  if Sender is TControl then
    begin
      (Sender as TControl).Enabled := true;
      (Sender as TControl).Color := clWindown;
    end;
end;

procedure TForm1.OnDisabled(Sender:TObject);
begin
  if Sender is TControl then
    begin
      (Sender as TControl).Enabled := false;
      (Sender as TControl).Color := clBtnFace;
    end;
end;

Pero los procedimientos anteriores no los consideraría eventos, podrían estar asociados a un evento como pulsar un botón, salir del componente, ... pero seríamos nosotros los que decidiesemos cuando se habilita y cuando no, y no el usuario.

Un saúdo.


La franja horaria es GMT +2. Ahora son las 03:45:13.

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