Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView Columns und OwnerDraw (https://www.delphipraxis.net/85218-listview-columns-und-ownerdraw.html)

Nils_13 27. Jan 2007 14:17


ListView Columns und OwnerDraw
 
Hi,

kann man die Columns einer ListView mit ViewStyle vsReport anders färben ? Wenn ja, wie ?

Habe gegooglet und das gefunden:
Delphi-Quellcode:
var HeaderHandle : HWND;
    hdi         : HD_ITEM;
    i           : Integer;
begin
  HeaderHandle := GetDlgItem(lv.Handle, 0);
  for i := 0 to lv.Columns.Count - 1 do
  begin
    hdi.mask := HDI_TEXT and HDI_FORMAT and HDI_WIDTH;
    hdi.fmt := HDF_LEFT and HDF_OWNERDRAW and HDF_STRING;
    hdi.cxy := Columns.Items[i].Width;
    hdi.cchTextMax := Columns.Items[i].Caption.Length();
    hdi.pszText := Columns.Items[i].Caption;
    Header_SetItem(HeaderHandle, index, hdi^);
  end;
Was ist HD_ITEM ? Das kennt mein Delphi nicht.

ErazerZ 27. Jan 2007 14:56

Re: ListView Columns und OwnerDraw
 
Delphi-Quellcode:
uses CommCtrl;

Nils_13 27. Jan 2007 15:04

Re: ListView Columns und OwnerDraw
 
Thx.

Ein Fehler ist noch übrig geblieben:
Delphi-Quellcode:
Header_SetItem(HeaderHandle, i, hdi^);
[Fehler] code.pas(215): Zeigertyp erwartet

mkinzler 27. Jan 2007 15:09

Re: ListView Columns und OwnerDraw
 
Vielleicht
Delphi-Quellcode:
Header_SetItem(HeaderHandle, i, ^hdi);
?

Nils_13 27. Jan 2007 15:13

Re: ListView Columns und OwnerDraw
 
Delphi-Quellcode:
Header_SetItem(HeaderHandle, i, ^hdi);
[Fehler] Unit1.pas(216): Inkompatible Typen: '_HD_ITEMA' und 'Char'

marabu 27. Jan 2007 16:00

Re: ListView Columns und OwnerDraw
 
Hallo Nils,

das Dach (^) ist einfach überflüssig.

Grüße vom marabu

Nils_13 27. Jan 2007 16:11

Re: ListView Columns und OwnerDraw
 
Danke, jetzt wird der Code schonmal kompiliert. Was muss ich noch machen, dass ich die Farben verändern kann ?
Delphi-Quellcode:
var HeaderHandle : HWND;
    hdi         : HD_ITEM;
    i           : Integer;
begin
  HeaderHandle := GetDlgItem(lv.Handle, 0);
  for i := 0 to lv.Columns.Count - 1 do
  begin
    hdi.mask := HDI_TEXT and HDI_FORMAT and HDI_WIDTH;
    hdi.fmt := HDF_LEFT and HDF_OWNERDRAW and HDF_STRING;
    hdi.cxy := lv.Columns.Items[i].Width;
    hdi.cchTextMax := Length(lv.Columns.Items[i].Caption);
    hdi.pszText := PChar(lv.Columns.Items[i].Caption);
    Header_SetItem(HeaderHandle, i, hdi);
  end;

Nils_13 28. Jan 2007 15:32

Re: ListView Columns und OwnerDraw
 
*push*

marabu 28. Jan 2007 16:30

Re: ListView Columns und OwnerDraw
 
Hallo Nils,

dein Code setzt das Format HDF_OWNERDRAW, das Einfärben geschieht woanders. Ich vermute, dass da noch eine window procedure ist. Dort musst du bei der message WM_PAINT nachschauen.

Grüße vom marabu

Nils_13 28. Jan 2007 18:55

Re: ListView Columns und OwnerDraw
 
Zitat:

Zitat von marabu
Hallo Nils,

dein Code setzt das Format HDF_OWNERDRAW, das Einfärben geschieht woanders. Ich vermute, dass da noch eine window procedure ist. Dort musst du bei der message WM_PAINT nachschauen.

Grüße vom marabu

Das heißt genauer ? Diese Sachen gehen so langsam über meinen Wissensbereich hinaus....


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz