PDA

Ver la Versión Completa : Necesito ayuda


MrCuCo
23-03-2010, 19:39:16
Se que puedo cambiar el color de un Item de un Listview con el evento CustomDrawItem, pero como hago para llamar ese evento desde un boton?, osea que a la hora que yo presione el boton los Items cambien de color?

Gracias. :)

rgstuamigo
23-03-2010, 22:54:02
Hola amigo MrCuCo , sería muy bueno que cuando crees un nuevo tema, pongas un TITULO más acorde al problema ;), claramente la Guía de Estilo (http://www.clubdelphi.com/foros/guiaestilo.php) lo indica, por lo cual te recomiendo leerla sino lo has hecho.;)
En tu caso yo hubiera colocado una título como por ejemplo:"Cambiar los item de un ListView desde un Boton", o algo similar.;). Si te das cuenta el mismo título especifica claramente el problema. en cambio "Necesito ayuda":o:o no es muy adecuado.;). quizás por eso nadie te ha respondido.;).
De todas manera voy a tratar de ayudarte de la siguiente forma:
Segun entiendo necesitas cambiar el color de los item de tu listView pero solo cuando presiones un boton, lo que se me ocurre para ese caso es que utilizes una variable boleana global que indicará si debe o no debe cambiarse el color de los item.;)
...
...
var
Form1: TForm1;
Permitir: Boolean = False;{<--Esta es mi variable que indicara el cambio
de color lo estoy inicializando en false para decir que los item no cambiaran
de color }
implementation
....

Ahora en el evento OnCustomDrawItem de tu ListView debes tener un código semejante a éste:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Permitir then // si mi varible esta es true entonces permito el cambio de color de los item
begin
// aqui va todo el código que cambia de color a los item del ListView
...
...
end;
end;
.
Finalmente para permitir el cambio de color desde un boton hacemos lo siguiente:
procedure TForm1.Button1Click(Sender: TObject);
begin
Permitir:=True;//<-- Aquí habilito el cambio de color
ListView1.Invalidate;{<-- hago que mi ListView se repinte completamente, ésto provoca que internamente se llame
al evento OnCustomDrawItem del ListView.}
end;
.
Espero que se haya entendido y te sea de utilidad.;).
Saludos...:)

MrCuCo
24-03-2010, 03:35:39
Muchas muchas gracias! si me sirvio, y perdon por lo del titulo :D