Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#13

AW: nonVCL TabControl Hintergrundfarbe ändern

  Alt 24. Feb 2011, 04:30
Noch was gefunden
So ändern Sie die Hintergrundfarbe von einem Registerkarten-Steuerelement

Hier mal ein kleines Sample (ohne Quelltext)
Allerdings nur die TextFarbe im Tab geändert.
Und auf die schnelle in PB geschrieben.

Das Problem in Delphi es fehlen zu viele API's
Zum Beispiel!

TabCtrl_GetItem
könnte man so ermitteln
SendMessage(hwnd, TCM_GETITEM, iItem, @pItem)
War mir aber jetzt zu umständlich.



Delphi-Quellcode:
        CASE %WM_DRAWITEM
           LOCAL lDISPtr AS DRAWITEMSTRUCT PTR, zCap AS ASCIIZ * 50
           LOCAL ti AS TC_ITEM, TextDrawFlag AS LONG
 
           IF CBWPARAM = %ID_TAB THEN
              lDisPtr = CBLPARAM
 
              FillRect @lDisptr.hDc, @lDisptr.rcItem, GetSysColorBrush(%COLOR_3DFACE)
              @lDisptr.rcItem.nTop = @lDisptr.rcItem.nTop + 3
              IF @lDisPtr.ItemState = %ODS_SELECTED THEN
                 SetTextColor @lDisPtr.hDc, %BLUE
              ELSE
                 SetTextColor @lDisPtr.hDc, %BLACK
              END IF
              SetBkColor @lDisPtr.hDc, GetSysColor(%COLOR_3DFACE)
 
              ti.mask = %TCIF_TEXT
              ti.pszText = VARPTR(zCap)
              ti.cchTextMax = SIZEOF(zCap)
              CALL TabCtrl_GetItem(GetDlgItem(CBHNDL, %ID_TAB), @lDisptr.itemID, ti)
              DrawText @lDisptr.hDc, zCap, LEN(zCap), @lDisptr.rcItem, %DT_SINGLELINE OR %DT_CENTER
 
          END IF

gruss

Geändert von EWeiss ( 9. Jul 2019 um 09:32 Uhr)
  Mit Zitat antworten Zitat