[Lazarus-es] Aspecto de controles deshabilitados

Gastón Dall' Oglio gaston.dalloglio en gmail.com
Mar Oct 25 15:40:07 CEST 2011


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.

procedure TfmListado.SetHabilitado(AValue: Boolean);
var
i: Integer;
begin
if FHabilitado=AValue then Exit;
FHabilitado:=AValue;

Enabled := FHabilitado;

if FHabilitado then
alListado.State := asNormal
else
alListado.State := asSuspended;

for i := 0 to tbListado.ControlCount - 1 do
tbListado.Controls[i].Enabled := FHabilitado;

if FHabilitado then begin
dgListado.TitleFont.Color := clDefault;
dgListado.Font.Color:= clDefault
end else begin
dgListado.TitleFont.Color := clInactiveCaption;
dgListado.Font.Color:= clInactiveCaption;
end;


tbListado.Enabled := FHabilitado;
dgListado.Enabled := FHabilitado;
sgListado.Enabled := FHabilitado;

end;


Capturas:
http://i52.tinypic.com/2n6votk.png
http://i54.tinypic.com/309o84x.png

Gracias a todos, saludos coordiales.

2011/10/25 Gastón Dall' Oglio <gaston.dalloglio en gmail.com>

> Hola Antonio.
>
> 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.
>
> procedure TfmListado.SetHabilitado(AValue: Boolean);    // TfmListado es
> TFrame
> var
>     i: Integer;
> begin
> if FHabilitado=AValue then Exit;
> FHabilitado:=AValue;
>
> Enabled := FHabilitado;
>
> if FHabilitado then
>    alListado.State := asNormal         // alListado es un TActionList
> else
>    alListado.State := asSuspended;
>
> for i := 0 to tbListado.ControlCount - 1 do
>     tbListado.Controls[i].Enabled := FHabilitado;         // tbListado es
> un TToolBar
> tbListado.Enabled := FHabilitado;
> dgListado.Enabled := FHabilitado;   // dgListado es un TDBGrid
> sgListado.Enabled := FHabilitado;   // sgListado es un TStringGrid
>
> end;
>
>
> Si querés enviar la clase que decís sería bueno mirarla.
>
> Saludos.
>
> 2011/10/25 Antonio Évora <aevorar en gmail.com>
>
>>  El 25/10/11 01:02, Rubén Ibáñez escribió:
>>
>> Hola Gastón:
>> 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í:
>> if Panel1.Enabled = False then
>>      DBgrid1.Color:= clGray
>>      else DBgrid1.Color:= clWhite;
>> Un saludo,
>> Rubén.
>>
>> 2011/10/24 Gastón Dall' Oglio <gaston.dalloglio en gmail.com>
>>
>>> Ah, entiendo.
>>>  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).
>>>
>>>  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.
>>>
>>>  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).
>>>
>>>  Bueno, no solucioné todos los problemas, pero al menos me ayudaron a
>>> entenderlo. Gracias y saludos.
>>>
>>>
>>>  2011/10/24 <maximiliano.duarte en gmail.com>
>>>
>>> Se bloquea el control q lo contiene.
>>>> Y lo visual no lo hace porque no propaga el evento de la propiedad
>>>> enabled a los hijos
>>>> Enviado desde mi BlackBerry® de Claro Argentina
>>>>
>>>> -----Original Message-----
>>>> From: Gastón Dall' Oglio <gaston.dalloglio en gmail.com>
>>>> Date: Mon, 24 Oct 2011 17:15:52
>>>> To: Spanish version of Lazarus List<
>>>> lazarus-es en lists.lazarus.freepascal.org>
>>>> Reply-To: Spanish version of Lazarus List
>>>>        <lazarus-es en lists.lazarus.freepascal.org>
>>>> Subject: Re: [Lazarus-es] Aspecto de controles deshabilitados
>>>>
>>>> _______________________________________________
>>>> Lazarus-es mailing list
>>>> Lazarus-es en lists.lazarus.freepascal.org
>>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>>
>>>> _______________________________________________
>>>> Lazarus-es mailing list
>>>> Lazarus-es en lists.lazarus.freepascal.org
>>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>>
>>>
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lists.lazarus.freepascal.org
>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>>
>> _______________________________________________
>> Lazarus-es mailing listLazarus-es en lists.lazarus.freepascal.orghttp://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>  Hola Gastón,
>> 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.
>>
>> 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.
>>
>> Un cordial saludo.
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20111025/42c0f7df/attachment-0002.html>


More information about the Lazarus-es mailing list