AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe von TCheckbox nicht änderbar

Ein Thema von Shark99 · begonnen am 24. Feb 2017 · letzter Beitrag vom 24. Feb 2017
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

AW: Farbe von TCheckbox nicht änderbar

  Alt 24. Feb 2017, 14:35
Danke für die Antworten!

Ich hatte vergessen zu sagen dass die Form DoubleBuffered = True hat. Ohne Doublebuffered verschwindet das Problem erstmals, aber es kommt zu anderen Problemen. Auf den Child Fenster wird der Hintergrund der Checkboxen weiß statt transparent, beim Drücken von ALT verschwinden sogar die Checkboxen für eine Weile komplett (sehr nervig!).

Dazu sind die Checkboxen noch auf einem TTntTabsheet.

Delphi-Quellcode:
    WM_CTLCOLORSTATIC:
      begin
        SkinEngine.SplitColorARGB(SkinEngine.SK_INACTIVECAPTION, Alpha, Red, Green, Blue);
        Color := RGB(Red, Green, Blue);

        SetBkMode(wp, TRANSPARENT);
        SetTextColor(wp, Color);
        Result := GetStockObject(NULL_BRUSH);
        Exit;
      end;
Ist Leider kein Delphi 7 Code. Ich hab ihn etwas abgewandelt und eine neue Klasse erzeugt.
Delphi-Quellcode:
public
  procedure CNCtlColorStatic(var Message: TWMCtlColorStatic); message WM_CTLCOLORSTATIC;
...
procedure TTestCheckBox.CNCtlColorStatic(var Message: TWMCtlColorStatic);
begin
  SetBkMode(Message.ChildDC, TRANSPARENT);
  SetTextColor(Message.ChildDC, ColorToRGB(clRed));
  SetBKColor(Message.ChildDC, ColorToRGB(clYellow));
  Message.Result := GetStockObject(NULL_BRUSH);
end;
Hat jedoch keinerlei Auswirkungen (wird aber ausgeführt! Hab breakpoint gesetzt).

Das Problem lässt sich leicht reproduzieren, wenn man DoubleBuffered auf True setzt. Hier habe ich einen Fix dafür gepostet (unten als Antwort, falls der Browser da nicht hinspringt):
http://www.delphipraxis.net/124481-v...ojekte.html#26
Den VCLFixpack hatte ich schon im Projekt drin und zwar in der Version 1.4. Habe auch deine Version 1.2 versucht. Keine Auswirkungen.

Habe aber nun eine Lösung gefunden!

Wenn man auf den TTntTabsheet (oder TTabsheet der auch das Problem hat) einen TPanel legt (mit ParentBackground False) und erst darauf die TTntCheckboxen (oder TCheckboxen, Problem ist gleich) sind sie danach nicht mehr schwarz, sondern transparent und zwar auch mit DoubleBuffered True!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#2

AW: Farbe von TCheckbox nicht änderbar

  Alt 24. Feb 2017, 16:15
Den VCLFixpack hatte ich schon im Projekt drin und zwar in der Version 1.4. Habe auch deine Version 1.2 versucht. Keine Auswirkungen.
Dann wäre ein kleines Beispiel gut zum Nachvollziehen. Bei mir funktioniert die Unit mit Delphi 7.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
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