<?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[Pointer auf Komponente übergeben, wie?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne für eine &quot;isMouseOver&quot; Funktion einen Pointer auf eine Komponente übergeben. Leider klappt das alles nicht so wie gedacht <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 habe eine Funktion:</p>
<pre><code class="language-cpp">bool __fastcall TfMain::isMouseOverComponent(TWinControl * Handle)
  {
  TPoint P;
  P = Mouse-&gt;CursorPos;
  P = Handle-&gt;ScreenToClient(P);

  struct cField
    {
    int x;
    int y;
    };

  cField p1, p2;

  p1.x = Handle-&gt;Left;
  p1.y = Handle-&gt;Top;

  p2.x = p1.x + Handle-&gt;Width;
  p2.y = p1.y + Handle-&gt;Height;

  if ((P.x &gt;= p1.x &amp;&amp; P.y &gt;= p1.y) &amp;&amp; (P.x &lt;= p2.x &amp;&amp; P.y &lt;= p2.y))
    {
    return true;
    }
  else
    {
    return false;
    }
  }
</code></pre>
<p>welche ich wie folgt aufrufe:</p>
<pre><code class="language-cpp">if (isMouseOverComponent((TWinControl)leAuftragx-&gt;Handle) == true)
      {
      setAuftraXEdit(true);
      setAuftraNrEdit(false);
      }
</code></pre>
<p>allerdings bekomme ich immer ein Fehlermeldung um die Ohren gehauen, die mir mitteilt, dann void * nicht in TWinControll gewandelt werden kann.<br />
Ich möchte eigentlich nur einen Pointer auf die Komponente kriegen, und anschliesend über den Pointer auf Methoden (ScreenToClient()) der Komponente auf die der Pointer zeigt zugreifen.<br />
Wie kann ich das machen!!</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/98252/pointer-auf-komponente-übergeben-wie</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 00:48:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/98252.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Jan 2005 09:00:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 09:00:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne für eine &quot;isMouseOver&quot; Funktion einen Pointer auf eine Komponente übergeben. Leider klappt das alles nicht so wie gedacht <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 habe eine Funktion:</p>
<pre><code class="language-cpp">bool __fastcall TfMain::isMouseOverComponent(TWinControl * Handle)
  {
  TPoint P;
  P = Mouse-&gt;CursorPos;
  P = Handle-&gt;ScreenToClient(P);

  struct cField
    {
    int x;
    int y;
    };

  cField p1, p2;

  p1.x = Handle-&gt;Left;
  p1.y = Handle-&gt;Top;

  p2.x = p1.x + Handle-&gt;Width;
  p2.y = p1.y + Handle-&gt;Height;

  if ((P.x &gt;= p1.x &amp;&amp; P.y &gt;= p1.y) &amp;&amp; (P.x &lt;= p2.x &amp;&amp; P.y &lt;= p2.y))
    {
    return true;
    }
  else
    {
    return false;
    }
  }
</code></pre>
<p>welche ich wie folgt aufrufe:</p>
<pre><code class="language-cpp">if (isMouseOverComponent((TWinControl)leAuftragx-&gt;Handle) == true)
      {
      setAuftraXEdit(true);
      setAuftraNrEdit(false);
      }
</code></pre>
<p>allerdings bekomme ich immer ein Fehlermeldung um die Ohren gehauen, die mir mitteilt, dann void * nicht in TWinControll gewandelt werden kann.<br />
Ich möchte eigentlich nur einen Pointer auf die Komponente kriegen, und anschliesend über den Pointer auf Methoden (ScreenToClient()) der Komponente auf die der Pointer zeigt zugreifen.<br />
Wie kann ich das machen!!</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/699161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699161</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Tue, 18 Jan 2005 09:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 09:32:17 GMT]]></title><description><![CDATA[<p>hallo clip</p>
<p>was ist &quot;leAuftragx&quot; ?</p>
<p>wenns ein TWinControl bzw. davon abgeleitet wurde, probier mal</p>
<pre><code class="language-cpp">if (isMouseOverComponent((TWinControl)leAuftragx) == true)
</code></pre>
<p>anstatt</p>
<pre><code class="language-cpp">if (isMouseOverComponent((TWinControl)leAuftragx-&gt;Handle) == true)
</code></pre>
<p>vielleicht klappts dann ja</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/699181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699181</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 18 Jan 2005 09:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 09:34:02 GMT]]></title><description><![CDATA[<p>weil <strong>Control-&gt;Handle</strong> nun mal ein void-Zeiger und kein Zeiger auf ein TWinControl ist!</p>
<p>warum übergibst du das control nicht direkt (z.B. IsMouseOver(Button))? sollte mit allem gehen, was von TWinControl erbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/699182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699182</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 18 Jan 2005 09:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 09:54:16 GMT]]></title><description><![CDATA[<p>leAuftragX ist ein TLabeledEdit. Ich möchte aber auch Edits, und eine ComboBox übergeben. Da ich nur auf Eigenschaften zugreife die alle dieser Komponenten habe, dürfte es ja eingentlich kein Problem geben.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/588">@Sunday</a>:<br />
ich probiere es mal aus, es schein tzu gehen.</p>
<p>@Meep:<br />
Dann will der Bcb die Variable mit bew instantiiert haben....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/699194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699194</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Tue, 18 Jan 2005 09:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 10:11:02 GMT]]></title><description><![CDATA[<p>Super geht <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="😃"
    /> Danke!</p>
<p>Ich musste nur noch den Parent mit übergeben, dann funst alles:</p>
<p>Code:</p>
<pre><code class="language-cpp">bool __fastcall TfMain::isMouseOverComponent(TWinControl * Handle, TWinControl * Parent)
  {
  TPoint P;
  P = Mouse-&gt;CursorPos;
  P = Parent-&gt;ScreenToClient(P);

  struct cField
    {
    int x;
    int y;
    };

  cField p1, p2;

  p1.x = Handle-&gt;Left;
  p1.y = Handle-&gt;Top;

  p2.x = p1.x + Handle-&gt;Width;
  p2.y = p1.y + Handle-&gt;Height;

  if ((P.x &gt;= p1.x &amp;&amp; P.y &gt;= p1.y) &amp;&amp; (P.x &lt;= p2.x &amp;&amp; P.y &lt;= p2.y))
    {
    return true;
    }
  else
    {
    return false;
    }
  }
</code></pre>
<p>Aufruf:</p>
<pre><code class="language-cpp">if (isMouseOverComponent(leAuftragx, gbAunu) == true)
      {
      setAuftraXEdit(true);
      setAuftraNrEdit(false);
      }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/699212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699212</guid><dc:creator><![CDATA[Clip]]></dc:creator><pubDate>Tue, 18 Jan 2005 10:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Komponente übergeben, wie? on Tue, 18 Jan 2005 10:14:05 GMT]]></title><description><![CDATA[<p>Aus der Hilfe des BCB:</p>
<blockquote>
<p>Beschreibung</p>
<p>Die Eigenschaft Handle gibt das Fenster-Handle des zugrundeliegenden Microsoft Windows-Bildschirmobjekts zurück. Verwenden Sie die Eigenschaft Handle, um die VCL-API zu umgehen und direkt auf das zugrundeliegende Fenster zuzugreifen.</p>
<p>Greifen Sie während einer Streaming-Operation oder der Komponentenerstellung nicht auf die Eigenschaft Handle zu. Das zugrundeliegende Fenster existiert erst, nachdem die Eigenschaft Handle erstmals referenziert wurde. Wenn dies geschieht, wird die Methode HandleNeeded automatisch aufgerufen.</p>
<p>Handle ist eine schreibgeschützte Eigenschaft.</p>
</blockquote>
<p>Noch Fragen) <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>
]]></description><link>https://www.c-plusplus.net/forum/post/699213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/699213</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 18 Jan 2005 10:14:05 GMT</pubDate></item></channel></rss>