Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   nonVCL TabControl Hintergrundfarbe ändern (https://www.delphipraxis.net/158591-nonvcl-tabcontrol-hintergrundfarbe-aendern.html)

lbccaleb 23. Feb 2011 20:56

AW: nonVCL TabControl Hintergrundfarbe ändern
 
OK, Danke. Werde das mal ausprobieren.

EWeiss 23. Feb 2011 22:11

AW: nonVCL TabControl Hintergrundfarbe ändern
 
Zitat:

Zitat von lbccaleb (Beitrag 1083915)
OK, Danke. Werde das mal ausprobieren.

Ich hoffe du hast die GWL_STYLE auf TCS_OWNERDRAWFIXED gesetzt?
Das viel mir gerade noch ein.

gruss

EWeiss 24. Feb 2011 03:30

AW: nonVCL TabControl Hintergrundfarbe ändern
 
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!

Delphi-Quellcode:
TabCtrl_GetItem

könnte man so ermitteln
Delphi-Quellcode:
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

hathor 24. Feb 2011 07:11

AW: nonVCL TabControl Hintergrundfarbe ändern
 
In der ganzen Diskussion vermisse ich die boolsche Eigenschaft "highlighted".
Beispiel:

Delphi-Quellcode:
constructor TTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Align := alClient;
  ControlStyle := ControlStyle + [csAcceptsControls, csNoDesignVisible,
    csParentBackground, csPannable];
  Visible := False;
  FTabVisible := True;
  FHighlighted := False;
end;

EWeiss 24. Feb 2011 07:12

AW: nonVCL TabControl Hintergrundfarbe ändern
 
Zitat:

Zitat von hathor (Beitrag 1083971)
In der ganzen Diskussion vermisse ich die boolsche Eigenschaft "highlighted".
Beispiel:

Delphi-Quellcode:
constructor TTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Align := alClient;
  ControlStyle := ControlStyle + [csAcceptsControls, csNoDesignVisible,
    csParentBackground, csPannable];
  Visible := False;
  FTabVisible := True;
  FHighlighted := False;
end;

was für ein FHighlighted
Das ist nonvcl und nicht von einer TComponente abgeleitet..


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Seite 2 von 2     12   

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