Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Mostrar un ícono en una columna de un listview (https://www.clubdelphi.com/foros/showthread.php?t=68205)

r1d2m3 31-05-2010 22:30:31

Mostrar un ícono en una columna de un listview
 
Hola Amigos, les planteo el siguiente inconveniente:
Estoy trabajando con un listview y necesito que al momento de cliquear en una columna, el listview se ordene, esto ya lo tengo resuelto, simplemente vuelvo a reconstruir el listview usando un select ordenado, pero lo que necesito es destacar en el título de la columna, si la misma esta ordenada o no, ¿vieron el triangulito que sale cuando se pica en una columna en el Explorador de Windows?, bueno, eso es lo que necesitaría hacer.

Si alguien me tira una pista, les agradeceré un montón.

Saludos.

aeff 02-06-2010 10:22:50

hecha un vistazo a esto:

Código Delphi [-]
...
 
implementation
 
uses  CommCtrl;
 
procedure SetColumnImage(List: TListView; Column, Image: Integer; ShowImage:
  Boolean);
var
  Align, hHeader: integer;
  HD: HD_ITEM;
begin
  hHeader := SendMessage(List.Handle, LVM_GETHEADER, 0, 0);
  with HD do
  begin
    case List.Columns[Column].Alignment of
      taLeftJustify: Align := HDF_LEFT;
      taCenter: Align := HDF_CENTER;
      taRightJustify: Align := HDF_RIGHT;
    else
      Align := HDF_LEFT;
    end;
    mask := HDI_IMAGE or HDI_FORMAT;
    pszText := PChar(List.Columns[Column].Caption);
    if ShowImage then
      fmt := HDF_STRING or HDF_IMAGE or HDF_BITMAP_ON_RIGHT
    else
      fmt := HDF_STRING or Align;
    iImage := Image
  end;
  SendMessage(hHeader, HDM_SETITEM, Column, Integer(@HD));
end;

en el evento OnColumnClick coloca esto:

Código Delphi [-]
   SetColumnImage(ListView1, 1, 0, true);

solo tienes que relacionar la propiedad SmallImages del ListView con un ImageList y en este las imáganes de las flechitas.

Puedes adaptar un poco más el código a tu comodidad.

Espero haberte ayudado.

salduos.

aeff!!!

r1d2m3 02-06-2010 18:12:01

Hola aeff, gracias por tu ayuda y disculpa de antemano por la repregunta, pero al compilar el programa, me salta el error Tipo no declarado para HD_ITEM, LVM_GETHEADER, HDF_LEFT, etc, es decir, no encuentra los tipos asociados a las definiciones dadas en mayúsculas, de acuerdo a mi poca experiencia, calculo que me estará faltando apuntar algún uses (aunque tengo definido CommCtrl). Nuevamente gracias y saludos.

r1d2m3 07-06-2010 17:39:12

Hola amigos, reitero mi pedido de ayuda, seguí lo explicado en el post que antecede pero no me funciona por lo expuesto en el post inmediato anterior. Si alguien me puede ayudar, les estaré agradecido.

Saludos.

roman 07-06-2010 18:41:53

Esas identificadores están declarados en la unidad CommCtrl, que ya te indicó aeff anteriormente.

// Saludos

r1d2m3 07-06-2010 21:29:42

Efectivamente, dichas declaraciones estaban en CommCtrl tal como me habían indicado. Mi error era el siguiente, tenía puesto CommCtrls y, sin darme cuenta, asumí que no existía CommCtrl.

Gracias y disculpas por la falta de atención.


La franja horaria es GMT +2. Ahora son las 19:54:29.

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