<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Label Size berechnen über Width-Wert]]></title><description><![CDATA[<p>ich habe ein TImage in dessen mitte ich mit einem Label etwas reinschreiben will.<br />
da die grösse meines TImage aber sehr varrieren kann, möchte/muss ich die grösse/size meines Labels auch dynamisch anpassen. Da sonst der fall auftreten kann, dass der test länger als das image ist, was nicht vorkommen darf.<br />
kann ich irgendwie im Stil von</p>
<pre><code class="language-cpp">Label1-&gt;Font-&gt;Size = Image-&gt;Width/(x*LAbel1-&gt;Caption.Length);
</code></pre>
<p>das berechnen?<br />
habe es mit MaxHeight und MaxWidth schon probiert, geht aber leider nicht, oder ich mache etwas falsch..</p>
<p>falls es noch jemandem hilft es sich vorzustellen, hier noch den entsprechenden CodeAusschnitt</p>
<pre><code class="language-cpp">for (int iCounter = 1; iCounter &lt;(strlHeatingBands-&gt;Count+1); iCounter++)
   {
      code...
      code...

      imgHZ.Length++;                           //dynamisches array vergrössern
      imgHZ[iCounter] = new TImage(this);
      imgHZ[iCounter]-&gt;Parent = frmHeizbandTest-&gt;grbPaint;    //GroupBox
      imgHZ[iCounter]-&gt;Stretch = true;
      imgHZ[iCounter]-&gt;Height = iImgHeight;
      imgHZ[iCounter]-&gt;Width = iImgWidth;
      imgHZ[iCounter]-&gt;Top = iImgTop;
      imgHZ[iCounter]-&gt;Left = iImgLeft;
      imgHZ[iCounter]-&gt;Picture-&gt;LoadFromFile(&quot;Images\\heizungblau.bmp&quot;);

      iImgLeft +=imgHZ[iCounter]-&gt;Width;

      labHZ.Length++;                       //dynamisches array vergrössern
      labHZ[iCounter-1] = new TLabel(this);
      labHZ[iCounter-1]-&gt;Parent = frmHeizbandTest-&gt;grbPaint;
      labHZ[iCounter-1]-&gt;Caption = strlHeatingBands-&gt;Strings[iCounter-1];
      //labHZ[iCounter-1]-&gt;Constraints-&gt;MaxWidth = imgHZ[iCounter]-&gt;Width-8;   // -----hier möchte ich die grösse einschränken
      //labHZ[iCounter-1]-&gt;Constraints-&gt;MaxHeight = imgHZ[iCounter]-&gt;Height-8;
      labHZ[iCounter-1]-&gt;Font-&gt;Size = 24;
      labHZ[iCounter-1]-&gt;Transparent = true;

      labHZ[iCounter-1]-&gt;Top = imgHZ[iCounter]-&gt;Top+(imgHZ[iCounter]-&gt;Height-labHZ[iCounter-1]-&gt;Height)/2;
      labHZ[iCounter-1]-&gt;Left = imgHZ[iCounter]-&gt;Left+(imgHZ[iCounter]-&gt;Width-labHZ[iCounter-1]-&gt;Width)/2;
   }
</code></pre>
<p>schonmal thx im voraus<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/100088/label-size-berechnen-über-width-wert</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 12:32:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100088.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Feb 2005 16:20:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 16:20:09 GMT]]></title><description><![CDATA[<p>ich habe ein TImage in dessen mitte ich mit einem Label etwas reinschreiben will.<br />
da die grösse meines TImage aber sehr varrieren kann, möchte/muss ich die grösse/size meines Labels auch dynamisch anpassen. Da sonst der fall auftreten kann, dass der test länger als das image ist, was nicht vorkommen darf.<br />
kann ich irgendwie im Stil von</p>
<pre><code class="language-cpp">Label1-&gt;Font-&gt;Size = Image-&gt;Width/(x*LAbel1-&gt;Caption.Length);
</code></pre>
<p>das berechnen?<br />
habe es mit MaxHeight und MaxWidth schon probiert, geht aber leider nicht, oder ich mache etwas falsch..</p>
<p>falls es noch jemandem hilft es sich vorzustellen, hier noch den entsprechenden CodeAusschnitt</p>
<pre><code class="language-cpp">for (int iCounter = 1; iCounter &lt;(strlHeatingBands-&gt;Count+1); iCounter++)
   {
      code...
      code...

      imgHZ.Length++;                           //dynamisches array vergrössern
      imgHZ[iCounter] = new TImage(this);
      imgHZ[iCounter]-&gt;Parent = frmHeizbandTest-&gt;grbPaint;    //GroupBox
      imgHZ[iCounter]-&gt;Stretch = true;
      imgHZ[iCounter]-&gt;Height = iImgHeight;
      imgHZ[iCounter]-&gt;Width = iImgWidth;
      imgHZ[iCounter]-&gt;Top = iImgTop;
      imgHZ[iCounter]-&gt;Left = iImgLeft;
      imgHZ[iCounter]-&gt;Picture-&gt;LoadFromFile(&quot;Images\\heizungblau.bmp&quot;);

      iImgLeft +=imgHZ[iCounter]-&gt;Width;

      labHZ.Length++;                       //dynamisches array vergrössern
      labHZ[iCounter-1] = new TLabel(this);
      labHZ[iCounter-1]-&gt;Parent = frmHeizbandTest-&gt;grbPaint;
      labHZ[iCounter-1]-&gt;Caption = strlHeatingBands-&gt;Strings[iCounter-1];
      //labHZ[iCounter-1]-&gt;Constraints-&gt;MaxWidth = imgHZ[iCounter]-&gt;Width-8;   // -----hier möchte ich die grösse einschränken
      //labHZ[iCounter-1]-&gt;Constraints-&gt;MaxHeight = imgHZ[iCounter]-&gt;Height-8;
      labHZ[iCounter-1]-&gt;Font-&gt;Size = 24;
      labHZ[iCounter-1]-&gt;Transparent = true;

      labHZ[iCounter-1]-&gt;Top = imgHZ[iCounter]-&gt;Top+(imgHZ[iCounter]-&gt;Height-labHZ[iCounter-1]-&gt;Height)/2;
      labHZ[iCounter-1]-&gt;Left = imgHZ[iCounter]-&gt;Left+(imgHZ[iCounter]-&gt;Width-labHZ[iCounter-1]-&gt;Width)/2;
   }
</code></pre>
<p>schonmal thx im voraus<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713845</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 03 Feb 2005 16:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 16:28:06 GMT]]></title><description><![CDATA[<p>Hoi,</p>
<p>hilft Dir vielleicht TCanvas::TextWidth() weiter? Noch eine Schleife drum, um bei Bedarf die Fontgröße zu verringern. Sollte doch gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713858</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 Feb 2005 16:28:06 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 16:36:08 GMT]]></title><description><![CDATA[<p>verstehe das jetzt richtig mit TextWidth dass ich eine grösse festlegen soll, testen ob der Text ins bild passt, wenn nicht grösse eins kleiner und wieder testen bis es passt?<br />
wenn ja, auf diesen gedanken bin ich auch schon gekommen, wollte aber lieber eine schlaufe umgehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
dan könnte ich aber auch gleich Label1-&gt;Width verwenden</p>
<p>falls ich jedoch falsch liege, klähr mich bitte auf.</p>
<p>jedenfalls thx für die antwort<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713869</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 03 Feb 2005 16:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 16:56:40 GMT]]></title><description><![CDATA[<p>Hi BigNeal,</p>
<p>ich denke um irgendeine Art von Test + Schleife wirst Du nicht herumkommen. Mir ist zumindest keine Funktion bekannt, die einem die maximale Fontgröße für einen bestimmten Text, bei einer bestimmten Breite zurückgibt.<br />
Aber meine Kenntnisse der WIN-Api sind nahezu nicht-existent. Ob es da was in der VCL gibt weiß ich auch nicht. Zumindest ist mir bisher nichts entsprechnedes untergekommen. Manchmal funktionieren auch 'Workarounds' recht brauchbar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Sorry...</p>
<p>Ach so, bezüglich Label-&gt;Width: Wenn AutoSize des Labels = true ist, dann ja. Aber ich denke, dass die Schleife mit direkten Canvas-Operationen schneller ausgeführt wird. Probier's aus, oder hoffe dass jemand mehr weiß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713884</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 Feb 2005 16:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 17:26:25 GMT]]></title><description><![CDATA[<p>?????????BCB- Hilfe???????</p>
<p>Die Methode TextExtent liefert die Breite und Höhe eines in der aktuellen Schrift dargestellten Strings. Als Maßeinheit gelten Pixel.</p>
<p>typedef struct TSize</p>
<p>{<br />
long cx;<br />
long cy;<br />
}</p>
<p>TSize __fastcall TextExtent(const AnsiString Text);</p>
<p>?????????BCB- Hilfe?????????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713924</guid><dc:creator><![CDATA[DerAltenburger]]></dc:creator><pubDate>Thu, 03 Feb 2005 17:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 17:31:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2128">@DerAltenburger</a>: Ja, soweit ist das klar, aber es geht darum, dass man die maximale Fontgröße aus dem Text und der maximal zur Verfügung stehenden Breite hat. Also nicht überprüfen ob Text passt, sondern Textbreite (und somit Fontgröße) ermitteln. Wenn Dir noch was einfällt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713927</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 Feb 2005 17:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 03 Feb 2005 17:40:50 GMT]]></title><description><![CDATA[<p>thx für euren einsatz.. mir ist noch was eingefallen..<br />
hat jemand eine ahnung, wie die &quot;Schrift&quot; die höhe und breite des buchstabens berechnet?<br />
so zB:</p>
<pre><code class="language-cpp">ein 'R'
Size 10: 
Width = 5 Pixel
Height = 10 Pixel

Size 15:
Width = 5Pixel *1.5
Height = 10 Pixel *1.5
</code></pre>
<p>ich hab da keine ahnung wie das genau erstellt wird und die Daten sind völlig aus der luft gegriffen.<br />
kann man das nciht irgendwie auf diese art berechnen?<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/713932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/713932</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 03 Feb 2005 17:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Fri, 04 Feb 2005 07:35:19 GMT]]></title><description><![CDATA[<p>Tja, da das von der ausgewählten Schirftart abhängt, müßtest Du zuerst einmal die Schriftartdaten interpretieren. Wenn es dann noch eine proportionale Schrift ist, mußt Du dann die Breite für die einzelnen Buchstaben berechnen. Zusätzlich mußt Du natürlich prüfen, welcher Schriftgrad in Windows eingestellt ist. Du wirst dort keine 'einfache Formel' verwenden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/714257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/714257</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 04 Feb 2005 07:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Sat, 05 Feb 2005 02:08:13 GMT]]></title><description><![CDATA[<p>hmmmmm... ich denke, ich muss da wohl doch auf ne schleife zurück greifen.. oder eine tabelle oder so machen.. jedenfalls danke für die auskunft..<br />
bin aber immernoch für neue ideen offen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/714988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/714988</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Sat, 05 Feb 2005 02:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 10 Feb 2005 14:21:06 GMT]]></title><description><![CDATA[<p>ich kam jetzt dazu das mit der schleife auszutesten..<br />
hatte eigentlich auch genau im kopf wie es funktionieren <strong>müsste</strong></p>
<p>ich habe das zuerst einfach mit einem int iSize getestet, welches nicht funktionierte..<br />
jetzt habe ich mir eine neue font gemacht und diese dem label zugewiesen..<br />
klapt leider immer noch nicht.<br />
mache ich einen prinzipiellen fehler?</p>
<pre><code class="language-cpp">TFont *fontHZ = new TFont();
   ...
   ...

      for (fontHZ-&gt;Size = 1; fontHZ-&gt;Size &lt; 99; fontHZ-&gt;Size++)
      {
         labHZ[iCounter-1]-&gt;Font = fontHZ;

        // Label1-&gt;Caption = IntToStr(fontHZ-&gt;Size);
         ShowMessage(IntToStr(Canvas-&gt;TextWidth(labHZ[iCounter-1]-&gt;Caption))+&quot;/&quot;+IntToStr(labHZ[iCounter-1]-&gt;Font-&gt;Size));

         if (Canvas-&gt;TextWidth(labHZ[iCounter-1]-&gt;Caption) &gt; imgHZ[iCounter]-&gt;Width)
         {
            ShowMessage(&quot;Schriftgrösse wurde gefunden&quot;);
            labHZ[iCounter-1]-&gt;Font-&gt;Size--;
            //Label1-&gt;Caption = IntToStr(labHZ[iCounter-1]-&gt;Font-&gt;Size);
            fontHZ-&gt;Size = 99;
         }
      }
</code></pre>
<p>bei der ersten ShowMessage bekomme ich immer das:</p>
<blockquote>
<p>36/1<br />
36/2<br />
36/3<br />
36/4<br />
...<br />
36/x</p>
</blockquote>
<p>d.h. die grösse(size) ändert sich im label, aber die länge (TextWidth) bleibt immer gleich!?!</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> bin verwirrt...</p>
<p>thx<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719757</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 10 Feb 2005 14:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 10 Feb 2005 14:49:47 GMT]]></title><description><![CDATA[<p>for (labHZ-&gt;Font-&gt;Size = 1; labHZ-&gt;Font-&gt;Size &lt; 99; labHZ-&gt;Font-&gt;Size++)<br />
{<br />
ShowMessage(IntToStr(<strong>labHZ</strong>-&gt;Canvas-&gt;TextWidth(labHZ-&gt;Caption))+&quot;/&quot;+IntToStr(labHZ-&gt;Font-&gt;Size));<br />
}</p>
<p>Du mußt den Canvas des Labels nehmen, oder dem verwendeten Canvas den Font und die Größe zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719793</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 10 Feb 2005 14:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to Label Size berechnen über Width-Wert on Thu, 10 Feb 2005 15:20:00 GMT]]></title><description><![CDATA[<p>thx..<br />
habe wohl vor lauter wälder den baum nicht mehr gesehen...<br />
oder so irgendwie..<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719834</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 10 Feb 2005 15:20:00 GMT</pubDate></item></channel></rss>