Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi (NonVCL) ListView Ownerdraw Column Index (https://www.delphipraxis.net/191817-nonvcl-listview-ownerdraw-column-index.html)

EWeiss 23. Feb 2017 07:38


(NonVCL) ListView Ownerdraw Column Index
 
Wie komme ich in Report View an den Column Header Index wenn ich mit der Maus drüberfahre.

Delphi-Quellcode:
    WM_MOUSEMOVE:
      begin
        DC := GetDC(WinHandle);
        HeaderItemCount := Header_GetItemCount(WinHandle);
        for HeaderItem := 0 to HeaderItemCount - 1 do
        begin
          if (HeaderItem = Header_GetFocusedItem(WinHandle)) then
          begin
            try
              GdipCheck(GdipCreateFromHDC(DC, Graphics));
              Header_GetItemRect(WinHandle, HeaderItem , @HeaderItemRect);

              SkinEngine.PaintButton(Graphics, 3, ImgBack, HeaderItemRect.Left, HeaderItemRect.Top,
                HeaderItemRect.Right, HeaderItemRect.Bottom, BS_PUSHBUTTON);
            finally
              if Graphics <> 0 then
                GdipCheck(GdipDeleteGraphics(Graphics));
            end;
          end;
        end;
        ReleaseDC(WinHandle, DC);
      end;
Header_GetFocusedItem schlägt im Report View (MultiSelect) schon bei 0 an egal wo ich mich gerade auf dem Header befinde.
Ich benötige den Index einmal zum zeichnen und zum Sortieren der Liste.

ListView_GetColumn funktioniert auch nicht im Report View. (MultiSelect)

gruss

EWeiss 23. Feb 2017 08:10

AW: (NonVCL) ListView Ownerdraw Column Index
 
Sorry Thread war unnötig ;)
Nach dem schreiben bin ich selber auf die Lösung gekommen.

Manchmal ist man einfach nur Blöd :wall:

Delphi-Quellcode:
    WM_MOUSEMOVE:
      begin
        DC := GetDC(WinHandle);
        HeaderItemCount := Header_GetItemCount(WinHandle);
        for HeaderItem := 0 to HeaderItemCount - 1 do
        begin
          try
            GdipCheck(GdipCreateFromHDC(DC, Graphics));
            Header_GetItemRect(WinHandle, HeaderItem , @HeaderItemRect);

            GetCursorPos(CurPos);
            ScreenToClient(Handle, CurPos);

            if PtInRect(HeaderItemRect, CurPos) then
            begin
              TmpRect := HeaderItemRect;
              TmpRect.Right := HeaderItemRect.Right - HeaderItemRect.Left;
              SkinEngine.PaintButton(Graphics, 4, ImgBack, TmpRect.Left, TmpRect.Top,
                TmpRect.Right, TmpRect.Bottom, BS_PUSHBUTTON);
            end;
          finally
              if Graphics <> 0 then
                GdipCheck(GdipDeleteGraphics(Graphics));
          end;
        end;
        ReleaseDC(WinHandle, DC);
      end;
gruss

freimatz 23. Feb 2017 09:07

AW: (NonVCL) ListView Ownerdraw Column Index
 
Zitat:

Zitat von EWeiss (Beitrag 1362374)
Sorry Thread war unnötig ;)
Nach dem schreiben bin ich selber auf die Lösung gekommen.

Finde ich nicht. Vielleicht googelt mal einer. Und dann ist es gut dass man nicht nur das Problem findet, sondern auch die Lösung. Daher Danke für Deinen Beitrag.

EWeiss 23. Feb 2017 10:23

AW: (NonVCL) ListView Ownerdraw Column Index
 
Zitat:

Zitat von freimatz (Beitrag 1362378)
Zitat:

Zitat von EWeiss (Beitrag 1362374)
Sorry Thread war unnötig ;)
Nach dem schreiben bin ich selber auf die Lösung gekommen.

Finde ich nicht. Vielleicht googelt mal einer. Und dann ist es gut dass man nicht nur das Problem findet, sondern auch die Lösung. Daher Danke für Deinen Beitrag.

Ah jo ;)

Ich habe zwar den Index nicht bekommen dafür aber den Rect.
Zum Zeichnen reicht das erst mal.
Den Index hole ich mir an anderer stelle.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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