<?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[Universelle Funktion für verschiedene Objecte: Wie Object absteuern?]]></title><description><![CDATA[<p>Hi,<br />
ich habe sowas wie eine eigene Toolbar mit ca. 10+ Buttons die bei OnClick immer das gleiche machen: Es handelt sich um TImage Objecte.</p>
<p>-bool togglen<br />
-abhängig vom bool wert das verwendete Bild ändern.</p>
<p>Um den Code ein bißchen zu stutzen wollte ich die Funktion generalisieren aber weiss leider nicht wie ich die Information weiterleiten kann sodass ich auch weiss welches Object geklickt wurde um dann das neue Bild draufzukleben.</p>
<p>Ich habe die Stellen die Wohl modifizierungsbedürftig sind dick gemacht.<br />
Ich würde die Funktion von der normalen fastcall OnClick Funktion ausrufen.</p>
<p>z.b:</p>
<pre><code>void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender)
{
char newimagename[256] = &quot;Textures\\Buttons\\improvements_&quot;;
SwitchImageAndToggle(show_improvements, newimagename, [b]TImage ????[/b])
}
</code></pre>
<pre><code>void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender)
{
        string newimagename = &quot;Textures\\Buttons\\improvements_&quot;;
        SwitchImageAndToggle(show_improvements,newimagename.c_str(),[b]Img_Improvements[/b]);
}
//---------------------------------------------------------------------------

void TForm1::SwitchImageAndToggle(bool boolean,const char* imgpath, [b]TImage image[/b])
{
    boolean^=true;
    string temp;
    char TempChar[256];
    sprintf(TempChar, &quot;%s&quot;, imgpath);
    temp = TempChar;

    if(boolean)
         temp.append(&quot;on.jpg&quot;);
else
         temp.append(&quot;off.jpg&quot;);

    [b]image[/b]-&gt;Picture-&gt;LoadFromFile(ProgramPath+stringTochar(temp));
}
</code></pre>
<p>Ansich ist das sicher sehr einfach aber auch nach einer Weile Forumsuche und Googlen habe ich nichts gefunden was mir weiterhilft. Kann das Problem schlecht mit einem Passenden Stichwort beschreiben.</p>
<p>Danke vielmals..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128304/universelle-funktion-für-verschiedene-objecte-wie-object-absteuern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 11:25:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128304.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Dec 2005 12:23:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 12:24:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe sowas wie eine eigene Toolbar mit ca. 10+ Buttons die bei OnClick immer das gleiche machen: Es handelt sich um TImage Objecte.</p>
<p>-bool togglen<br />
-abhängig vom bool wert das verwendete Bild ändern.</p>
<p>Um den Code ein bißchen zu stutzen wollte ich die Funktion generalisieren aber weiss leider nicht wie ich die Information weiterleiten kann sodass ich auch weiss welches Object geklickt wurde um dann das neue Bild draufzukleben.</p>
<p>Ich habe die Stellen die Wohl modifizierungsbedürftig sind dick gemacht.<br />
Ich würde die Funktion von der normalen fastcall OnClick Funktion ausrufen.</p>
<p>z.b:</p>
<pre><code>void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender)
{
char newimagename[256] = &quot;Textures\\Buttons\\improvements_&quot;;
SwitchImageAndToggle(show_improvements, newimagename, [b]TImage ????[/b])
}
</code></pre>
<pre><code>void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender)
{
        string newimagename = &quot;Textures\\Buttons\\improvements_&quot;;
        SwitchImageAndToggle(show_improvements,newimagename.c_str(),[b]Img_Improvements[/b]);
}
//---------------------------------------------------------------------------

void TForm1::SwitchImageAndToggle(bool boolean,const char* imgpath, [b]TImage image[/b])
{
    boolean^=true;
    string temp;
    char TempChar[256];
    sprintf(TempChar, &quot;%s&quot;, imgpath);
    temp = TempChar;

    if(boolean)
         temp.append(&quot;on.jpg&quot;);
else
         temp.append(&quot;off.jpg&quot;);

    [b]image[/b]-&gt;Picture-&gt;LoadFromFile(ProgramPath+stringTochar(temp));
}
</code></pre>
<p>Ansich ist das sicher sehr einfach aber auch nach einer Weile Forumsuche und Googlen habe ich nichts gefunden was mir weiterhilft. Kann das Problem schlecht mit einem Passenden Stichwort beschreiben.</p>
<p>Danke vielmals..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932208</guid><dc:creator><![CDATA[GreyHound]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:24:44 GMT</pubDate></item><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 12:29:53 GMT]]></title><description><![CDATA[<p>WEr ist Sender:<a href="http://www.marquardtnet.info/cecke/quickies.1/1_quicky_17.html" rel="nofollow">http://www.marquardtnet.info/cecke/quickies.1/1_quicky_17.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/932223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932223</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 12:31:42 GMT]]></title><description><![CDATA[<p>wenn du den bcb verwendest, dann nimm der einfachheit halber AnsiString, dann kannst du dir ne menge unnuetzen code sparen.</p>
<pre><code class="language-cpp">void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender) 
{  
  SwitchImageAndToggle(show_improvements, &quot;Textures\\Buttons\\improvements_&quot;, Img_Improvements); 
} 

//--------------------------------------------------------------------------- 
// Referenz auf Show uebergeben, damit das geaendert werden kann
// Pfad zur Bilddatei
// Zeiger auf das Bildobjekt
//--------------------------------------------------------------------------- 
void __fastcall TForm1::SwitchImageAndToggle(bool &amp;Show, AnsiString ImgPath, TImage *Image) 
{ 
  if (!Image)
    return;

  // Status toggeln
  Show = !Show; 

  // Dateiendung je nach Ansicht
  AnsiString FileAppendix = Show ? AnsiString(&quot;on.jpg&quot;) : AnsiString(&quot;off.jpg);

  // Bilddatei laden
  Image-&gt;Picture-&gt;LoadFromFile(ProgramPath  + ImgPath + FileAppendix);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/932225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932225</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 12:35:44 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du must den Parameter Sender des OnClick-Events auswerten.<br />
Außerdem versteh ich nicht, warum du die String-Behandlung so kompliziertmachst.</p>
<pre><code class="language-cpp">void __fastcall TForm1::Img_ImprovementsClick(TObject *Sender)
{
  AnsiString newimagename = &quot;Textures\\Buttons\\improvements_&quot;;
  TButton *CurrButton = dynamic_cast&lt;TButton *&gt; (Sender);
  TImage *Img_Improvements = ...; // Hier anhand des Buttons das zugehörige Image auswählen, z.B. über TButton-&gt;Tag identifiziern
  SwitchImageAndToggle(show_improvements,newimagename.c_str(),Img_Improvements); // Wo kommt der erste Parameter des Aufrufs her?
  }
//---------------------------------------------------------------------------

void TForm1::SwitchImageAndToggle(bool boolean, Ansistring imgpath, TImage image)
{
    boolean^=true;

    if(boolean)
         imgpath += &quot;on.jpg&quot;;
else
         imgpath += &quot;off.jpg&quot;;

    image-&gt;Picture-&gt;LoadFromFile(ProgramPath+imgpath);
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932229</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 12:36:06 GMT]]></title><description><![CDATA[<p>naja Sender muss er nicht auswerten, da die Buttons ja eigentlich TImage's sind und er einfach dort OnClick ueberschrieben hat. daher kann er das Image direkt uebergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932232</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Universelle Funktion für verschiedene Objecte: Wie Object absteuern? on Fri, 02 Dec 2005 13:28:31 GMT]]></title><description><![CDATA[<p>danke ihr beiden, klappt super! Besonders gut fand ich das ihr euch die Mühe gemacht habt mir den Code zu modifizieren. Ich muss zugeben dass ich ganz schön mies mit den Strings rumgewurstelt habe.</p>
<p>Das ich das TImage als Zeiger übergeben muss hätte ich mir auch denken können. <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>bis denne<br />
grey</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932318</guid><dc:creator><![CDATA[GreyHound]]></dc:creator><pubDate>Fri, 02 Dec 2005 13:28:31 GMT</pubDate></item></channel></rss>