<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Lazarus Pascal - Cross platform Dark Theme detectie - Delphi, Lazarus, Free Pascal				            </title>
            <link>https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/</link>
            <description>Tweaking4All.nl Discussie Forum</description>
            <language>nl-NL</language>
            <lastBuildDate>Thu, 13 Aug 2026 00:11:51 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>RE: Lazarus Pascal - Cross platform Dark Theme detectie</title>
                        <link>https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1209</link>
                        <pubDate>Sat, 29 Aug 2020 11:32:00 +0000</pubDate>
                        <description><![CDATA[En het kan zelfs nog korter (met dank aan Alextp van het Lazarus forum):
// by &quot;Hansaplast&quot; &amp; &quot;Alextp&quot; from Lazarus forum
function IsDarkTheme: boolean;
  function _Level(C: TColor): ...]]></description>
                        <content:encoded><![CDATA[<p>En het kan zelfs nog korter (met dank aan Alextp van het Lazarus forum):</p>
<pre><span class="c1">// by "Hansaplast" &amp; "Alextp" from Lazarus forum</span>
<span class="k">function</span> <span class="nf">IsDarkTheme</span><span class="o">:</span> <span class="kt">boolean</span><span class="o">;</span>
  <span class="k">function</span> <span class="nf">_Level</span><span class="p">(</span><span class="n">C</span><span class="o">:</span> <span class="n">TColor</span><span class="p">)</span><span class="o">:</span> <span class="kt">double</span><span class="o">;</span>
  <span class="k">begin</span>
    <span class="bp">Result</span><span class="o">:=</span> <span class="n">Red</span><span class="p">(</span><span class="n">C</span><span class="p">)</span><span class="o">*</span><span class="mf">0.3</span> <span class="o">+</span> <span class="n">Green</span><span class="p">(</span><span class="n">C</span><span class="p">)</span><span class="o">*</span><span class="mf">0.59</span> <span class="o">+</span> <span class="n">Blue</span><span class="p">(</span><span class="n">C</span><span class="p">)</span><span class="o">*</span><span class="mf">0.11</span><span class="o">;</span>
  <span class="k">end</span><span class="o">;</span>
<span class="k">begin</span>
  <span class="bp">Result</span><span class="o">:=</span> <span class="n">_Level</span><span class="p">(</span><span class="n">ColorToRGB</span><span class="p">(</span><span class="n">clWindow</span><span class="p">))</span> <span class="o">&lt;</span> <span class="n">_Level</span><span class="p">(</span><span class="n">ColorToRGB</span><span class="p">(</span><span class="n">clWindowText</span><span class="p">))</span><span class="o">;</span>
<span class="k">end</span><span class="o">;</span></pre>]]></content:encoded>
						                            <category domain="https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/">Delphi, Lazarus, Free Pascal</category>                        <dc:creator>Hans</dc:creator>
                        <guid isPermaLink="true">https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1209</guid>
                    </item>
				                    <item>
                        <title>RE: Lazarus Pascal - Cross platform Dark Theme detectie</title>
                        <link>https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1208</link>
                        <pubDate>Sat, 29 Aug 2020 10:21:10 +0000</pubDate>
                        <description><![CDATA[N.b.: Dit kan uiteraard korter en zonder de grayscale functie:
 
// t4a_IsThisDarkTheme: Detects if the Dark Theme (true) has been enabled or not (false)function TForm1.t4a_ThisIsDarkTheme...]]></description>
                        <content:encoded><![CDATA[<p>N.b.: Dit kan uiteraard korter en zonder de grayscale functie:</p>
<p> </p>
<pre>// t4a_IsThisDarkTheme: Detects if the Dark Theme (true) has been enabled or not (false)<br />function TForm1.t4a_ThisIsDarkTheme:boolean;<br />var<br />  RGBWin, RGBText: TColor;<br />const<br />  Rgray = 0.3;<br />  Ggray = 0.59;<br />  Bgray = 0.11;<br />begin<br />  RGBWin := ColorToRGB(clWindow);<br />  RGBText:= ColorToRGB(clWindowText);<br />  Result := ((Red(RGBWin)*Rgray)+(Green(RGBWin)*Ggray)+(Blue(RGBWin)*Bgray)) &lt; ((Red(RGBText)*Rgray)+(Green(RGBText)*Ggray)+(Blue(RGBText)*Bgray));<br />end;</pre>]]></content:encoded>
						                            <category domain="https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/">Delphi, Lazarus, Free Pascal</category>                        <dc:creator>Hans</dc:creator>
                        <guid isPermaLink="true">https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1208</guid>
                    </item>
				                    <item>
                        <title>Lazarus Pascal - Cross platform Dark Theme detectie</title>
                        <link>https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1207</link>
                        <pubDate>Sat, 29 Aug 2020 09:59:56 +0000</pubDate>
                        <description><![CDATA[Ik gebruik zelf het volgende voor cross platform dark theme detectie.
Hierbij vergelijk ik de systeem kleuren clWindow en clWindowText, omdat deze keurig mee veranderen en altijd een hoog c...]]></description>
                        <content:encoded><![CDATA[<div>Ik gebruik zelf het volgende voor cross platform dark theme detectie.</div>
<div>Hierbij vergelijk ik de systeem kleuren<span> </span><strong>clWindow</strong><span> en</span><span> </span><strong>clWindowText</strong>, omdat deze keurig mee veranderen en altijd een hoog contrast hebben met elkaar (om dingen leesbaar te houden).<br />Het gebruikt geen speciale systeem functies en tot nu toe werkte dit altijd prima onder macOS en Linux. 😊 </div>
<div> </div>
<pre>// t4a_IsThisDarkTheme: Detects if the Dark Theme (true) has been enabled or not (false)<br />function t4a_ThisIsDarkTheme:boolean;<br />begin<br />  Result := t4a_ColorToGrayScale(clWindow) &lt; t4a_ColorToGrayScale(clWindowText); // guess dark theme<br />end;<br /><br />{ Convert a color to grayscale, observing perception }<br />function t4a_ColorToGrayScale(aColor:TColor):TColor;<br />var<br />  GreyNumber:integer;<br />begin<br />  Result:=ColorToRGB(aColor);<br />  // Convert Color to Grayscale if not yet Grayscale<br />  // Grayscale   = (0.3 * Red) + (0.59 * Green) + (0.11 * Blue)<br />  // Alternative = (0.2126 * Red) + (0.7152 * Green) + (0.0722 * Blue)<br />  if (Red(Result)&lt;&gt;Green(Result)) and (Red(Result)&lt;&gt;Blue(Result)) then<br />    begin<br />      GreyNumber:= ( ( MathRound(Red(Result)   * 0.3) +<br />                       MathRound(Green(Result) * 0.59) +<br />                       MathRound(Blue(Result)  * 0.11) )  div 3);<br /><br />      if GreyNumber&lt;0 then<br />        GreyNumber:=0<br />      else if GreyNumber&gt;255 then<br />        GreyNumber:=255;<br /><br />      Result:=RGBToColor(GreyNumber,GreyNumber,GreyNumber);<br />    end;<br />end; </pre>
<div> </div>
<div>Plaats vervolgens de detectie in een Form.OnPaint event, aangezien deze aangeroepen wordt als een theme veranderd.</div>
<div> </div>
<pre>procedure TForm1.FormPaint(Sender: TObject);<br />begin<br />  Label1.Caption := BoolToStr( t4a_ThisIsDarkTheme, 'Dark Theme', 'Light Theme' );<br />end;   </pre>
<div> </div>]]></content:encoded>
						                            <category domain="https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/">Delphi, Lazarus, Free Pascal</category>                        <dc:creator>Hans</dc:creator>
                        <guid isPermaLink="true">https://www.tweaking4all.nl/forum/delphi-lazarus-free-pascal/lazarus-pascal-cross-platform-dark-theme-detectie/#post-1207</guid>
                    </item>
							        </channel>
        </rss>
		