<?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[Prüfen ob Methode für Typ des ActiveMIDChild überladen wurde]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Methode überladen:</p>
<pre><code>AnsiString PrintGraphForm(TGraphForm* ActiveGraph);
 AnsiString PrintGraphForm(TGraphCompareForm* ActiveGraph);
 AnsiString PrintGraphForm(TGraphBrowser* ActiveGraph);
</code></pre>
<p>alle drei sind spezialisierungen von TForm.</p>
<p>ActiveMDIChild kann aber auch eine andere TForm sein, für die ich die Methode nicht überladen habe.<br />
Derzeit prüfe ich zur Laufzeit ob ich die Methode aufrufen kann oder nicht wie folgt:</p>
<pre><code>void __fastcall TMainForm::PrintImageExecute(TObject *Sender)
{
  AnsiString Meldung=&quot;Bitte zunächst Grafikfenster auswählen.&quot;;
  TGraphCompareForm* ActiveCompGraph;
  TGraphForm* ActiveGraph;
  TGraphBrowser* ActiveGraphBrowser;

  if ((ActiveGraph       =dynamic_cast&lt;TGraphForm*&gt;       (ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveGraph);
  if ((ActiveCompGraph   =dynamic_cast&lt;TGraphCompareForm*&gt;(ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveCompGraph);
  if ((ActiveGraphBrowser=dynamic_cast&lt;TGraphBrowser*&gt;    (ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveGraphBrowser);
  StatusWindow-&gt;RichEdit1-&gt;Lines-&gt;Add(Meldung);
}
</code></pre>
<p>Das muss doch eleganter gehe, ohne eine Reihen von If Statements, oder?</p>
<p>Viele Grüße</p>
<p>Robert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/138473/prüfen-ob-methode-für-typ-des-activemidchild-überladen-wurde</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 11:15:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/138473.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Feb 2006 17:38:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prüfen ob Methode für Typ des ActiveMIDChild überladen wurde on Sun, 26 Feb 2006 17:38:48 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Methode überladen:</p>
<pre><code>AnsiString PrintGraphForm(TGraphForm* ActiveGraph);
 AnsiString PrintGraphForm(TGraphCompareForm* ActiveGraph);
 AnsiString PrintGraphForm(TGraphBrowser* ActiveGraph);
</code></pre>
<p>alle drei sind spezialisierungen von TForm.</p>
<p>ActiveMDIChild kann aber auch eine andere TForm sein, für die ich die Methode nicht überladen habe.<br />
Derzeit prüfe ich zur Laufzeit ob ich die Methode aufrufen kann oder nicht wie folgt:</p>
<pre><code>void __fastcall TMainForm::PrintImageExecute(TObject *Sender)
{
  AnsiString Meldung=&quot;Bitte zunächst Grafikfenster auswählen.&quot;;
  TGraphCompareForm* ActiveCompGraph;
  TGraphForm* ActiveGraph;
  TGraphBrowser* ActiveGraphBrowser;

  if ((ActiveGraph       =dynamic_cast&lt;TGraphForm*&gt;       (ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveGraph);
  if ((ActiveCompGraph   =dynamic_cast&lt;TGraphCompareForm*&gt;(ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveCompGraph);
  if ((ActiveGraphBrowser=dynamic_cast&lt;TGraphBrowser*&gt;    (ActiveMDIChild)) != 0) Meldung = PrintGraphForm(ActiveGraphBrowser);
  StatusWindow-&gt;RichEdit1-&gt;Lines-&gt;Add(Meldung);
}
</code></pre>
<p>Das muss doch eleganter gehe, ohne eine Reihen von If Statements, oder?</p>
<p>Viele Grüße</p>
<p>Robert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003527</guid><dc:creator><![CDATA[robi1806]]></dc:creator><pubDate>Sun, 26 Feb 2006 17:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob Methode für Typ des ActiveMIDChild überladen wurde on Sun, 26 Feb 2006 18:08:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Eventuell kannst du ja von von den KLassen von ActiveGraph, ActiveCompGraph und ActiveGraphBrowser eine gemeinsame Basisklasse erstellen, die alle benötigten Elemente als Interface bereitstellt. Dann brauchst du an dieser Stelle nur einen cast auf die Basisklasse.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003555</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 18:08:52 GMT</pubDate></item></channel></rss>