Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Establecer características de texto en cabecera de un TListView (https://www.clubdelphi.com/foros/showthread.php?t=24916)

Ictiandro 06-09-2005 17:42:45

Establecer características de texto en cabecera de un TListView
 
Hola chicos.
Tengo un problema. Estoy desarrollando una aplicación donde se utiliza un TListView. Este ListView se muestra con una cebecera, es decir ListView.ViewStyle=vsReport. Quisiera saber que es lo que debo hacer para que el texto de la cabecera del ListView tenga características diferentes del resto de las filas (no cabecera) del ListView. Para ser más puntual: El color del texto de la cabecera debe ser azul y tiene que estar en negrita, el resto de las filas deben tener texto color negro y sin negrita.
Gracias de antemano.

roman 06-09-2005 18:56:17

Hola,

Te iba a remitir a este hilo pero ¿qué crees? ;)

En el código de ese hilo adapta el método WMNotify así:


Código Delphi [-]
procedure TListView.WMNotify(var Msg: TWMNotify);
var
  Header: HWnd;
  CustomDraw: PNMCustomDraw;
  HeaderFont: TFont;

begin
  // obtener el identificador del header
  Header := Perform(LVM_GETHEADER, 0, 0);

  if (Msg.NMHdr.code = NM_CUSTOMDRAW) and (Msg.NMHdr.hwndFrom = Header) then
  begin
    // estructura de datos con información para el pintado
    CustomDraw := PNMCustomDraw(Msg.NMHdr);

    case CustomDraw.dwDrawStage of
      CDDS_PREPAINT:
        // se le dice a Windows que queremos notificaciones para cada item
        Msg.Result := CDRF_NOTIFYITEMDRAW;

      CDDS_ITEMPREPAINT:
        (*
          dwItemSpec es el índice del item del encabezado (columna)
          que queremos pintar- en este caso 1
        *)

        if CustomDraw.dwItemSpec = 1 then
        begin
          HeaderFont := TFont.Create;

          try
            HeaderFont.Style := [fsBold];
            Windows.SelectObject(CustomDraw.hdc, HeaderFont.Handle);
            Windows.SetTextColor(CustomDraw.hdc, clBlue);

            //Windows.SetBkColor(CustomDraw.hdc, $00FF8080);
          finally
            HeaderFont.Free;
          end;
        end;
    end;
  end;
end;

// Saludos

dec 06-09-2005 19:26:17

Hola,

:eek: :eek: :eek: :eek: Quiere decirse que yo me quedé con la boca abierta.

Probablemente otros también, por eso añadí más muñequitos . ;)

Ictiandro 06-09-2005 19:56:28

Otra vez, Muchas gracias Roman. Me haces la vida mas facil :D , espero poder aprender las cosas que sabes para así también poder ayudar a otras personas... Bueno quizas con el tiempo y la practica...

roman 06-09-2005 20:03:44

Bueno, muchas veces la ayuda no es por las cosas que sé, sino por las cosas que encuentro. Tal es el presente caso y el del mensaje citado. Te soprenderá la cantidad de información que puedes encontrar en sitios como los foros de Borland.

// Saludos

dec 06-09-2005 20:29:20

Hola,

Bueno. No creo que se trate de hacer la rueda a nadie, así que voy a seguir. Lo que se necesita para encontrar es buscar, esto está claro. Pero uno puede buscar y darse de narices con lo que precisa y no verlo, sencillamente, por aquello que dicen de que el que no sabe es como el que no ve. Esto es tan viejo como el mundo.

¿Cómo va uno a buscar/encontrar algo sin tener ni idea de lo que es? Así pues, sea como fuere, en lo que a mí respecta el que encontraras algo (porque lo buscaste, lo comprendiste y lo supiste implementar) tal que diera la solución a la cuestión que se planteaba no es cosa de poco, no es desdeñable, no, pero todo lo contrario. ;)

¿Y a qué viene esto? ¿A qué decir lo que he dicho? Bueno, ¿y tú, que esto lees, nunca dijiste nada que acaso no viniera muy a cuento? ¿nunca quisiste incluso decir algo que no viniera a cuento en absoluto? ¡Pues no sabes lo que te pierdes! ¡Hay que dar rienda a lo que uno quiere decir! ¡La cosa húmeda no puede estarse quieta a las veces! Y ya he dicho que estudié mecanografía tres años y escribo como por inercia,... y basta.

Francisco Rguez 17-08-2006 17:43:08

Y con XP?
 
El código funciona perfectamente si los temas de XP no están activos. ¿Hay alguna forma de que funcione así?
Gracias, y propicios días.


La franja horaria es GMT +2. Ahora son las 03:28:30.

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