Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cambiar color a item FileListBox (https://www.clubdelphi.com/foros/showthread.php?t=94695)

chinchan 27-05-2020 19:57:22

Cambiar color a item FileListBox
 
Hola a todos. Para cambiar el color de un Item de un ListBox, lo hacemos en el evento OnDrawItem. La pregunta es... si lo que tengo es un FileListBox y quiero cambiar el color de algunos ítems dependiendo de alguna condiciones, cómo lo haríamos?. (El componente FileListBox no tiene el evento OnDrawItem).
Gracias.

Neftali [Germán.Estévez] 28-05-2020 13:59:26

Si en el componente no tienes eventos disponibles, siempre puedes crear un derivado/heredado.
En ese caso, puedes acceder (sobreescribir) el procedimiento DrawItem, que es virtual en clases ancestras (TFileListBox) o capturar alguno de los mensajes que utilizan (también clases ancestras) relacionados con el pintado de los items; Como pueden ser WMPaint o CNDrawItem (ambos en TCustomListBox).

Código Delphi [-]
  TMyFileListBox = class(TFileListBox)
  protected
    procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);  override;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
  end;

chinchan 29-05-2020 19:34:23

Gracia Neftalí. No estoy muy ducho en eso que propones de crear un derivado\heredado. Esto que propones ¿Dónde debería incluirlo?.. en "*.cpp", "*.h"... ese código es válido para c++ Builder?. Muchas gracias y ... perdona mi escasez de conocimientos.

Neftali [Germán.Estévez] 02-06-2020 13:20:09

Cita:

Empezado por chinchan (Mensaje 537452)
No estoy muy ducho en eso que propones de crear un derivado\heredado.


No es algo trivial.
Deberías revisar algún manual de creación de componentes.
Los mensajes de windows al final son los mismos.


La franja horaria es GMT +2. Ahora son las 16:31:42.

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