<?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[Wait for ButtonClick]]></title><description><![CDATA[<p>Also in meinem Programm werden eine Menge Funktionen nacheinander aufgerufen.<br />
Ich möchte das jetzt aber so, dass die jeweilige aufgerufene Funktion solange wartet, bis ein Button gedrückt wird, oder ein bestimmter Button, und dann soll erst mit der normalen Programm ausführung weiter gemacht werden.<br />
Jemand eine Ahnung wie das zu machen ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129175/wait-for-buttonclick</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 14:47:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129175.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Dec 2005 22:17:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wait for ButtonClick on Sat, 10 Dec 2005 22:17:37 GMT]]></title><description><![CDATA[<p>Also in meinem Programm werden eine Menge Funktionen nacheinander aufgerufen.<br />
Ich möchte das jetzt aber so, dass die jeweilige aufgerufene Funktion solange wartet, bis ein Button gedrückt wird, oder ein bestimmter Button, und dann soll erst mit der normalen Programm ausführung weiter gemacht werden.<br />
Jemand eine Ahnung wie das zu machen ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939288</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sat, 10 Dec 2005 22:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sat, 10 Dec 2005 23:08:40 GMT]]></title><description><![CDATA[<p>Jemand ne Ahnung mit welchem Framework er arbeitet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939310</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 10 Dec 2005 23:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 10:57:30 GMT]]></title><description><![CDATA[<p>Öhm...was ist ein Framework?^^<br />
Ich habe den Borland C++ Builder 6. Wenn das was bringt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939451</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 11 Dec 2005 10:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 11:22:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Da du mit dem Builder arbeitest, ist dein Framework die VCL des Builders, die Klassenbibliothek die dir z.B. die ganzen Komponenten in der IDE bereitstellt.<br />
Damit gehört dieser Thread auch ins Builder-Subforum, wohin dich auch bald ein Mod verschieben wird.</p>
<p>Was ich nicht verstehe ist: Sollen deine Funktionen nun unabhängig naheinander ausgeführt werden (dann benutzt TThread) oder vom User einzeln ausgelöst werden (dann einfach die OnClick-Events der Buttons nutzen)?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939465</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 11 Dec 2005 11:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 11:46:53 GMT]]></title><description><![CDATA[<p>Nee, die Funktionen sollen alle automatisch nacheinander aufgerufen werden.<br />
Wenn die erste Funktion beendet ist, dann wird die nächste aufgerufen usw.<br />
Aber in jeder Funktion soll auf ein ButtonClick gewartet werden, damit die gerade aktive Funktion fortgesetzt werden kann, dann irgendwann zum Ende gelangt, die Programmsteuerung wieder main übergeben wird und die nächste Funktion aufgerufen wird usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939479</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 11 Dec 2005 11:46:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 11:51:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;conio.h&gt;
int i, buttonzahl=13;
while((i=getche())!=buttonzahl){ warten(); }
</code></pre>
<p>Sicherlich net die beste Lösung aber funktioniert. Buttonzahl is einfach nur die ASCII Zahl des jeweiligen Buttons.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939484</guid><dc:creator><![CDATA[effe_eichelt]]></dc:creator><pubDate>Sun, 11 Dec 2005 11:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 12:00:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>@effe : Nein, das bringt milo51 garnichts, da er ja nicht in der Konsole arbeitet, sondern in der VCL-GUI.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10937">@milo51</a> : Du must doch nur die einzelnen Teilfunktionen auf die zugehörigen Button-Clicks aufteilen und das jeweilige Zwischenergebnis in einer passenden Variable/Struktur zwischenspeichern. So das die jeweils folgende Funktion auf die Daten der vorhergehenden Funktion zugreifen kann.</p>
<p>bi bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939491</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 11 Dec 2005 12:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 12:10:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int ButtonClicks = 0;

.
.
.

void ClickOnButton1()
{
    ButtonClicks++;
    if(ButtonClicks&gt;EndeDerFahnenStange)
        ButtonClicks = 0; //evetnuell auch einen Extra Flag setzen
    Auswerten(); //eventuell auch extern aufrufen
}

void Auswerten()
    switch(ButtonClicks)
    {
        case 1:
            func1();
            break;
        case 2:
            func2();
            break;
        case 3:
            func3();
            break;
    }
}
</code></pre>
<p>Und das ganze noch in ne Klasse kapseln, der man ein Objekt übergibt, in dem alle aufzurufenden Funktionen gespeichert sind <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>
]]></description><link>https://www.c-plusplus.net/forum/post/939494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939494</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Sun, 11 Dec 2005 12:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 12:37:19 GMT]]></title><description><![CDATA[<p>Irgendwie versteh ich das von euch beiden nicht ganz...<br />
Ich zeig mal den Code:</p>
<pre><code class="language-cpp">//globale variablen
int ansNumber = 0;
int correctNum = 0;

// Per Klick auf den Start Button fängt das ganze Programm an:
void __fastcall TForm1::Button5Click(TObject *Sender)
{
     quest(&quot;Wie heisst der Programmierer?&quot;, &quot;Patrick&quot;, &quot;Alex&quot;, &quot;Holger&quot;,
           &quot;Jesse&quot;, 1);
     quest(&quot;Was ist 1 + 1?&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, 2);  /* Diese 2. Funktion darf erst DANN aufgerufen werden, wenn auf ein Button geklickt wurde und das jeweilige Ergebnis überprüft wurde!*/
}

// aufgerufene Funktion
void quest(AnsiString question, AnsiString ans1, AnsiString ans2,
           AnsiString ans3, AnsiString ans4, int correctNumber)
{
     Form1-&gt;Label1-&gt;Caption = question;
     Form1-&gt;Label2-&gt;Caption = ans1;
     Form1-&gt;Label3-&gt;Caption = ans2;
     Form1-&gt;Label4-&gt;Caption = ans3;
     Form1-&gt;Label5-&gt;Caption = ans4;
     correctNum = correctNumber;

}

//Antwort Button
void __fastcall TForm1::btnAns1Click(TObject *Sender)
{
     ansNumber = 1;
     if (ansNumber == correctNum)
          {
               ShowMessage(&quot;Richtig!&quot;);
          }
          else
               if ((ansNumber != 0) &amp;&amp; (ansNumber != correctNum))
               {
                    ShowMessage(&quot;Falsch! Die richtige Antwort war Antwort &quot;
                                + IntToStr(correctNum));
               }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/939512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939512</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 11 Dec 2005 12:37:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 13:26:19 GMT]]></title><description><![CDATA[<p>aaaaaaaaalsooo:<br />
Ich hab mal Zeit <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>Ich persönlich würde die Fragen in eine Struktur kapseln. Etwa so:</p>
<pre><code class="language-cpp">struct FragenData
{
    AnsiString frage;
    AnsiString antwort1;
    AnsiString antwort2;
    AnsiString antwort3; //Falls es nicht bei jeder Frage gleich viele Antwortmöglichkeiten gibt, empfehle ich std::vector&lt;AnsiString&gt;
    int richtigeAntwort;
    FragenData (AnsiString fr, AnsiString aw1, AnsiString aw2, AnsiString aw3, int awCorrect) //Konstruktor zum Initialisieren der Struktur FragenData
    {
        frage = fr;
        antwort1 = aw1;
        antwort2 = aw2;
        antwort3 = aw3;
        richtigeAntwort = awCorrect;
    }
};
</code></pre>
<p>Nun kannst du zum Beispiel folgende Initialisierung schreiben:</p>
<pre><code class="language-cpp">#include &lt;vector&gt; //nötig um den Vector zu nutzen

class TForm1 : public Form //Da ich nicht mit vcl programmiere, stimmt die Basisklasse wohl nicht!
{
private:
    std::vector&lt;FragenData&gt; vecFragenData; //Speicherung der Fragendaten
    int aktFrage; //Bei welcher Frage sind wir gerade?
    bool schonGestartet; //Spiel schon gestartet?
    //...
public:
    void init(); //Initialisierung der Fragen
    void testeAntwort(FragenData fd, int antwort);
    void updateForm();
    //...
};

void TForm1::init()
{
    vecFragenData.clear(); //Vector löschen
    vecFragenData.push_back(FragenData(&quot;Wie alt ist der Mond?&quot;, &quot;Tot&quot;, &quot;Häh?&quot;, &quot;Älter als ich, glaub ich&quot;, 3));
    vecFragenData.push_back(FragenData(&quot;Gib mir ein U!&quot;, &quot;U&quot;, &quot;M&quot;, &quot;B&quot;, 1));
   //Somit sind jetzt 2 Fragen in dem Vector &quot;vecFragenData&quot; gespeichert. Was ein Vector genau macht solltest du in einem Tutorial deiner Wahl nachlesen. Für den Anfang reicht es ihn als &quot;besseres&quot; Array zu betrachten, in den per push_back(...) Daten gespeichert werden können.
    aktFrage = 0; //Wir sind bei Frage 0
    schonGestartet = false; //noch net gestartet
}

void TForm1::updateForm()
{
    if(schonGestartet &amp;&amp; aktFrage &lt; vecFragenData.size()) //testen ob schon gestartet wurde und ob wir noch Fragen im Vector haben.
    {
        FragenData fd = vecFragenData[aktFrage]; //Nun lesen wir aus dem Vector den 0. (also den 1.) Eintrag aus.
        quest(fd.frage, fd.antwort1, fd.antwort2, fd.antwort3, fd.richtigeAntwort); //und übergeben die gepeicherten Daten der Funktion quest
    }

}
</code></pre>
<p>StartButton:</p>
<pre><code class="language-cpp">void __factcall TForm1::Button5Click(TObject *Sender)
{
    init(); //Fragen in den Vector schreiben (Könnte man auch bei Form_Load machen
    aktFrage = 0;
    schonGestartet = true;
    updateForm(); //aktuelle Frage in die Textboxen schieben
}
</code></pre>
<p>AntwortButton:</p>
<pre><code class="language-cpp">void __fastcall TForm1::btnAns1Click(TObject *Sender)
{
    if(schonGestartet)
        testeAntwort(vecFragenData[aktFrage], 1);
}

//Button2
void __fastcall TForm1::btnAns2Click(TObject *Sender)
{
    if(schonGestartet)
        testeAntwort(vecFragenData[aktFrage], 2);
}

void TForm1::testeAntowrt(FragenData fd, int antwort)
{
    if(fd.richtigeAntwort == antwort)
        MessageBox(&quot;Jawohl, du bists!&quot;);
    else
        MessageBox(&quot;Schwach!&quot;);

    aktFrage++; //Zur nächsten Frage übergehen
    updateForm(); //Nächste Frage in die Textboxen schreiben.
}
</code></pre>
<p>So. Ich hoffe das war einigermassen verständlich. Der Vorteil an dieser Methode ist, dass du deine Fragen völlig dynamisch laden kannst und auch im Design deiner Form unabhängig von der Anzahl der Fragen bist. Und später kann man das ganze dann auch noch so erweitern, dass man die Fragen extern (Datei) speichert.</p>
<p>P.S.: Ich hab das eben per Hand geschrieben ohne zu compilieren, also sind wohl einige Syntaxfehler drin. Aber ich denk das kriegst du hin <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>Hier übrigens was zum vector:<br />
<a href="http://www.msoe.edu/eecs/ce/courseinfo/stl/vector.htm" rel="nofollow">http://www.msoe.edu/eecs/ce/courseinfo/stl/vector.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/939543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939543</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Sun, 11 Dec 2005 13:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 17:04:04 GMT]]></title><description><![CDATA[<p>Ah, danke erstmal <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="🙂"
    /><br />
Hm das ist komisch, wenn ich</p>
<pre><code class="language-cpp">vecName.push_back(FragenData(argumente));
</code></pre>
<p>schreibe, dann wird der Konstruktor der Klasse dabei aufgerufen??!</p>
<p>Ich dachte erst, wenn man auf das Element zugreift, z.B. mit vecName[0]....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939670</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 11 Dec 2005 17:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 17:07:57 GMT]]></title><description><![CDATA[<p>Richtig. Der Konstruktor wird aufgerufen, falls ein Objekt einer Klasse erstellt wird. Deshalb auch der Name Konstruktor - von konstruieren *g*. Das selbe gilt für den Destruktor. Er wird aufgerufen, falls ein Objekt zerstört wird. Also entweder explizit mit new oder eben, falls es sich nicht mehr innerhalb seines Gültigkeitsbereiches befindet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939673</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Sun, 11 Dec 2005 17:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Sun, 11 Dec 2005 17:13:46 GMT]]></title><description><![CDATA[<p>Jo das wusste ich, mir war grad nur nicht klar, dass der auch beim push_back shcon aufgerufen wird^^</p>
<p>Verdammt, das ist dumm...muss ich alles wieder umplanen^^</p>
<p>Ach ja und ich glaube, du meinst mit &quot;delete&quot; <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/939676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939676</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 11 Dec 2005 17:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wait for ButtonClick on Mon, 12 Dec 2005 10:47:15 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=2" rel="nofollow">VCL/CLX (Borland C++ Builder)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/940042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/940042</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 12 Dec 2005 10:47:15 GMT</pubDate></item></channel></rss>