Ver Mensaje Individual
  #6  
Antiguo 15-05-2012
xorc xorc is offline
Registrado
NULL
 
Registrado: jun 2011
Posts: 6
Reputación: 0
xorc Va por buen camino
Se podría Utilizar ClassType?

Hola amigos del club delphi:
Hace tiempo que programo en este lenguaje tan genial y ahora tengo un problema algo parecido a lo que tratan en este foro, y al no haber visto la manera de ingresar un nuevo tema (no me acuerdo como se hacia) recurro a ustedes de esta manera, espero que me disculpen la intromisión:
El problema que tengo es el siguiente:

Tengo un procedimiento implementado que hace parpadear un componente tcombobox, y lo hice de la siguiente manera:

Código Delphi [-]
Procedure TForm1.Parpadear(Sender:TControl;color1:TColor);
var colorinicial:tcolor;
Begin
  if sender is TComboBox then 
  Begin //solo sucede si el parametro sender es un TcomboBox
    with sender as Tcombobox do
    Begin
      colorinicial:=color;
      color:=color1; update; Sleep(100); 
      color:=colorinicial; Update; 
    End;
  End;
End;

A este procedimieto lo llamo desde otro lado del programa por ejemplo así:
parpadear(Combobox1,clyellow); //aqui ComboBox1 es un TComboBox
lo que hace parpadear color amarillo al combobox1 que esta en mi forma;
hasta aqui todo funciona ok, pero también tengo otro tipo de componentes, tipo tedit, tcurrentedit, tmemo, etc., en mi forma y para que cada uno parpadee según el caso debo copiar exactamente el codigo anterior, variando simplemente las líneas de
if sender is TComboBox then //y
with sender as TCombobox
reemplazando el tipo con lo que corresponda al paramentro enviado.
He intentado eliminar la linea de "if" y utilizar la siguiente forma:
With sender as sender.ClassType do
pero aunque no provoca error, tampoco se logra visualizar el efecto deseado (el componente parametro no cambia de color).

PREGUNTA: ¿cómo puedo utilizar el procedimiento parpadear, en todos los componentes sin tener que aplicar polimorfismo propiamente dicho? (sin sobrecargar el procedimiento parpadear ni repetir el resto del código para cada clase de objeto que sea descendiente de tcontrol).

Si a alguien se le ocurre alguna forma de que la línea de codigo With sender as sender.ClassType do funcione como deberia, por favor le agradeceria que me de luces.
Mil gracias.

Última edición por Casimiro Notevi fecha: 15-05-2012 a las 17:01:35.
Responder Con Cita