none
Funktionsprüfung auf einem Menüpunkt RRS feed

  • Frage

  • Hallo,
    ich stelle in meinem Programm verschiedene Funktionen zur Verfügung, die ich an- oder ausschalten kann.
    Wenn ich alle Funktionen so aufbaue, dass eine Funktion stets ein Untermenü mit den Punkten An oder Aus hat, wird das schon bei wenigen Punkten unübersichtlich.
    Soweit ich weiß, geht das auch so, dass man selbst prüft, ob der Menüpunkt an ist und ANweisung A  durchzuführen hat oder aus und dann das tut, was Anweisung B vorsieht.
    Ich bilde mir auch ein, das als Boolsche Funktion gelesen zu haben.

    Als Beispiel möchte ich einen Labeltext ändern.
    Ist das
    If An.Checked= True Then
    Label1.Text="An"
    End If

    If An.Checked=False Then Label1.Text="Aus"
    End If

    Soweit funktioniert das ja noch.
    Aber wenn ich nun das Label ausschalte, muss ja auch der Checked - Status geändert werden.
    Das kann ich ja noch machen, dann sieht mein Code eben so aus:

    If An.Checked=False Then
    Label1.Text="Aus"
    An.Checked=False           'Würde ja das Häckchen wieder ausschalten
    End If

    Und an dieser Stelle habe ich mir dann mein Bein gestellt, weil dann wieder die erste Anweisung greift.
    Mit meinen Hausmitteln komme ich also nicht weiter.

    Kann mir jemand den Quelltext mit Erklärung* geben.

    *Ohne Erkläung hilft zwar auch, aber dann verstehe ich ja nie was ich da eigentlich tue.


    Vielen Dank im Voraus Liebe Grüße Stefan
    Montag, 1. Juni 2009 18:28

Antworten

  • Hallo Stefan,

    Die ersten zwei If Blocks wo du den CheckState prüfst kann man auch so schreiben:

    '//****************************
    If An.Checked Then
       Label1.Text = "An"
    Else
       Label1.Text = "Aus"
    End If
    '//****************************

    Weiter sagst du schaltest das Label aus (das bedeutet es war An und der CheckState war True) und du änderst den CheckState.
    Das macht man so ohne mehr zu prüfen das Häkchen (wir wissen es ist True weil die Label An ist):

    '//****************************
    Label1.Text="Aus"
    An.Checked=False '//Anweisung B wird ausgelöst
    '//****************************

    Falls du noch Erklärungen brauchst bitte schreib uns.

    Grüsse und Erfolg,

    • Als Antwort markiert Giftzwockel Mittwoch, 10. Juni 2009 20:50
    Mittwoch, 10. Juni 2009 09:46
    Moderator

Alle Antworten

  • Hallo Stefan,

    Die ersten zwei If Blocks wo du den CheckState prüfst kann man auch so schreiben:

    '//****************************
    If An.Checked Then
       Label1.Text = "An"
    Else
       Label1.Text = "Aus"
    End If
    '//****************************

    Weiter sagst du schaltest das Label aus (das bedeutet es war An und der CheckState war True) und du änderst den CheckState.
    Das macht man so ohne mehr zu prüfen das Häkchen (wir wissen es ist True weil die Label An ist):

    '//****************************
    Label1.Text="Aus"
    An.Checked=False '//Anweisung B wird ausgelöst
    '//****************************

    Falls du noch Erklärungen brauchst bitte schreib uns.

    Grüsse und Erfolg,

    • Als Antwort markiert Giftzwockel Mittwoch, 10. Juni 2009 20:50
    Mittwoch, 10. Juni 2009 09:46
    Moderator
  • Hallo und vielen Dank,
    da habe ich mit dem = True einen Schritt zu viel unternommen.

    Ich habe aber noch mal zwei Fragen zur Einfärbung des Bildschirms. Ich hoffe, dass ich mit dem "Querfragen" nicht gegen irgendwelche Forenregeln verstoße.

    Das mit dem Invertieren geht ja soweit ganz gut, ich habe aber beispielsweise in meinem Programm zwei Labels die über einen Timer jede Sekunde aktualisiert werden und dann habe ich an der Stelle dieser Labels wieder die ursprüngliche Hintergrundfarbe. Außerdem ändert sich auch sonst innerhalb der Anwendung die Hintergrundfrabe, wenn ich eine Änderung vornehme.
    Ich mache das Programm u.a. auch für einen Bekannten, der ein Sehproblem hat und extrem blendempfindlich ist. Meine Idee ist es, ihm dann doch dauerhaft die Invertierung anzubieten. Das Problem ist beim Webbrowser allerdings, dass es Seiten gibt, die schon schwarz sind, da muss er dann die Invertierung wieder aufheben können.
    Ein und ausschalten bekomme ich ja hin, das der Effekt innerhalb der Anwendung dann doch dauerhaft ist, ist mein Problem.
    Und da ich gerne mit Farben "spiele" und das für den Bekannten echt Sinn macht, würde ich ihm auch gerne die Möglichkeit einbauen, dass er z.B. die Hintergrundfarbe nach individuellen Bedürfnissen anpasst.
    Haste da eine Idee?
    Vielen Dank im Voraus Liebe Grüße Stefan
    Mittwoch, 10. Juni 2009 21:01