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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
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
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
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
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
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
Hallo Andreas,
vielen, vielen Dank. Genau das war's. Es funktioniert.
// - sind Kommentare.
Bis demnächst
Martina