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 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.