Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2004
Igna Igna is offline
Miembro
 
Registrado: jun 2003
Posts: 27
Poder: 0
Igna Va por buen camino
Sombreado Columna ListView

Hola.

Estoy intentando hacer un ListView que cambie de color la columna que clickeo.

el código es más o menos así:

Código Delphi [-]
procedure TMLListView.SetLVColumnShading(ColIdx: Integer);
var
 indice:integer;
begin
 if IndiceCampo=PosCamPrin then
  indice:=0
  else
   if IndiceCampo<=PosCamPrin then
    indice:=(IndiceCampo-PosCamPrin)*(-1)
    else
     indice:=IndiceCampo;
  if indice = ColIdx then
    Canvas.Brush.Color :=ColorFondo
  else
    Canvas.Brush.Color := ColorToRGB(Color);
end;

procedure TMLListView.MLCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
 SetLVColumnShading(0);
end;

procedure TMLListView.MLCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
 if subitem>0 then
   SetLVColumnShading(subitem);
end;

IndiceCampo es un entero donde guardo la posición (no el index) de la columna clickeada. PosCamPrin es la posición (de nuevo no tiene por que coincidir con el index) de la columna del campo principal (el que tiene los items).

Este trozo de código lo que hace es sacar el index de la columna con posición=IndiceCampo:

Código Delphi [-]
if IndiceCampo=PosCamPrin then
  indice:=0
  else
   if IndiceCampo<=PosCamPrin then
    indice:=(IndiceCampo-PosCamPrin)*(-1)
    else
     indice:=IndiceCampo;

El problema es que cuando yo cambio de posición una columna, no se modifica su column.index, por lo que tengo que hacer la conversión de arriba.

El caso es que si la columna principal, está en la posición 0, me funciona sin problemas, pero si está en otra posición se me desajusta todo. Para cargar las columnas las leo de un .ini, por lo que puede que la columna principal no esté en la posición 0.

Bueno, espero haber explicado más o menos bien mi problema.

Un saludo, y gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:24:40.


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
Copyright 1996-2007 Club Delphi