<?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[Nachrichten zwischen CLX-Frames versenden]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte Nachrichten an verschiedene CLX-TFrame versenden.</p>
<p>Das bedeutet eigentlich, dass ich nur von irgendwo in meinem Programme eine Methode des CLX aufrufen möchte.</p>
<p>Leider scheint die CLX-Signal-Implementierung in Borland C++ Builder 6 ziemlich fehlerhaft zu sein, wobei das Entwicklerhandbuch noch schlimmer ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113133/nachrichten-zwischen-clx-frames-versenden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:45:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113133.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Jun 2005 05:27:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Mon, 20 Jun 2005 05:27:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte Nachrichten an verschiedene CLX-TFrame versenden.</p>
<p>Das bedeutet eigentlich, dass ich nur von irgendwo in meinem Programme eine Methode des CLX aufrufen möchte.</p>
<p>Leider scheint die CLX-Signal-Implementierung in Borland C++ Builder 6 ziemlich fehlerhaft zu sein, wobei das Entwicklerhandbuch noch schlimmer ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/812940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/812940</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 20 Jun 2005 05:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Mon, 20 Jun 2005 20:42:16 GMT]]></title><description><![CDATA[<p>markus.r schrieb:</p>
<blockquote>
<p>CLX-Signal-Implementierung</p>
</blockquote>
<p>Was genau meinst du damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813603</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Mon, 20 Jun 2005 20:42:16 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Tue, 21 Jun 2005 07:29:22 GMT]]></title><description><![CDATA[<p>Ich möchte Nachrichten an CLX-TFrames versenden, das bedeutet:</p>
<p>Jedes Fensterprogramm entfängt im Prinzip Nachrichten vom Fenstersystem, wenn z.B. die Maustaste gedrückt wurde usw.</p>
<p>Ich möchte nun eigene Nachrichten versenden und empfangen um damit das Entwurfsmuster &quot;Controller-View-Model&quot; abzubilden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813741</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Tue, 21 Jun 2005 07:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Tue, 21 Jun 2005 19:19:20 GMT]]></title><description><![CDATA[<p>Ohne genau verstanden zu haben, worauf du hinaus willst: wie kommst du zu dem Eindruck, dass die &quot;CLX-Signal-Implementierung&quot; fehlerhaft wäre?<br />
Was hast du denn konkret probiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/814353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/814353</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Tue, 21 Jun 2005 19:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Wed, 22 Jun 2005 09:33:51 GMT]]></title><description><![CDATA[<p>Exakt habe ich probiert nach &quot;Borland C++ Builder 6 Entwicklerhandbuch Band II&quot; Kapitel 51 vorzugehen:</p>
<p>Dort ist das generieren von benutzerdefinierten &quot;Qt-Ereignissen&quot; so beschrieben:</p>
<pre><code class="language-cpp">//Konstante fuer das neue Signal vereinbaren
static const QEventType MyEvent_ID =(int) QCLXEventType_ClxUser + 50;

//Event herstellen
QCustomEventH* MyEvent= QCustomEvent_create(MyEvent_ID, this);

//Event abschicken
QApplication_postEvent(Application-&gt;Handle, MyEvent);
</code></pre>
<p>und so lautet die korrigierte Version</p>
<pre><code class="language-cpp">//Konstante fuer das neue Signal vereinbaren
static const QEventType MyEvent_ID =(int) QEventType_ClxUser + 50;

//Event erstellen und Abschicken
QApplication_sendEvent( Application-&gt;Handle,
                  QCustomEvent_create(MyEvent_ID, this));
</code></pre>
<p>Jedoch erzeugt der korrekte Code nun einen Stack-Overflow, da die Qt.hpp fehlerhaft ist.<br />
<a href="http://bdn.borland.com/article/0,1410,29631,00.html" rel="nofollow">http://bdn.borland.com/article/0,1410,29631,00.html</a><br />
und hier ist die korrigierte Version:<br />
<a href="http://codecentral.borland.com/codecentral/ccWeb.exe/listing?id=19514" rel="nofollow">http://codecentral.borland.com/codecentral/ccWeb.exe/listing?id=19514</a></p>
<p>Danach funktioniert das sogar.</p>
<p>Ich habe dann versucht mit der Methode ::HookEvents(void) eine Signalbehandlungsroutine zu installieren und auf die Signale zu reagieren.<br />
Hier bietet das Handbuch nur sehr fehlerhaften Mischcode aus C++ und Object-Pascal, der prosaische Text klingt wie unverstanden übersetzt und hilft nicht weiter.</p>
<p>Dabei sehe ich gerade:<br />
Kann ich die Methode ::EventFilter(..) vielleicht überschreiben.<br />
Wenn ich dort die Basisklassen-Version von EventFilter aufrufe, sollten die Standard-Events doch dann wie vorher verarbeitet werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/814560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/814560</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Wed, 22 Jun 2005 09:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Wed, 22 Jun 2005 09:42:20 GMT]]></title><description><![CDATA[<p>Durch Beantwortung der Frage bin ich auf eine Teillösung gestoßen:</p>
<p>Mein TFrame2 abgeleitet von TFrame sollte doch die Nachricht auffangen und bearbeiten.<br />
Wenn ich die Methode ::EventFilter(..) überschreibe, kann ich auf die Nachricht zumindest antworten, auch wenn der EventFilter eigentlich nicht dazu gedacht ist.</p>
<pre><code class="language-cpp">bool __fastcall TFrame2::EventFilter(Qt::QObjectH* Sender, Qt::QEventH* Event)
{
  //Methoden der Basisklasse nutzen
  bool retval = TFrame::EventFilter(Sender, Event);
  //eigener Behandlungscode
  switch (QEvent_type(Event))
    {
    case MyEvent_ID: reagiere_auf_die_nachricht();
    }//switch

  //Basisklassenmethodenergebnisse zurueckgeben
  return retval;
}//EventFilter
</code></pre>
<p>Jetzt sind nur noch zwei Probleme vor der Brust:</p>
<p>1. Wie uebergebe ich Parameter dem Event, wahrscheinlich ist das aber der 2. Parameter von QCustomEvent_create(MyEvent_ID, this). Leider ist das alles undokumentiert und lieblos.<br />
2. Wie versende ich ein Signal Applikationsweit?<br />
Denn man muss die Nachricht explizit an ein Fenster wie folgt senden:</p>
<pre><code class="language-cpp">//Event erstellen und Abschicken
QApplication_sendEvent( this-&gt;MeinkleinesFrame-&gt;Handle,
                  QCustomEvent_create(MyEvent_ID, this));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/814567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/814567</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Wed, 22 Jun 2005 09:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten zwischen CLX-Frames versenden on Mon, 27 Jun 2005 09:21:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn man Nachrichten in CLX/Qt an alle Fenster verteilen will, dann ist das wie folgt möglich:</p>
<pre><code class="language-cpp">void TForm1::broadcast(TWidgetControl* p_twidgetc, QCustomEventH* p_event)
{
//Broadcast via rekursivem Abstieg
for (int i= 0; i &lt; p_twidgetc-&gt;ComponentCount; ++i)
  {//ueber alle direkten Komponenten
  if (TWidgetControl* twc=   
    dynamic_cast&lt;TWidgetControl*&gt;(p_twidgetc-&gt;Components[i]))
    {
    QApplication_sendEvent(twc-&gt;Handle, p_event);
    //Absteigen
    broadcast(twc, p_event);
    }
  }
}//broadcast
</code></pre>
<p>Das wird dann z.B. so aufgerufen:</p>
<pre><code class="language-cpp">broadcast(static_cast&lt;TWidgetControl*&gt;(this),
            QCustomEvent_create(MyEvent_ID, this));
</code></pre>
<p>Vielleicht kann man den ganzen Thread mal in Form einer Anleitung hier der Nachwelt zur Verfügung stellen, da das leider weder von Borland noch sonst wo im Internet dokumentiert ist.</p>
<p>Gruss<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817912</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 27 Jun 2005 09:21:15 GMT</pubDate></item></channel></rss>