<?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[Label verdeckt Panel]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Panel mit einem Label.<br />
Bei dem Panel benutze ich das OnMouseMove Ereigniss.</p>
<p>Wenn ich mich nun aber mit dem Mousecursor in das Panel bewege aber auf dem<br />
Label lande wird das OnMouseMove Ereigniss nicht ausgelöst.</p>
<p>Gib es da eine Möglichkeit das das OnMouseMove Ereigniss des Panels<br />
trotzdem ausgelöst wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84394/label-verdeckt-panel</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 19:00:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84394.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Aug 2004 20:56:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Label verdeckt Panel on Sun, 29 Aug 2004 20:56:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Panel mit einem Label.<br />
Bei dem Panel benutze ich das OnMouseMove Ereigniss.</p>
<p>Wenn ich mich nun aber mit dem Mousecursor in das Panel bewege aber auf dem<br />
Label lande wird das OnMouseMove Ereigniss nicht ausgelöst.</p>
<p>Gib es da eine Möglichkeit das das OnMouseMove Ereigniss des Panels<br />
trotzdem ausgelöst wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/594773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/594773</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sun, 29 Aug 2004 20:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Sun, 29 Aug 2004 21:06:36 GMT]]></title><description><![CDATA[<p>Vlt wäre das hier ne Lösung: pack das OnMouse ereigniss in ne funktion, und führ die funktion im onmouse ereigniss bei beiden aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/594786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/594786</guid><dc:creator><![CDATA[Blackhawk]]></dc:creator><pubDate>Sun, 29 Aug 2004 21:06:36 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Sun, 29 Aug 2004 21:28:38 GMT]]></title><description><![CDATA[<p>Ist eine nette Ide, aber ich habe 18 Panels mit Text sowie 5 CheckBoxen.<br />
Das gleiche Problem trit auch mit den CheckBoxen auf.</p>
<pre><code class="language-cpp">Panel  
|-----------------------------------------|
|Label                          X X X X X |
|-----------------------------------------|

void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
     old_panel-&gt;Color = clMenu;
     ((TPanel*)Sender)-&gt;Color = clYellow;
     old_panel = ((TPanel*)Sender);
}
</code></pre>
<p>Ich ändere wenn ich mich auf einem Panel befinde die Farbe des Panels über dessen Zeiger.<br />
Ich könnte nun ja einfach bei dem OnMouseMove Ereigniss der CheckBoxen sowie<br />
des Labels das Panel1MouseMove ausführen.<br />
Da ich aber die Farbe des Panels ändern möchte, bekomme ich nicht den richtigen Zeiger.<br />
Schade das man nicht den Tag des Labels der CheckBoxen für Zeiger nutzen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/594808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/594808</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sun, 29 Aug 2004 21:28:38 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Sun, 29 Aug 2004 23:03:09 GMT]]></title><description><![CDATA[<p>Ich habe es nun so gemacht...</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
     if(Sender==Label7 || Sender==alarm1_r1 || Sender==alarm1_r2 || Sender==alarm1_r3 || Sender==alarm1_r4 || Sender==alarm1_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel1-&gt;Color = clYellow;
          old_panel = Panel1;
     }
     else if(Sender==Label8 || Sender==alarm2_r1 || Sender==alarm2_r2 || Sender==alarm2_r3 || Sender==alarm2_r4 || Sender==alarm2_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel2-&gt;Color = clYellow;
          old_panel = Panel2;
     }
     else if(Sender==Label9 || Sender==alarm3_r1 || Sender==alarm3_r2 || Sender==alarm3_r3 || Sender==alarm3_r4 || Sender==alarm3_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel3-&gt;Color = clYellow;
          old_panel = Panel3;
     }
     else if(Sender==Label10 || Sender==alarm4_r1 || Sender==alarm4_r2 || Sender==alarm4_r3 || Sender==alarm4_r4 || Sender==alarm4_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel4-&gt;Color = clYellow;
          old_panel = Panel4;
     }
     else if(Sender==Label11 || Sender==alarm5_r1 || Sender==alarm5_r2 || Sender==alarm5_r3 || Sender==alarm5_r4 || Sender==alarm5_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel5-&gt;Color = clYellow;
          old_panel = Panel5;
     }
     else if(Sender==Label12 || Sender==alarm6_r1 || Sender==alarm6_r2 || Sender==alarm6_r3 || Sender==alarm6_r4 || Sender==alarm6_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel6-&gt;Color = clYellow;
          old_panel = Panel6;
     }
     else if(Sender==Label13 || Sender==alarm7_r1 || Sender==alarm7_r2 || Sender==alarm7_r3 || Sender==alarm7_r4 || Sender==alarm7_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel7-&gt;Color = clYellow;
          old_panel = Panel7;
     }
     else if(Sender==Label14 || Sender==alarm8_r1 || Sender==alarm8_r2 || Sender==alarm8_r3 || Sender==alarm8_r4 || Sender==alarm8_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel8-&gt;Color = clYellow;
          old_panel = Panel8;
     }
     else if(Sender==Label15 || Sender==alarm9_r1 || Sender==alarm9_r2 || Sender==alarm9_r3 || Sender==alarm9_r4 || Sender==alarm9_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel9-&gt;Color = clYellow;
          old_panel = Panel9;
     }
     else if(Sender==Label16 || Sender==alarm10_r1 || Sender==alarm10_r2 || Sender==alarm10_r3 || Sender==alarm10_r4 || Sender==alarm10_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel10-&gt;Color = clYellow;
          old_panel = Panel10;
     }
     else if(Sender==Label17 || Sender==alarm11_r1 || Sender==alarm11_r2 || Sender==alarm11_r3 || Sender==alarm11_r4 || Sender==alarm11_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel11-&gt;Color = clYellow;
          old_panel = Panel11;
     }
     else if(Sender==Label18 || Sender==alarm12_r1 || Sender==alarm12_r2 || Sender==alarm12_r3 || Sender==alarm12_r4 || Sender==alarm12_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel12-&gt;Color = clYellow;
          old_panel = Panel12;
     }
     else if(Sender==Label19 || Sender==alarm13_r1 || Sender==alarm13_r2 || Sender==alarm13_r3 || Sender==alarm13_r4 || Sender==alarm13_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel13-&gt;Color = clYellow;
          old_panel = Panel13;
     }
     else if(Sender==Label20 || Sender==alarm14_r1 || Sender==alarm14_r2 || Sender == alarm14_r3 || Sender == alarm14_r4 || Sender == alarm14_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel14-&gt;Color = clYellow;
          old_panel = Panel14;
     }
     else if(Sender==Label21 || Sender==alarm15_r1 || Sender==alarm15_r2 || Sender==alarm15_r3 || Sender==alarm15_r4 || Sender==alarm15_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel15-&gt;Color = clYellow;
          old_panel = Panel15;
     }
     else if(Sender==Label22 || Sender==alarm16_r1 || Sender==alarm16_r2 || Sender==alarm16_r3 || Sender==alarm16_r4 || Sender==alarm16_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel16-&gt;Color = clYellow;
          old_panel = Panel16;
     }
     else if(Sender==Label23 || Sender==alarm17_r1 || Sender==alarm17_r2 || Sender==alarm17_r3 || Sender==alarm17_r4 || Sender==alarm17_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel17-&gt;Color = clYellow;
          old_panel = Panel17;
     }
     else if(Sender==Label24 || Sender==alarm18_r1 || Sender==alarm18_r2 || Sender==alarm18_r3 || Sender==alarm18_r4 || Sender==alarm18_u)
     {
          old_panel-&gt;Color = clMenu;
          Panel18-&gt;Color = clYellow;
          old_panel = Panel18;
     }
     else                               //Kein Label oder CheckBox sonder ein Panel 
     {
          old_panel-&gt;Color = clMenu;
          ((TPanel*)Sender)-&gt;Color = clYellow;
          old_panel = ((TPanel*)Sender);
     }
}
</code></pre>
<p>Ich habe alle Objekte auf das OnMouseMove Ereigniss von Panel1 gelegt.<br />
Wobei alarmx_rx die CheckBoxen auf den Panels sind, sowie die Labels.<br />
Wie man sieht ziemlich viel Tipparbeit, vieleicht hat Jemand eine<br />
Idee wie man das leichter hinkriegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/594857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/594857</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sun, 29 Aug 2004 23:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Mon, 30 Aug 2004 06:24:23 GMT]]></title><description><![CDATA[<p>[cpp]//---------------------------------------------------------------------------<br />
__fastcall TForm1::TForm1(TComponent* Owner)<br />
: TForm(Owner)<br />
{<br />
oldPanel = Panel1;<br />
}<br />
//---------------------------------------------------------------------------<br />
void __fastcall TForm1::Panel1MouseMove(TObject <em>Sender, TShiftState Shift,<br />
int X, int Y)<br />
{<br />
TPanel *panel = dynamic_cast&lt;TPanel*&gt;(Sender);<br />
if (!panel) // Sender <strong>nicht</strong> TPanel, d.h. es sollte ein Label, CheckBox etc.<br />
{ // sein, also holen wir uns einen Zeiger auf das Parent-Panel<br />
panel = dynamic_cast&lt;TPanel</em>&gt;(((TControl*)Sender)-&gt;Parent);<br />
if (!panel) // Parent ist auch kein Panel, irgendwas ist schief gelaufen<br />
return; // (z.B. Event falscher Kompo zugewiesen), wir brechen ab<br />
}<br />
if (panel-&gt;Color != clYellow)<br />
{<br />
oldPanel-&gt;Color = clMenu;<br />
panel-&gt;Color = clYellow;<br />
oldPanel = panel;<br />
}<br />
}<br />
//---------------------------------------------------------------------------[/cpp]</p>
<p>Ggf. müsste man noch eine Abfrage einbauen, ob das Event von einem &quot;berechtigten&quot; Panel kommt, schliesslich könnte man es ja fälschlicherweise auch einem nicht zur Gruppe gehörenden Panel bzw. Controls darauf zugewiesen haben. Allerdings dürfte sich so ein Fehler schnell bemerkbar machen, wenn das entsprechende Panel unerwartet ebenfalls eingefärbt wird. <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/594898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/594898</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Mon, 30 Aug 2004 06:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Mon, 30 Aug 2004 22:00:10 GMT]]></title><description><![CDATA[<p>Hallo Jansen,<br />
danke für deine Hilfe.</p>
<p>Soweit ist mir das klar, was ich nicht verstehe ist der &quot;dynamic_cast&quot;</p>
<p>TPanel *panel = dynamic_cast&lt;TPanel*&gt;(Sender);</p>
<p>Ich habe folgendes versucht...</p>
<pre><code class="language-cpp">void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
     TPanel *panel = dynamic_cast&lt;TPanel*&gt;(Sender);       //1
     if(!panel)                                           //2
     {
         panel = dynamic_cast&lt;TPanel*&gt;(((TControl*)Sender)-&gt;Parent); //3

     }
     oldpanel-&gt;Color = clMenu;
     panel-&gt;Color = clYellow;
     oldpanel = panel;
}
</code></pre>
<p>Müsste doch eigentlich funktionieren, läuf aber nicht.<br />
Verstehe ich das richtig:<br />
//1 Ich hole mir den Zeiger des Objekts nach panel, heist &quot;dynamic_cast&lt;TPanel*&gt;(Sender)&quot; das in den Zeiger vom Typ TPanel<br />
auch der Zeiger einer CheckBox geladen wird, &quot;halt ein dynamischer Zeiger&quot;.<br />
//2 Ich teste ob der Zeiger von einem Panel stammt.<br />
//3 Wenn nicht hole ich mir einen TControll Zeiger des übergeordneten Objekts in dem sich z.B. die Check, das Label befindet -&gt;Parent.<br />
Was ich nicht ganz verstehe if(!panel), müsste es nicht if(panel != ZeigerPanel)<br />
heissen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/595676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/595676</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 30 Aug 2004 22:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Mon, 30 Aug 2004 23:20:02 GMT]]></title><description><![CDATA[<p><em>dynamic_cast</em> hat einen entscheidenden Vorteil: wenn der cast fehlschlägt dann wird ein NULL-Zeiger zurückgegeben, und NULL ist bekanntlich äquivalent mit <em>false</em>. Ist der cast erfolgreich, dann wird mit dem Zeiger ein Wert ungleich NULL zurückgegeben, also <em>true</em>. Deshalb lassen sich damit so einfach if-Abfragen konstruieren.</p>
<p>Bei anderen cast-Varianten wird immer ein Zeiger, also <em>true</em>, zurückgegeben, auch wenn der cast daneben ging und der Zeiger in's Blaue zeigt. Die sollte man also nur einsetzen, wenn man sich <strong>wirklich</strong> sicher ist, dass der cast erfolgreich sein wird oder wenn ein Fehlschlag nichts ausmacht. Letzteres trifft z.B. beim cast nach TControl im o.g. Beispiel zu: ein Fehlschlag hier wird durch das unmittelbar folgende <em>dynamic_cast</em> mit abgefangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/595704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/595704</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Mon, 30 Aug 2004 23:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Label verdeckt Panel on Fri, 03 Sep 2004 01:17:15 GMT]]></title><description><![CDATA[<p>Interessant so ein dynamic_cast, übrigens läuft es jetzt auch ich<br />
hatte nur vergessen das Label dem OnMouseMove Ereigniss zuzuweisen. <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>
<p>Eh Jansen, schreib doch mal gutes Buch</p>
<p>Also ich finde C++ interessant, habe aber in meinen C-Programmen schon meine<br />
Mühe nicht den Überblick nicht zu verlieren.</p>
<p>Ich habe denn Eíndruck das z.B. die Klassenhirachie der VCL, keine Sau<br />
mehr versteht. ?oder?</p>
<p>Ansonsten finde ich das mit den Klassen, Objekten garnicht so schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/596472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/596472</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Fri, 03 Sep 2004 01:17:15 GMT</pubDate></item></channel></rss>