Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como inhabilitar ítems de un ListView (https://www.clubdelphi.com/foros/showthread.php?t=79173)

Ledian_Fdez 13-06-2012 16:07:34

Como inhabilitar ítems de un ListView
 
Hola apasionados al Delphi:
Les cuento que necesito de su ayuda. Tengo un ListView donde la propiedad ViewStyle := vsIcon, lo tengo alineado a la izquierda del formulario y lo utilizo como un menú.

Necesito inhabilitar por programación algunos de sus ítems. La verdad no sé cómo hacerlo. Intente con:
Código Delphi [-]
ListView1.Items.Item[0]. ??? // no me da la opción de enabled

Por favor esto es algo que me está exigiendo un cliente y no sé cómo dar respuesta :confused:. En espera de la suya y como siempre muchas gracias de antemano.

Salu2.

ElDioni 13-06-2012 16:25:04

Hola,

la verdad es que no se como se pueden inhabilitar los items de un listbox, pero, tal vez puedas usar un truco que hay en el club para cambiar de color los items de un listbox y pintarlos gris para simular que no están habilitados y luego hacer la comprobación del color para ejecutar o no el código correspondiente.
El truco es este: http://www.clubdelphi.com/trucos/index.php?id=75

Saludos.

Chris 13-06-2012 16:33:21

ListView1.Items.Item[0].Enabled := False; // ???

Taves así?

roman 13-06-2012 16:44:46

No existe la propiedad Enabled para los items de un listview. De hecho, no sé que significaría que estuviera inhabilitado. ¿No puede seleccionarse? ¿No puede editarse? ¿Qué?

// Saludos

Chris 13-06-2012 16:51:55

Ésa fue mi respuesta rápida. Ahora abordaré tu tema con seriedad :p

Primero que todo, no debiste utilizar un ListView cómo un menú. Eso es un error, se llama "Utilizar los controles equivocados" o "Utilizar los controles para lo que no fueron diseñados". Pero bueno. No todo está perdido aún.

El objeto TListView trae un evento llamado OnChanging. Es ése evento que puedes utilizar para imitar el comportamiento de un control deshabilitado.

Un ejemplo:
Código Delphi [-]
procedure TForm2.ListView1Changing(Sender: TObject; Item: TListItem;
  Change: TItemChange; var AllowChange: Boolean);
begin
    if (Change = ctState) and (Item.Index =2) then
        AllowChange := False;
end;

Lo que hace el anterior código de evitar que el Item seleccionado del ItemView sea seleccionado si éste es el tercer elemento de la lista.

Saludos!


La franja horaria es GMT +2. Ahora son las 00:02:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi