Delphi-PRAXiS

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: Bitmap aus Header entfernen (https://www.delphipraxis.net/184007-listview-bitmap-aus-header-entfernen.html)

Mattze 19. Feb 2015 06:56

Listview: Bitmap aus Header entfernen
 
Hi,

nachdem ich Sortierpfeile als Bitmap in den Header (links und rechts) gezeichnet habe, wollte ich die Bitmaps nun wieder entfernen.
Ich schaffe es nicht!
Unter anderem habe ich es auch nach dem Luckie-List-View-Tutorial probiert.
Es will nicht!

Kann mir einer einen Tipp geben, wie es funktioniert?

(Delphi 7 pro unter Win 7 64)

Gruß
Mattze

Bernhard Geyer 19. Feb 2015 07:45

AW: Listview: Bitmap aus Header entfernen
 
Mit welchen genauen Code hast du des den reingebracht?

Mattze 19. Feb 2015 08:07

AW: Listview: Bitmap aus Header entfernen
 
Hi,

der code zum Reinbringen:
Delphi-Quellcode:
procedure TMyListView.SetColumnSortOrder(Column: TListcolumn);
var
  hdr: HWND;
  hdritem: THDItem;
begin
  hdr := Listview_GetHeader(handle);
  FillChar(hdritem, sizeof(hdritem), 0);
  hdritem.Mask := HDI_FORMAT;
  Header_GetItem(hdr, column.index, hdritem);
  hdritem.Mask := HDI_FORMAT or HDI_BITMAP;
  if FSortDirection=sdAscending then
    hdritem.hbm := FUpArrow.Handle
  else
    hdritem.hbm := FDownArrow.Handle;
  if fsortarrowwhere=saLeft then
    hdritem.fmt := hdritem.fmt or HDF_BITMAP
  else
    hdritem.fmt := hdritem.fmt or HDF_BITMAP_ON_RIGHT or HDF_BITMAP;
  Header_SetItem(hdr, column.index, hdritem);
end;
Hilft das?

Gruß
Matthias

uligerhardt 19. Feb 2015 08:24

AW: Listview: Bitmap aus Header entfernen
 
Ohne es getestet zu haben - sowas wie:
Delphi-Quellcode:
hdritem.Mask := HDI_FORMAT or HDI_BITMAP;
hdritem.hbm := 0;
hdritem.fmt := hdritem.fmt and not (HDF_BITMAP_ON_RIGHT or HDF_BITMAP);
?

Mattze 19. Feb 2015 08:38

AW: Listview: Bitmap aus Header entfernen
 
Hi,

damit will es auch nicht.
Zum Bitmap entfernen (nach luckies Tutorial):

Delphi-Quellcode:
procedure TMyListView.HeaderBmpDel;
var buf: PAnsiChar;
    hdr: HWND;
    hi: THDItem;
begin
    GetMem(buf, 100);
    hi.Mask := HDI_BITMAP or HDI_FORMAT {or HDI_IMAGE or HDI_ORDER} or
               HDI_TEXT or HDI_WIDTH;
    hi.pszText := buf;
    hi.cchTextMax := sizeof(buf);
    if not Header_GetItem(hdr,1,hi) then
      showmessage('Fehler beim Get');
    hi.fmt := hi.fmt and not HDF_BITMAP_ON_RIGHT // Bitmap-Position
             and not HDF_IMAGE
             and not HDF_BITMAP;
    if not Header_SetItem(hdr,1,hi) then
      showmessage('Fehler beim Set');
  end;
end;
Die Showmessges habe ich mal zu Testzwecken reingeschrieben und siehe da,
er schafft weder das Header_GetItem noch das Header_SetItem!
Der kriegt auch den pszText nicht richtig.

@uligerhardt:
Dein Vorschlag klappt übrigens auch nicht.

Ich versuche es weiter...
Irgendwie muss es ja gehen...

Gruß
Mattze

Mattze 19. Feb 2015 14:52

AW: Listview: Bitmap aus Header entfernen
 
Hi,

jetzt klappt es!

Einen gaaanz dussligen Fehler gemacht. Ich fühle mich wie ein Rookie!

Ich habe einfach vergessen, mir den Listview-Header zu Anfang zu holen.

Man, man, man... Ich schäme mich!

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.

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