Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Power++ - Befehlsschaltfläche programmieren

Tweety4 / 6 Antworten / Baumansicht Nickles

Hallo, kann mir dazu jemand helfen? Wie kann ich eine Checkbox programmieren, genauer gesagt, wenn ich mehrmals drauf klicke passiert immer etwas anderes. Habe es schon mit einer for-Schleife probiert, klappt nur bedingt - nämlich einmal.
Wäre schön, wenn ich hier eine kleine Hilfestellung bekomme bzw. einen kleinen Denkanstoß. Habe mich ziemlich verrannt.
Viele Grüße

bei Antwort benachrichtigen
Andreas42 Tweety4 „Power++ - Befehlsschaltfläche programmieren“
Optionen

Hi!

Der Trick wäre irgendwo im Programm eine globale numerische Variable anzulegen. Diese wird beim Programm start mit 0 (Null) initialisiert.

Bei jedem Klick auf den Button wird die Variable zuerst um den Wert 1 erhöht. Dass wird dann in der weiteren Routine des OnClick-Ereignisses (oder wie sich das in deiner Entwicklungsumgebung auch immer nennt) ausgewertet, so dass man abhängig vom Wert verscheidenen Routinen ausführen kann.

Immer daran denken: man arbeitet ihn modernen Klassenbibliotheken Ereignisorientiert: man programmiert Hooks, die von einem Ereignis ausgelöst werden. Da sind Schleifen für übergeordnete Steueraufgaben nicht geeignet (wie man sie in klassischen Programmen z.B. für das Erfassen udn Asuwerten von Eingaben brauchte).

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Tweety4 Andreas42 „Hi! Der Trick wäre irgendwo im Programm eine globale numerische Variable...“
Optionen

Hallo Andreas,
vielen Dank für die schnelle Antwort. Habe das mal ausprobiert (die Variable hatte ich schon programmiert). Hat aber immer noch nicht funktioniert, soll heißen, er macht gar nichts beim Klick.
Wärst du damit einverstanden, wenn ich dir mal meine Version als RTF-Datei schicke? Habe die "Problemzonen" fett geschrieben. Könntest du dann mal drüber schaun, ob dir spontan etwas dazu einfällt?
Wäre schön, wenn du ja sagst :-)

Bis dahin
Martina

bei Antwort benachrichtigen
Andreas42 Tweety4 „Hallo Andreas, vielen Dank für die schnelle Antwort. Habe das mal ausprobiert...“
Optionen

Hi!

Ja, kannst du mir mal schicken, oder wenn's nicht zu lang ist, einfach die kritischen Teile hier reinstellen.

Ich kenne zwar Power++ nicht, aber wnen das eine halbwegs normale Programmiersprache/Entwicklungsumgebung ist, dann sollte ich damit etwas anfangen können.

Wenn du die kritischen teile hier als Text postest, dnan können auch andere mit drüberschauen. Das muss kein nachteil sein. ;-)

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Tweety4 Andreas42 „Hi! Ja, kannst du mir mal schicken, oder wenn s nicht zu lang ist, einfach die...“
Optionen

Hallöle,
ok, dann stelle ich die kritischen Teile mal hier rein. Habe also eine private Variable i angelegt und im Konstruktor habe ich sie initialisiert.

WBool Form1::cb_1_Click(
WObject * source,
WEventData * event )
{
if (i == 1)
{
label_2->SetText( "Zweite Textposition" );
label_3->SetText( " " );
label_4->SetText( " " );
label_1->SetText( " " );
// i = 0;
}

if (i == 2)
{
label_3->SetText( "Dritte Textposition" );
label_4->SetText( " " );
label_1->SetText( " " );
label_2->SetText( " " );
// i = 1;
}

if (i == 3)
{
label_4->SetText( "Vierte Textposition" );
label_1->SetText( " " );
label_2->SetText( " " );
label_3->SetText( " " );
// i = 2;
}

if (i == 4)
{
label_1->SetText( "Erste Textposition" );
label_2->SetText( " " );
label_3->SetText( " " );
label_4->SetText( " " );
// i = 3;
}

return FALSE;
}

So. Das ist er. Soll also bewirken, dass man bei jedem Klick etwas anderes sieht. Bei mir macht er wie gesagt leider gar nichts.
Hoffe, dass es eine halbwegs normale Sprache ist.

Bis dann
Martina

bei Antwort benachrichtigen
Andreas42 Tweety4 „Hallöle, ok, dann stelle ich die kritischen Teile mal hier rein. Habe also eine...“
Optionen

Hi!

Sind die mit // beginnenden Zeilen Kommentare oder ist das eine Wertzuweisung?

Mir fehlt das Hochzählen von i, dass vor dem "return FALSE" passieren sollte. Also eine Anweisung in der Art:

i=i+1;

if (i==5)
{
i=1;
}

Die IF-Anweisung soll dann den Überlauf abfangen und setzt i wieder auf einen Startwert zurück.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Tweety4 Andreas42 „Hi! Sind die mit // beginnenden Zeilen Kommentare oder ist das eine...“
Optionen

Hallo Andreas,
vielen, vielen Dank. Genau das war's. Es funktioniert.

// - sind Kommentare.

Bis demnächst
Martina

bei Antwort benachrichtigen