<?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[OnClick via SendMessage aufrufen]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem: Wie kann ich über SendMessage das OnClick-Ereignis eines TPanels aufrufen?</p>
<pre><code class="language-cpp">for(int i=0;i&lt;ComponentCount;++i)
        if(Components[i]-&gt;ClassNameIs(&quot;TPanel&quot;))
        {
            TPanel* pTemp=dynamic_cast&lt;TPanel*&gt;(Components[i]);
            if(pTemp-&gt;Focused() &amp;&amp; (Key==VK_RETURN || Key==VK_SPACE))
                SendMessage(pTemp-&gt;Handle,/* ??? */,0,0);
        }
</code></pre>
<p>Ich weiß die Konstante nicht, kann mir vielleicht jemand helfen? Danke!</p>
<p>MfG Windoof</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/80911/onclick-via-sendmessage-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 17:28:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/80911.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jul 2004 12:18:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 12:18:37 GMT]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem: Wie kann ich über SendMessage das OnClick-Ereignis eines TPanels aufrufen?</p>
<pre><code class="language-cpp">for(int i=0;i&lt;ComponentCount;++i)
        if(Components[i]-&gt;ClassNameIs(&quot;TPanel&quot;))
        {
            TPanel* pTemp=dynamic_cast&lt;TPanel*&gt;(Components[i]);
            if(pTemp-&gt;Focused() &amp;&amp; (Key==VK_RETURN || Key==VK_SPACE))
                SendMessage(pTemp-&gt;Handle,/* ??? */,0,0);
        }
</code></pre>
<p>Ich weiß die Konstante nicht, kann mir vielleicht jemand helfen? Danke!</p>
<p>MfG Windoof</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568431</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 12:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 13:59:30 GMT]]></title><description><![CDATA[<p>WM_MOUSEDOWN oder ähnliche Events dürften das sein was du suchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568581</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Mon, 26 Jul 2004 13:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 14:36:48 GMT]]></title><description><![CDATA[<p>WM_MOUSEDOWN funktioniert nicht. Und diese ähnlichen Events... hatte ich mir schon so gedacht, nur fallen sie mir nicht ein, bzw. ich kenne sie nicht, also die such ich ja gerade. Kennt die jemand?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568627</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 14:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 14:44:20 GMT]]></title><description><![CDATA[<p>WM_COMMAND?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568641</guid><dc:creator><![CDATA[Frageeee]]></dc:creator><pubDate>Mon, 26 Jul 2004 14:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 15:11:47 GMT]]></title><description><![CDATA[<p>Aber mal ne Frage: Was spricht eigentlich dagegen OnClick einfach direkt aufzurufen statt dem SendMessage krux? Es kann nämlich auch durchaus sein, dass die VCL-Kompos intern eigene Nachrichten versenden...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568674</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Mon, 26 Jul 2004 15:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 16:00:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>du musst aber die Nachricht an das Elterfenster senden, und im lParam das Handle des Panels angeben:</p>
<pre><code class="language-cpp">SendMessage(Handle, WM_COMMAND, 0, (LPARAM) pTemp-&gt;Handle);
</code></pre>
<p>MfG<br />
tuküe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568701</guid><dc:creator><![CDATA[tuküe]]></dc:creator><pubDate>Mon, 26 Jul 2004 16:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 18:27:32 GMT]]></title><description><![CDATA[<p>junix schrieb:</p>
<blockquote>
<p>Aber mal ne Frage: Was spricht eigentlich dagegen OnClick einfach direkt aufzurufen statt dem SendMessage krux? Es kann nämlich auch durchaus sein, dass die VCL-Kompos intern eigene Nachrichten versenden...</p>
<p>-junix</p>
</blockquote>
<p>Nunja: Ich habe mehrere Panels als Buttons (Weil bei Buttons bekomme ich den Rand nicht weg) und diese reagieren auch bei TAB (TabStop ist auf true). Nur gibt es dort kein OnClick-Event, deshalb hab ich bei der Form KeyPreview auf true gesetzt und dann diesen Code verwendet... also ich probier's immernoch.</p>
<p>@tüküe: Dein Code funktioniert leider auch nicht. Also ich glaub es liegt am WM_COMMAND. Gibt's noch andere Konstanten, die für Mausklick sprechen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568830</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 18:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 18:37:03 GMT]]></title><description><![CDATA[<p>Windoof schrieb:</p>
<blockquote>
<p>Nur gibt es dort kein OnClick-Event</p>
</blockquote>
<p>Die Panels, die ich kenne, haben alle sehr wohl ein OnClick-Event.<br />
Wenn man zur Entwurfszeit darauf doppelklickt bastelt der BCB auch einen wunderschönen Funktionsrumpf dafür. <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/568839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568839</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Mon, 26 Jul 2004 18:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 18:43:29 GMT]]></title><description><![CDATA[<p>Ach, mann... sorry... verschrieben. ich meinte sie haben kein OnKeyPress oder OnKeyDown-Event. *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568846</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 18:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 19:05:51 GMT]]></title><description><![CDATA[<p>Na gut, kann ja mal passieren. <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>Trotzdem verstehe ich dein Problem nicht wirklich.<br />
Prüfe einfach, ob die richtige Taste gedrückt wurde (mit KeyPreview). Wenn ja, dann ermittle, ob und welches Panel den Focus hat und rufe ggf. eine entsprechende selbstgeschriebene Click-Funktion auf.</p>
<p>Und was ich noch nicht verstehe: warum willst du den Benutzer verwirren, indem du ihm verheimlichst, welcher &quot;Button&quot; den Fokus hat? Oder setzt du eine eigene Markierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568864</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Mon, 26 Jul 2004 19:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 19:07:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Windoof schrieb:</p>
<blockquote>
<p>@tüküe: Dein Code funktioniert leider auch nicht.</p>
</blockquote>
<p>kann sein. Hab's nur mit einem TButton probiert. Und da TButton die WinApi-Fensterklasse &quot;BUTTON&quot; kapselt, klappt es auch. TPanel ist ein Container-Control, welches andere Controls aufnimmt und wird daher kein WM_COMMAND haben.</p>
<p>Windoof schrieb:</p>
<blockquote>
<p>Ach, mann... sorry... verschrieben. ich meinte sie haben kein OnKeyPress oder OnKeyDown-Event. *g*</p>
</blockquote>
<p>Wozu brauchst du bei einem Panel OnKeyPress. Es kann doch sowieso nicht den Fokus erhalten.</p>
<p>MfG<br />
tuküe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568867</guid><dc:creator><![CDATA[tuküe]]></dc:creator><pubDate>Mon, 26 Jul 2004 19:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 19:22:54 GMT]]></title><description><![CDATA[<p>Also... <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/52">@jansen</a>: Ja, jeder Panel hat einen Label... jetzt bevor du fragst wieso: TPanel hat auch kein OnMouseEnter und kein OnMouseLeave. Wozu ich das brauche... Also, ich versuche damit Buttons zu simulieren, und zwar: (@tüküe) TPanels haben eine Eigenschaft TabStob, wenn sie auf true ist, können Panels den Focus erhalten. Im OnEnter-Ereignis lasse rufe ich das entsprechene TLabel::OnMouseEnter auf, wo sich die Farbe ändert. Das ist meine Markierung. Und wenn auf dem Panel Enter oder Leertaste gedrückt wird, soll das OnClick-Ereignis aufgerufen werden. Und da ich keine List habe 50 mal eine If-Bedingung hinzukopieren, was sehr uneffizient und unprofessionel aussieht, mache ich das so. Ich brauche nur die passende Konstante, dann würde es klappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568881</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 19:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 20:26:25 GMT]]></title><description><![CDATA[<p>Hi,<br />
wozu brauchst du if's?</p>
<p>Also du hast das entsprechende Panel und willst klicken:</p>
<pre><code class="language-cpp">Pannel-&gt;OnClick(Sender);
</code></pre>
<p>fertig!</p>
<p>MfG</p>
<p>Alexander Sulfrian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568941</guid><dc:creator><![CDATA[Alexander Sulfrian]]></dc:creator><pubDate>Mon, 26 Jul 2004 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 21:12:19 GMT]]></title><description><![CDATA[<p>Wäre es für Dich nicht eine Lösung, eine eigene Komponente zu erstellen, die<br />
von TButton (oder TCustomButton) erbt und dann darin die ganze Malerei zu<br />
veranstalten? Irgendwelche Ereignisse über das Formular abzufangen und dann<br />
weiterzuleiten kommt mir irgendwie nicht wie gutes OO-Design vor. Wenn Du sowas<br />
wiederverwenden willst, artet das in eine Copy&amp;Paste-Orgie aus. Oder geht das<br />
aus irgendeinem Grund nicht über eine eigene Komponente?</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568982</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Mon, 26 Jul 2004 21:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 21:28:09 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18157">@Alexander</a> Sulfrian: Danke... ich hab das so ähnlich auch probiert, nur ohne (Sender); (Wofür ich jetzt (pTemp) genommen hab, weil Sender gecastet wird)... weil der BCB meinte &quot;No parameters expected&quot;.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18157">@Alexander</a> Kempf: Ja, wenn dann eher auf TPanel... wo dann nen Label reingebastelt wird und fertig... Hab keinen Bock ne ellenlange Zeichnen-Funktion zu überschreiben, wo ich sowieso net durchsehe ;).</p>
<p>Danke leute, ihr habt mir sehr geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568994</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Mon, 26 Jul 2004 21:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to OnClick via SendMessage aufrufen on Mon, 26 Jul 2004 21:50:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Windoof schrieb:</p>
<blockquote>
<p>(@tüküe) TPanels haben eine Eigenschaft TabStob, wenn sie auf true ist, können Panels den Focus erhalten</p>
</blockquote>
<p>Ok, stimmt.</p>
<p>Windoof schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/52">@jansen</a>: Ja, jeder Panel hat einen Label... jetzt bevor du fragst wieso: TPanel hat auch kein OnMouseEnter und kein OnMouseLeave</p>
</blockquote>
<p>Wenn du ein neues Control von TPanel ableitest, kannst du das mit den VCL-Messages hinbekommen: und zwar mit <strong>CM_MOUSEENTER</strong> und <strong>CM_MOUSELEAVE</strong>.</p>
<p>Und da <strong>OnKeyDown</strong> und <strong>OnKeyUp</strong> in einer der Basisklassen als protected enthalten ist, kannst du das auch einbinden, indem du es einfach veröffentlichst. Ich hatte da schon mal eine ähnliche Komponente in Delphi geschrieben. Folgendermaßen würde es im Builder aussehen:</p>
<pre><code class="language-cpp">// MyPanel.h

class PACKAGE TMyPanel : public Extctrls::TPanel
{
private:
    typedef Extctrls::TPanel inherited;

    TNotifyEvent FOnMouseEnter;
    TNotifyEvent FOnMouseLeave;

    void __fastcall CMMouseEnter(TMsg &amp;Msg);
    void __fastcall CMMouseLeave(TMsg &amp;Msg);

    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(CM_MOUSEENTER, TMsg, CMMouseEnter)
        MESSAGE_HANDLER(CM_MOUSELEAVE, TMsg, CMMouseLeave)
    END_MESSAGE_MAP(inherited)
public:
    __fastcall TMyPanel(Classes::TComponent* AOwner);// : inherited(AOwner) { }
__published:
    __property TNotifyEvent OnMouseEnter = {read = FOnMouseEnter, write = FOnMouseEnter};
    __property TNotifyEvent OnMouseLeave = {read = FOnMouseLeave, write = FOnMouseLeave};
    __property OnKeyDown;
    __property OnKeyUp;
};

//-------------------------------------------------------------------------

//MyPanel.cpp
__fastcall TMyPanel::TMyPanel(Classes::TComponent* AOwner) : inherited(AOwner)
{
    FOnMouseEnter = NULL;
    FOnMouseLeave = NULL;
}

void __fastcall TMyPanel::CMMouseEnter(TMsg &amp;Msg)
{
    if (FOnMouseEnter)
        FOnMouseEnter(this);
}

void __fastcall TMyPanel::CMMouseLeave(TMsg &amp;Msg)
{
    if (FOnMouseLeave)
        FOnMouseLeave(this);
}
</code></pre>
<p>MfG<br />
tuküe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568998</guid><dc:creator><![CDATA[tuküe]]></dc:creator><pubDate>Mon, 26 Jul 2004 21:50:51 GMT</pubDate></item></channel></rss>