Finalmente, cambiando el color de la fuente de la grilla he conseguido el aspecto que que necesitaba en todos los controles que estoy usando. No es una solución genérica, pero funciona para este caso. Adjunto dos capturas, una cuando todos los Tframes estan habilitados, y otra cuando solo lo esta en el que se esta editando.<br>
<br>procedure TfmListado.SetHabilitado(AValue: Boolean);<br>var<br> i: Integer;<br>begin<br> if FHabilitado=AValue then Exit;<br> FHabilitado:=AValue;<br><br> Enabled := FHabilitado;<br><br> if FHabilitado then<br> alListado.State := asNormal<br>
else<br> alListado.State := asSuspended;<br><br> for i := 0 to tbListado.ControlCount - 1 do<br> tbListado.Controls[i].Enabled := FHabilitado;<br><br> if FHabilitado then begin<br> dgListado.TitleFont.Color := clDefault;<br>
dgListado.Font.Color:= clDefault<br> end else begin<br> dgListado.TitleFont.Color := clInactiveCaption;<br> dgListado.Font.Color:= clInactiveCaption;<br> end;<br><br><br> tbListado.Enabled := FHabilitado;<br> dgListado.Enabled := FHabilitado;<br>
sgListado.Enabled := FHabilitado;<br><br>end; <br><div><br></div><div><br></div><div>Capturas:</div><div><a href="http://i52.tinypic.com/2n6votk.png">http://i52.tinypic.com/2n6votk.png</a></div><div><a href="http://i54.tinypic.com/309o84x.png">http://i54.tinypic.com/309o84x.png</a></div>
<br>Gracias a todos, saludos coordiales.<br><br><div class="gmail_quote">2011/10/25 Gastón Dall' Oglio <span dir="ltr"><<a href="mailto:gaston.dalloglio@gmail.com">gaston.dalloglio@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div>Hola Antonio.<br></div><div><br></div><div>Por el momento, esta haciendo algo así. En el TFrame tengo una propiedad Habilitado, la cual en su seter recorre los componentes de TFrame y los deshabilita, y en el caso del TToolBar, recorre sus botones.</div>
<div><br>procedure TfmListado.SetHabilitado(AValue: Boolean); // TfmListado es TFrame<br>var<br> i: Integer;<br>begin<br> if FHabilitado=AValue then Exit;<br> FHabilitado:=AValue;<br><br> Enabled := FHabilitado;<br>
</div><div><br></div><div>if FHabilitado then<br> alListado.State := asNormal // alListado es un TActionList<br>else<br> alListado.State := asSuspended;<br> </div><div><br></div><div>for i := 0 to tbListado.ControlCount - 1 do<br>
tbListado.Controls[i].Enabled := FHabilitado; // tbListado es un TToolBar<br>tbListado.Enabled := FHabilitado; <br>dgListado.Enabled := FHabilitado; // dgListado es un TDBGrid<br>sgListado.Enabled := FHabilitado; // sgListado es un TStringGrid<br>
<br>end; </div><div><br></div><div><br></div><div>Si querés enviar la clase que decís sería bueno mirarla.</div><div><br></div><div>Saludos.</div><div><div class="h5"><br><div class="gmail_quote">2011/10/25 Antonio Évora <span dir="ltr"><<a href="mailto:aevorar@gmail.com" target="_blank">aevorar@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#ffffff" text="#000000">
El 25/10/11 01:02, Rubén Ibáñez escribió:
<div><div><blockquote type="cite">Hola Gastón:<br>
Tienes razón y la tienen los demás. Tal vez podrías cambiarle el
color de fondo al Dbgrid inhabilitado, para facilitarle al usuario
reconocer la situación. Algo así:<br>
if Panel1.Enabled = False then<br>
DBgrid1.Color:= clGray<br>
else DBgrid1.Color:= clWhite; <br>
Un saludo,<br>
Rubén.<br>
<br>
<div class="gmail_quote">2011/10/24 Gastón Dall' Oglio <span dir="ltr"><<a href="mailto:gaston.dalloglio@gmail.com" target="_blank">gaston.dalloglio@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<div>Ah, entiendo.<br>
</div>
<div>Estoy comprobándolo en tiempo de diseño. Por ejemplo
deshabilito un TToolBar y sus botones siguen habilitados,
tengo que deshabilitar cada botón por separado. Veo que los
botones carecen de una propiedad ParentEnabled, que sería la
manera de definirles que se propague el estado del padre a
ellos (ningún control la tiene, algún motivo debe haber).</div>
<div><br>
</div>
<div>En el caso de la TDBGrid, las columnas no tienen la
propiedad Enabled, ni siquiera publica para usarla en tiempo
de ejecución, por lo que no se puede deshabilitar. Tal vez
este asociada al estado del TField.</div>
<div><br>
</div>
<div>En el caso del TTabControl, no se pueden deshabilitar los
tabs individualmente porque estos son simples Strings que se
cargan en la propiedad Tabs. Pero, deshabilitando el
TTabControl los tabs hijos SI se muestran deshabiltados
(grises).</div>
<div><br>
</div>
<div>Bueno, no solucioné todos los problemas, pero al menos me
ayudaron a entenderlo. Gracias y saludos.<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div class="gmail_quote">2011/10/24 <span dir="ltr"><<a href="mailto:maximiliano.duarte@gmail.com" target="_blank">maximiliano.duarte@gmail.com</a>></span>
<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">Se bloquea el control q lo
contiene.<br>
Y lo visual no lo hace porque no propaga el evento de
la propiedad enabled a los hijos<br>
Enviado desde mi BlackBerry® de Claro Argentina<br>
<br>
-----Original Message-----<br>
From: Gastón Dall' Oglio <<a href="mailto:gaston.dalloglio@gmail.com" target="_blank">gaston.dalloglio@gmail.com</a>><br>
Date: Mon, 24 Oct 2011 17:15:52<br>
To: Spanish version of Lazarus List<<a href="mailto:lazarus-es@lists.lazarus.freepascal.org" target="_blank">lazarus-es@lists.lazarus.freepascal.org</a>><br>
Reply-To: Spanish version of Lazarus List<br>
<<a href="mailto:lazarus-es@lists.lazarus.freepascal.org" target="_blank">lazarus-es@lists.lazarus.freepascal.org</a>><br>
Subject: Re: [Lazarus-es] Aspecto de controles
deshabilitados<br>
<div>
<div><br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br>
</blockquote>
</div>
<br>
<pre>_______________________________________________
Lazarus-es mailing list
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a>
</pre> </blockquote></div></div>
Hola Gastón,<br>
Puedes crearte una función que reciba como parámetro el componente y
si esta habilitado o no. Y en la función recorrer todos los
componentes hijos de este y aplicarle el estado. Puedes hacerlo
usando RTTI.<br>
<br>
Yo tengo una clase que hace algo parecido para controlar la entrada
y salida de los controles (eventos OnEnter y OnExit) que hace que
determinados componentes cambien el fondo en función de si tienen el
foco o no. Si quieres te la paso.<br>
<br>
Un cordial saludo.<br>
</div>
<br>_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br></blockquote></div><br>
</div></div></blockquote></div><br>