Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Argentina
Posts: 863
Poder: 12
MaMu Va por buen camino
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.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 25-04-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: Jan 2005
Ubicación: Galicia
Posts: 595
Poder: 14
Ivanzinho Va por buen camino
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.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #3  
Antiguo 25-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Argentina
Posts: 863
Poder: 12
MaMu Va por buen camino
Cita:
Empezado por Ivanzinho Ver Mensaje
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;
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 25-04-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: Jan 2005
Ubicación: Galicia
Posts: 595
Poder: 14
Ivanzinho Va por buen camino
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.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Porque No Aparece? ddd_ddd Impresión 7 27-10-2005 22:07:13
...porque no... Jure Humor 0 02-05-2005 18:59:53
¿Porque ahora? teletranx Firebird e Interbase 0 26-07-2004 19:53:16
Porque me da error??? seken Impresión 5 20-08-2003 17:36:05
Me Da Un Error Y No Se Porque David PHP 1 01-08-2003 23:47:20


La franja horaria es GMT +2. Ahora son las 10:20:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi