<?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[Eigenschaften von Komponenten setzen]]></title><description><![CDATA[<p>Hi Komponentenfans!</p>
<p>Ich habe mich mal intensiver mit der Programmierung von Komponenten beschäftigt und eine neue Diagramm-Kompo von TPanel abgeleitet. So weit so gut.</p>
<p>Bei meiner Komponente habe ich nun folgendes Problem, dass einige meiner im ObjectInspector gesetzten Werte nicht zur Laufzeit angewendet werden. D.h. wenn ich im OI zu Designzeit die Werte auf z.B. 50 setze, dann werden die Änderungen sofort übernommen (das Diagramm wird sofort angepasst). Kompiliere ich das fertige Projekt mit der Kompo, dann stehen wieder die Default-Werte drin (30), die SetOffset-Methode der Property wird nicht aufgerufen und die Design-Werte wurden somit verworfen.</p>
<p>Code (auszugsweise):</p>
<pre><code class="language-cpp">__fastcall TRasterpanel::TRasterpanel(TComponent* Owner) : TPanel(Owner)
{
           DoubleBuffered    = true;

           SetBounds(0, 0, 640, 480);
           Caption           = &quot; &quot;;
           Parent            = dynamic_cast&lt;TWinControl*&gt;(Owner);
           iOffsetTop        = 30; // Setzt das Zeichenoffset Top
           iOffsetLeft       = 30; // Setzt das Zeichenoffset Left
}

void __fastcall TRasterpanel::SetOffsetTop(int i)
{
     if ((i &gt;= 0) &amp;&amp; (i &lt;= imgDrawImage-&gt;Height/4)) iOffsetTop = i;
     RefreshGridPointsFromRasterPoints(); // Zeichenfunktion
     DrawLines();
}

int __fastcall TRasterpanel::GetOffsetTop()
{
    return iOffsetTop;
}

void __fastcall TRasterpanel::SetOffsetLeft(int i)
{
     if ((i &gt;= 0) &amp;&amp; (i &lt;= imgDrawImage-&gt;Width/4))
     {
        iOffsetLeft = i;
        Beep(1000, 10); // hier kommt er zur Laufzeit nicht hin, nur zu Designzeit
     }

     RefreshGridPointsFromRasterPoints();
     DrawLines();
}

int __fastcall TRasterpanel::GetOffsetLeft()
{
    return iOffsetLeft;
}
</code></pre>
<pre><code class="language-cpp">class PACKAGE TRasterpanel : public TPanel
{
      private:

      int iOffsetTop;
      int iOffsetLeft;

      void __fastcall SetOffsetTop(int i);
      int  __fastcall GetOffsetTop();
      void __fastcall SetOffsetLeft(int i);
      int  __fastcall GetOffsetLeft();

      public:

      __fastcall TRasterpanel(TComponent* Owner);
      virtual __fastcall ~TRasterpanel();

      __published:

      __property int OffsetTopBottom      = {read = GetOffsetTop,      write = SetOffsetTop, default = 30};
      __property int OffsetLeftRight      = {read = GetOffsetLeft,     write = SetOffsetLeft, default = 30};
};
</code></pre>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/103289/eigenschaften-von-komponenten-setzen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 05:18:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/103289.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Mar 2005 09:13:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigenschaften von Komponenten setzen on Mon, 07 Mar 2005 09:16:31 GMT]]></title><description><![CDATA[<p>Hi Komponentenfans!</p>
<p>Ich habe mich mal intensiver mit der Programmierung von Komponenten beschäftigt und eine neue Diagramm-Kompo von TPanel abgeleitet. So weit so gut.</p>
<p>Bei meiner Komponente habe ich nun folgendes Problem, dass einige meiner im ObjectInspector gesetzten Werte nicht zur Laufzeit angewendet werden. D.h. wenn ich im OI zu Designzeit die Werte auf z.B. 50 setze, dann werden die Änderungen sofort übernommen (das Diagramm wird sofort angepasst). Kompiliere ich das fertige Projekt mit der Kompo, dann stehen wieder die Default-Werte drin (30), die SetOffset-Methode der Property wird nicht aufgerufen und die Design-Werte wurden somit verworfen.</p>
<p>Code (auszugsweise):</p>
<pre><code class="language-cpp">__fastcall TRasterpanel::TRasterpanel(TComponent* Owner) : TPanel(Owner)
{
           DoubleBuffered    = true;

           SetBounds(0, 0, 640, 480);
           Caption           = &quot; &quot;;
           Parent            = dynamic_cast&lt;TWinControl*&gt;(Owner);
           iOffsetTop        = 30; // Setzt das Zeichenoffset Top
           iOffsetLeft       = 30; // Setzt das Zeichenoffset Left
}

void __fastcall TRasterpanel::SetOffsetTop(int i)
{
     if ((i &gt;= 0) &amp;&amp; (i &lt;= imgDrawImage-&gt;Height/4)) iOffsetTop = i;
     RefreshGridPointsFromRasterPoints(); // Zeichenfunktion
     DrawLines();
}

int __fastcall TRasterpanel::GetOffsetTop()
{
    return iOffsetTop;
}

void __fastcall TRasterpanel::SetOffsetLeft(int i)
{
     if ((i &gt;= 0) &amp;&amp; (i &lt;= imgDrawImage-&gt;Width/4))
     {
        iOffsetLeft = i;
        Beep(1000, 10); // hier kommt er zur Laufzeit nicht hin, nur zu Designzeit
     }

     RefreshGridPointsFromRasterPoints();
     DrawLines();
}

int __fastcall TRasterpanel::GetOffsetLeft()
{
    return iOffsetLeft;
}
</code></pre>
<pre><code class="language-cpp">class PACKAGE TRasterpanel : public TPanel
{
      private:

      int iOffsetTop;
      int iOffsetLeft;

      void __fastcall SetOffsetTop(int i);
      int  __fastcall GetOffsetTop();
      void __fastcall SetOffsetLeft(int i);
      int  __fastcall GetOffsetLeft();

      public:

      __fastcall TRasterpanel(TComponent* Owner);
      virtual __fastcall ~TRasterpanel();

      __published:

      __property int OffsetTopBottom      = {read = GetOffsetTop,      write = SetOffsetTop, default = 30};
      __property int OffsetLeftRight      = {read = GetOffsetLeft,     write = SetOffsetLeft, default = 30};
};
</code></pre>
<p>Was mach ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/739291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739291</guid><dc:creator><![CDATA[F98]]></dc:creator><pubDate>Mon, 07 Mar 2005 09:16:31 GMT</pubDate></item><item><title><![CDATA[Reply to Eigenschaften von Komponenten setzen on Mon, 07 Mar 2005 09:37:29 GMT]]></title><description><![CDATA[<p>Ok Leute, hat sich erledigt, war eigene Blödheit! Ich hatte vergessen im Konstruktor, die Höhe und Breite des Canvas, auf das ich male zu setzen, folglich war das zu klein und die if-Anweisungen in den Property-SetOffset-Funktionen haben meine im OI gesetzten Werte nicht zugalassen.</p>
<p>if ((i &gt;= 0) &amp;&amp; (i &lt;= imgDrawImage-&gt;Width/4))</p>
<p>War also nicht true <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/739306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/739306</guid><dc:creator><![CDATA[F98]]></dc:creator><pubDate>Mon, 07 Mar 2005 09:37:29 GMT</pubDate></item></channel></rss>