[Lazarus-es] Aspecto de controles deshabilitados

Gastón Dall' Oglio gaston.dalloglio en gmail.com
Mar Oct 25 13:39:25 CEST 2011


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/a6f3e2c2/attachment-0002.html>


More information about the Lazarus-es mailing list