<?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[OnDraw von TPageControl]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein TPageControl und desseen Eigenschaft &quot;OwnerDraw&quot; auf true gesetzt.<br />
Aus der FAQ, der Suche und Hilfe aus diesem Forum habe ich folgenden Code gefunden Bilder und Text in den Tabs auszugeben:</p>
<pre><code class="language-cpp">void __fastcall TSwlDocInfo::InfoControlDrawTab(
      TCustomTabControl *Control, int TabIndex, const TRect &amp;Rect,
      bool Active)
{

  int Picture = InfoControl-&gt;Pages[TabIndex]-&gt;ImageIndex
  String Text = InfoControl-&gt;Pages[TabIndex]-&gt;Caption;
  Control-&gt;Canvas-&gt;Brush-&gt;Color = clCream;
  Control-&gt;Canvas-&gt;Brush-&gt;Style = bsSolid;

  Control-&gt;Canvas-&gt;TextRect(Rect,
                Rect.Left + 40,
                Rect.Top+ 15,
                Text);

   ImageList32-&gt;Draw(Control-&gt;Canvas, Rect.left +4 , Rect.Top+4,Picture, true);
}
</code></pre>
<p>das klappt auch ganz toll!<br />
Nur stelle ich nuicht immer alle Tabs auch da! Es gibt Fälle, wo TabVivible auf false gesetzt wird.</p>
<p>In diesem Fall ändert sich der TabINdex allerdings leider auch <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="😞"
    /> Und somit bekomme ich mit den obigen Code falsche Bilder und Texte auf den Tabs ausgegeben <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="😞"
    /></p>
<p>Ich dachte es wäre dann ja durchaus praktisch die entsprechenden Werte direkt aus dem übergebenen Control Objeckt zu holen. Allerdings gibt es in Control keine Pages, und alle Eigenschaften von Control beziehen sich direkt auf das Eltern TTabControl * InfoControl.</p>
<p>Hat jeamnd eine Idee wie ich die Texte und Bilder dennoch richtig ausgeben kann? Bzw. wie ich über Control IMageIndex und Caption auslesen kann ??</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113576/ondraw-von-tpagecontrol</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:45:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113576.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Jun 2005 08:57:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OnDraw von TPageControl on Fri, 24 Jun 2005 08:57:46 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein TPageControl und desseen Eigenschaft &quot;OwnerDraw&quot; auf true gesetzt.<br />
Aus der FAQ, der Suche und Hilfe aus diesem Forum habe ich folgenden Code gefunden Bilder und Text in den Tabs auszugeben:</p>
<pre><code class="language-cpp">void __fastcall TSwlDocInfo::InfoControlDrawTab(
      TCustomTabControl *Control, int TabIndex, const TRect &amp;Rect,
      bool Active)
{

  int Picture = InfoControl-&gt;Pages[TabIndex]-&gt;ImageIndex
  String Text = InfoControl-&gt;Pages[TabIndex]-&gt;Caption;
  Control-&gt;Canvas-&gt;Brush-&gt;Color = clCream;
  Control-&gt;Canvas-&gt;Brush-&gt;Style = bsSolid;

  Control-&gt;Canvas-&gt;TextRect(Rect,
                Rect.Left + 40,
                Rect.Top+ 15,
                Text);

   ImageList32-&gt;Draw(Control-&gt;Canvas, Rect.left +4 , Rect.Top+4,Picture, true);
}
</code></pre>
<p>das klappt auch ganz toll!<br />
Nur stelle ich nuicht immer alle Tabs auch da! Es gibt Fälle, wo TabVivible auf false gesetzt wird.</p>
<p>In diesem Fall ändert sich der TabINdex allerdings leider auch <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="😞"
    /> Und somit bekomme ich mit den obigen Code falsche Bilder und Texte auf den Tabs ausgegeben <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="😞"
    /></p>
<p>Ich dachte es wäre dann ja durchaus praktisch die entsprechenden Werte direkt aus dem übergebenen Control Objeckt zu holen. Allerdings gibt es in Control keine Pages, und alle Eigenschaften von Control beziehen sich direkt auf das Eltern TTabControl * InfoControl.</p>
<p>Hat jeamnd eine Idee wie ich die Texte und Bilder dennoch richtig ausgeben kann? Bzw. wie ich über Control IMageIndex und Caption auslesen kann ??</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/816261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816261</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Fri, 24 Jun 2005 08:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Fri, 24 Jun 2005 10:50:53 GMT]]></title><description><![CDATA[<p>ich habe jetzt folgenden Code in das Ereignis geschrieben:</p>
<pre><code class="language-cpp">int Picture = -1;
  String Text = &quot;\0&quot;;
  if (Control-&gt;Showing == false) return ;

  if (Control-&gt;Controls[TabIndex]-&gt;Name.operator ==(&quot;tsAuftrag&quot;))
    {
    Picture = 1;
    Text = &quot;Auftrag&quot;;
    }
  else if (Control-&gt;Controls[TabIndex]-&gt;Name.operator ==(&quot;tsPatient&quot;))
    {
    Picture = 2;
    Text = &quot;Patient&quot;;
    }
  else if (Control-&gt;Controls[TabIndex]-&gt;Name.operator ==(&quot;tsDokument&quot;))
    {
    Picture = 0;
    Text = &quot;Dokument&quot;;
    }
  else if (Control-&gt;Controls[TabIndex]-&gt;Name.operator ==(&quot;tsTabelle&quot;))
    {
    Picture = 3;
    Text = &quot;Tabelle&quot;;
    }
  Control-&gt;Canvas-&gt;Brush-&gt;Color = clCream;
  Control-&gt;Canvas-&gt;Brush-&gt;Style = bsSolid;

  Control-&gt;Canvas-&gt;TextRect(Rect,
                Rect.Left + 40,
                Rect.Top+ 15,
                Text);

   ImageList32-&gt;Draw(Control-&gt;Canvas, Rect.left +4 , Rect.Top+4,Picture, true);
</code></pre>
<p>jetzt kriege ich nicht nur falsche Beschriftungen und Bilder, zusätzlich verändern diese sich auch noch wenn ich ein anderes Tab anklicke....<br />
Weiß jemand rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/816333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816333</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Fri, 24 Jun 2005 10:50:53 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Fri, 24 Jun 2005 11:07:53 GMT]]></title><description><![CDATA[<p>Warum schribst du eigentlich</p>
<pre><code class="language-cpp">Control-&gt;Controls[TabIndex]-&gt;Name.operator ==(&quot;tsAuftrag&quot;)
</code></pre>
<p>anstatt der Kurzform</p>
<pre><code class="language-cpp">Control-&gt;Controls[TabIndex]-&gt;Name == &quot;tsAuftrag&quot;
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/816349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816349</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Fri, 24 Jun 2005 11:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Fri, 24 Jun 2005 11:14:07 GMT]]></title><description><![CDATA[<p>weil ich nicht wußte das das auch so funktioniert ...</p>
<p>Das problem ist damit allerdings leider nicht gelöst <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/816354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816354</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Fri, 24 Jun 2005 11:14:07 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Sat, 25 Jun 2005 09:48:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//---------------------------------------------------------------------------
void __fastcall TForm1::PageControl1DrawTab(TCustomTabControl *Control,
      int TabIndex, const TRect &amp;Rect, bool Active)
{
  String txt;
  for (int i = 0; i &lt; PageControl1-&gt;PageCount; i++)
  {
    TTabSheet *Tab = static_cast&lt;TTabSheet*&gt;(((TPageControl*)Control)-&gt;Pages[i]);
    if (Tab-&gt;TabIndex == TabIndex)
    {
      txt = Tab-&gt;Caption;
      break;
    }
  }
  Control-&gt;Canvas-&gt;Brush-&gt;Color = clCream;
  Control-&gt;Canvas-&gt;Brush-&gt;Style = bsSolid;
  Control-&gt;Canvas-&gt;TextRect(Rect,
                            Rect.Left + 40,
                            Rect.Top + 4,
                            txt);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  PageControl1-&gt;Pages[1]-&gt;TabVisible ^= 1; // Tab2 verstecken/anzeigen
}
//---------------------------------------------------------------------------
</code></pre>
<p>Quelle: <a href="http://groups.google.com/groups?hl=de&amp;lr=&amp;threadm=qac8juovkjm61aimm8e74d2ktm00p4kg6o%404ax.com&amp;rnum=5&amp;prev=/groups%3Fhl%3Dde%26lr%3D%26biw%3D1138%26q%3Dondrawtab%2Btabvisible%26btnG%3DSuche%26meta%3Dgroup%253Dborland.public.*" rel="nofollow">Borland Newsgroups</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/816869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/816869</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sat, 25 Jun 2005 09:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Sat, 25 Jun 2005 17:28:08 GMT]]></title><description><![CDATA[<p>Danke!!!!</p>
<p>Diese ganze static_cast Sache muss ich mir beizeiten noch mal genauer anschauen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817123</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Sat, 25 Jun 2005 17:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to OnDraw von TPageControl on Sun, 26 Jun 2005 10:04:59 GMT]]></title><description><![CDATA[<p>Die Casterei ist hier nur ein Nebenschauplatz. Ehrlich gesagt verstehe ich die Lösung selbst nicht wirklich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Es scheint unlogisch, dass sich die Änderung der Tab-Reihenfolge hier nicht negativ auswirkt, denn prinzipiell ist das Abklappern des Pages-Arrays ja das gleiche wie der direkte Zugriff auf Pages[TabIndex], nur eben umständlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817377</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 26 Jun 2005 10:04:59 GMT</pubDate></item></channel></rss>