Ver la Versión Completa : 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.
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?
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
pero.... porque no?
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 :
Componente.Enabled := True;
Componente.Color := clWindow;
...
...
...
Componente.Enabled := False;
Componente.Color := clBtnFace;
Además, esos procedimientos los puedes programar perfectamente :
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.