<?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[Event - Ermitteln des Array-Elements]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab aus dem Forum Code übernommen. 5 Image-Objekte werden zur Laufzeit erzeugt. Ich habe Events zugewiesen. Wie bekomme ich aber raus welches Image angeklickt wurde ..?</p>
<p>Auch kann ich beim Starten die Anzahl noch nicht festlegen. Also entweder ich erweitere den Array dynamisch (?) oder welchen Ansatz gäbe es da ?</p>
<p>Vielen Dank !</p>
<pre><code>void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
   for (int i = 0; i &lt; 5; i++)
   {
      img[i] = new TImage(this);
      img[i]-&gt;Parent = this;
      img[i]-&gt;Width = 32;
      img[i]-&gt;Height = 32;
      img[i]-&gt;Top = i * 35;
      img[i]-&gt;OnClick=Image1Click;
      img[i]-&gt;OnMouseDown=Image1MouseDown;
      img[i]-&gt;OnMouseMove=Image1MouseMove;
      img[i]-&gt;OnMouseUp=Image1MouseUp;
      img[i]-&gt;Show();
      img[i]-&gt;Canvas-&gt;Brush-&gt;Color = clWhite;
   }
}

void __fastcall TfrmMain::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   scX = X;
   scY = Y;
   scDyn = 1;
   if (Button == mbRight)
   {
      int iX = img[0]-&gt;Left + img[0]-&gt;Width + X + 100;
      int iY = img[0]-&gt;Top + Y + 150;
      objPopup-&gt;Popup(iX, iY);
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/189557/event-ermitteln-des-array-elements</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 06:39:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189557.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Aug 2007 12:27:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Event - Ermitteln des Array-Elements on Tue, 14 Aug 2007 12:27:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab aus dem Forum Code übernommen. 5 Image-Objekte werden zur Laufzeit erzeugt. Ich habe Events zugewiesen. Wie bekomme ich aber raus welches Image angeklickt wurde ..?</p>
<p>Auch kann ich beim Starten die Anzahl noch nicht festlegen. Also entweder ich erweitere den Array dynamisch (?) oder welchen Ansatz gäbe es da ?</p>
<p>Vielen Dank !</p>
<pre><code>void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
   for (int i = 0; i &lt; 5; i++)
   {
      img[i] = new TImage(this);
      img[i]-&gt;Parent = this;
      img[i]-&gt;Width = 32;
      img[i]-&gt;Height = 32;
      img[i]-&gt;Top = i * 35;
      img[i]-&gt;OnClick=Image1Click;
      img[i]-&gt;OnMouseDown=Image1MouseDown;
      img[i]-&gt;OnMouseMove=Image1MouseMove;
      img[i]-&gt;OnMouseUp=Image1MouseUp;
      img[i]-&gt;Show();
      img[i]-&gt;Canvas-&gt;Brush-&gt;Color = clWhite;
   }
}

void __fastcall TfrmMain::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   scX = X;
   scY = Y;
   scDyn = 1;
   if (Button == mbRight)
   {
      int iX = img[0]-&gt;Left + img[0]-&gt;Width + X + 100;
      int iY = img[0]-&gt;Top + Y + 150;
      objPopup-&gt;Popup(iX, iY);
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1344280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344280</guid><dc:creator><![CDATA[MDK]]></dc:creator><pubDate>Tue, 14 Aug 2007 12:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Event - Ermitteln des Array-Elements on Tue, 14 Aug 2007 12:42:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Nimm doch einen vector&lt;TImage*&gt;. Da kannst du beliebig Elemente hinzufügen. Schau auch mal in die FAQ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344291</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 14 Aug 2007 12:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to Event - Ermitteln des Array-Elements on Tue, 14 Aug 2007 13:43:20 GMT]]></title><description><![CDATA[<p>Danke. Hab mal das unten probiert. Klappt auch. Nur beim Beschriften krieg ich eine Zugriffsverletzung.</p>
<p>Ablauf: Ich erzeuge per Click jeweils ein neues Image und dazu ein Memo. Memo ist unsichtbar, wandert bei Drag&amp;Drop mit. Wenn ich über das Kontextmenü Beschriften aufrufe wird das Memo eingeblendet.</p>
<p>Oder kann ich von dynamisch erzeugten Objekten keine Funktion aufrufen, die beim Erstellen nicht definiert ist ? Dann wäre die Frage wie ich das machen muss.</p>
<pre><code>int iX = dynamic_cast&lt;TImage*&gt;(Sender)-&gt;Left + dynamic_cast&lt;TImage*&gt;(Sender)-&gt;Width + X + 10;

void __fastcall TfrmMain::Beschriften1Click(TObject *Sender)
{
   ShowMessage(dynamic_cast&lt;TImage*&gt;(Sender)-&gt;Name);
   scDyn = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1344351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344351</guid><dc:creator><![CDATA[MDK]]></dc:creator><pubDate>Tue, 14 Aug 2007 13:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Event - Ermitteln des Array-Elements on Tue, 14 Aug 2007 13:46:52 GMT]]></title><description><![CDATA[<p>Hab es anders gemacht. Den Wert lese ich beim Click aus und schieb ihn in eine Variable. Über diese greife ich dann beim Beschriften auf den Array zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344355</guid><dc:creator><![CDATA[MDK]]></dc:creator><pubDate>Tue, 14 Aug 2007 13:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Event - Ermitteln des Array-Elements on Tue, 14 Aug 2007 14:07:20 GMT]]></title><description><![CDATA[<p>Wenn du schon dynamic_cast verwendest, werte bitte auch das Ergebnis aus. Zu dynamische erstellten Objekten und Funktionen steht schon eine Menge in der <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39305.html" rel="nofollow">FAQ</a> Abteilung <em>Komponenten benutzen</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344377</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 14 Aug 2007 14:07:20 GMT</pubDate></item></channel></rss>