Habe ein kleines Programm zum Thema Geschäftsfähigkeit gebastelt. Einige Aspekte bekomme ich nicht in den Griff:
- Warum flackert der unten angezeigte Text (= das label)?
- Warum funktioniert <Alt-e> nicht zum Beenden des Programms?
- Warum dauert es so lange, bis ein Mausklick auf Beenden bzw. auf den Schließen-Button (x) das Programm beendet?
- Warum sieht man beim Start den Text des Labels über dem Button?
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>
geschaeftsfaehigkeit()
Func geschaeftsfaehigkeit() Global $nMsg, $newtext Local $radio1a, $radio1b, $radio1c, $radio2a, $radio2b, $radio2c ; Radio-Buttons Local $label1 ; Textfeld mit Ergebnis Local $r1a, $r1b, $r1c, $r2a, $r2b ; Handles der Radiobuttons Global $beendenbutton ; Handle des Beenden-Buttons
GUICreate("Geschäftsfähigkeit", 560, 240, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX)) ; GUISetState(@SW_SHOW) ; Anzeige der leeren Dialogbox
GUICtrlCreateGroup("Alter eingrenzen", 5, 5, 140, 100) $radio1a = GUICtrlCreateRadio("< 7 Jahre", 10, 30, 120, 20) $radio1b = GUICtrlCreateRadio(">= 7 UND < 18 Jahre", 10, 50, 120, 20) $radio1c = GUICtrlCreateRadio(">= 18 Jahre", 10, 70, 120, 20) GUICtrlSetState($radio1b, $GUI_CHECKED) ; Checkbox aktivieren
GUICtrlCreateGroup("Art der Geistestätigkeit", 5, 110, 545, 80) $radio2a = GUICtrlCreateRadio("nicht nur vorübergehende krankhafte Störung der Geistestätigkeit, die die freie Willensbestimmung ausschließt", 10, 135, 535, 20) $radio2b = GUICtrlCreateRadio("keine Störung der Geistestätigkeit", 10, 155, 535, 20) GUICtrlSetState($radio2b, $GUI_CHECKED) ; Checkbox aktivieren
$beendenbutton = GUICtrlCreateButton("B&eenden", 495, 200) ; Beenden-Button
While 1 $iOldOpt = Opt("GUICoordMode", 1) Sleep(800) beenden()
$r1a = GUICtrlRead($radio1a) ; < 7 $r1b = GUICtrlRead($radio1b) ; >=7 < 18 $r1c = GUICtrlRead($radio1c) ; >= 18 $r2a = GUICtrlRead($radio2a) ; krankhafte Störung der Geistestätigkeit $r2b = GUICtrlRead($radio2b) ; keine krankhafte Störung der Geistestätigkeit
If (($r1a = 1 Or $r1b = 1 Or $r1c = 1) And $r2a = 1) Or ($r1a = 1) Then $newtext = "geschäftsunfähig"
ElseIf $r1b = 1 And $r2b = 1 Then $newtext = "beschränkt geschäftsfähig"
ElseIf $r1c = 1 And $r2b = 1 Then $newtext = "geschäftsfähig"
EndIf
GUICtrlSetPos($label1, 20, 200) ;UpdateTextControl($label1, $newtext) $label1 = GUICtrlCreateLabel($newtext, -1, -1, 145, 40) ; ;GUISetState(@SW_UNLOCK) WEnd ExitEndFunc ;==>geschaeftsfaehigkeit
Func UpdateTextControl($label1, $newtext) If GUICtrlRead($label1) <> $newtext Then GUICtrlSetData($label1, $newtext) EndIfEndFunc ;==>UpdateTextControl
[/autoit][autoit][/autoit][autoit]Func beenden()
$nMsg = GUIGetMsg() ; Aktuelles GUI Event abfragen Switch $nMsg ; Welches Event ist eingetreten? Case $GUI_EVENT_CLOSE ; Schließen-Button (X oben rechts) Exit ; Beenden Case $beendenbutton ; Klick auf Beenden-Button? Dann... Exit ; Beenden Case Else ; do nothing ... EndSwitchEndFunc ;==>beenden