da du ja eine Demo hast und Delay() nicht benutzt werden sollte.
Desweiteren habe ich deine Frage zum Drucken auch gelöst.
Code: Alles auswählen
EnableExplicit
Enumeration
#Window_0
#Window_1
#Window_2
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
#Button_loeschen
#Button_Close
#Button_drucken
#Button_vorschau
#String_0
#String_1
#String_2
#String_3
#String_4
#STRING_5
#TString_0
#TString_1
#TString_2
#TString_3
#TString_4
#TString_5
#TString_6
#TString_7
#TString_8
#Option_1
#Option_2
#STRING_INPUT
#STRING_INPUT_1
#STRING_INPUT_2
#Druck_1
#Image_Bild
#Image_0
EndEnumeration
#MB_ICONEXCLAMATION = 48
#CRLF$ = Chr(13) + Chr(10)
LoadFont(0, "Arial", 20)
LoadFont(1, "Arial", 24)
Procedure Drucken(dText$)
Protected mText$
If GetGadgetState(#Option_1)
mText$="Ergebnis ist Mittelwert * 10 :"
Else
mText$="Ergebnis ist Mittelwert * 100 :"
EndIf
If PrintRequester()
If StartPrinting("Kallewisch")
LoadFont(1, "Arial", 100)
If StartDrawing(PrinterOutput())
DrawingFont(FontID(1))
DrawText(100, 100, mtext$)
DrawText(100, 400, dtext$)
StopDrawing()
EndIf
StopPrinting()
Else
MessageRequester("Error", "Kann nicht drucken!", 0)
EndIf
EndIf
EndProcedure
Procedure Vorschau(dText$)
Protected mText$
If GetGadgetState(#Option_1)
mText$="Ergebnis ist Mittelwert * 10 :"
Else
mText$="Ergebnis ist Mittelwert * 100 :"
EndIf
If OpenWindow(#Window_2, 0, 0, 520, 660, "Druckvorschau", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(#Druck_1, 470, 630, 45, 20, "Quit")
CreateImage(#Image_0, 520, 620)
LoadFont(1, "Arial" , 12) ; Der gewünschte Font wird geladen
If StartDrawing(ImageOutput(#Image_0))
Box(0, 0, 520, 620, $FFFFFF)
DrawingFont(FontID(1))
DrawText(100,50,mtext$,RGB(0, 0, 0),RGB(255, 255, 255))
DrawText(100,100, dText$,RGB(0, 0, 0),RGB(255, 255, 255))
Line(0, 619, 619, 1, RGB(0,0,0))
StopDrawing()
EndIf
ImageGadget(#Image_Bild,0,0,520,620,ImageID(#Image_0))
Else
MessageRequester("Error", "Kann Fenster nicht öffnen!", 0)
End
EndIf
EndProcedure
Procedure Message(text$)
Protected StartTime , ElapsedTime
OpenWindow(#Window_1,#PB_Ignore ,#PB_Ignore ,300,200,"", #PB_Window_BorderLess | #WS_THICKFRAME|#PB_Window_ScreenCentered)
TextGadget( #TString_8, 10, WindowHeight(#Window_1)/2.5, 250, 20, text$, #PB_Text_Center )
StartTime = ElapsedMilliseconds()
Repeat
ElapsedTime = ElapsedMilliseconds()-StartTime
Until ElapsedTime > 2000
CloseWindow(#Window_1)
EndProcedure
Procedure ergebnisloeschen()
; Achtung hier Ermittlung der richtigen Zifferanzahl
Protected aFeld, iFeld$, n
If (EventType() = #PB_EventType_LostFocus)
aFeld = EventGadget()
iFeld$ = GetGadgetText(aFeld)
If (Len(iFeld$) > 0) And (Len(iFeld$) < 5)
MessageRequester("InfoBox", "Zahl zu klein! Mindestens 5 Stellen!") ; #MB_ICONEXCLAMATION)
SetActiveGadget(aFeld)
SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $3300FF)
ElseIf (Len(iFeld$) > 7)
MessageRequester("InfoBox", "Zahl zu groß! Maximal 7 Stellen!", #MB_ICONEXCLAMATION)
SetGadgetText(aFeld, "")
SetActiveGadget(aFeld)
SetGadgetText(#STRING_INPUT_2, ("Eingabe FALSCH!"))
SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $3300FF)
EndIf
Else
For n = #string_0 To #String_5
SetGadgetColor(n, #PB_Gadget_BackColor, -1)
Next n
SetGadgetColor(GetActiveGadget(), #PB_Gadget_BackColor, $00FFFF)
SetGadgetText(#STRING_INPUT, "")
SetGadgetText(#STRING_INPUT_1, "")
EndIf
; wir löschen das Feld
SetGadgetText(#STRING_INPUT, "")
; und setzen die Hintergrundfarbe wieder auf weiß
SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor, $FFFFFF)
SetGadgetText(#STRING_INPUT_1, "")
SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor, $FFFFFF)
EndProcedure
If OpenWindow(#Window_0, 248, 16, 730, 642, "Mittelwertrechner", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_TitleBar )
SetWindowColor(#Window_0, $FFFFFF)
; TextGadget(#TString_0, 300, 50, 450, 250, "Danke für " + #CRLF$ + "die Hilfe! " + #CRLF$ + "So ist der Rechner super!!!")
; SetGadgetColor(#TString_0, #PB_Gadget_BackColor,$FBE6C5)
SetGadgetFont(#TString_0, FontID(0))
ButtonGadget(#Button_0, 250, 500, 100, 50, "Berechnen")
ButtonGadget(#Button_loeschen, 425, 500, 100, 50, "Löschen")
ButtonGadget(#Button_Close, 600, 500, 100, 50, "Schließen")
ButtonGadget(#Button_drucken, 250, 580, 100, 50, "Drucken")
ButtonGadget(#Button_vorschau, 425, 580, 100, 50, "Vorschau")
TextGadget(#TString_1, 40, 30, 160, 20, "Zahl 1 eingeben")
; SetGadgetColor(#TString_1, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_0, 40, 50, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_0, FontID(0))
TextGadget(#TString_2, 40, 120, 160, 20, "Zahl 2 eingeben")
; SetGadgetColor(#TString_2, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_1, 40, 140, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_1, FontID(0))
TextGadget(#TString_3, 40, 210, 160, 20, "Zahl 3 eingeben")
; SetGadgetColor(#TString_3, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_2, 40, 230, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_2, FontID(0))
TextGadget(#TString_4, 40, 300, 160, 20, "Zahl 4 eingeben")
; SetGadgetColor(#TString_4, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_3, 40, 320, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_3, FontID(0))
TextGadget(#TString_6, 40, 390, 160, 20, "Zahl 5 eingeben")
; SetGadgetColor(#TString_6, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_4, 40, 410, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_4, FontID(0))
TextGadget(#TString_7, 40, 480, 160, 20, "Zahl 6 eingeben")
; SetGadgetColor(#TString_7, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#String_5, 40, 500, 160, 60, "", #PB_String_Numeric)
SetGadgetFont(#String_5, FontID(0))
TextGadget(#TString_5, 250, 300, 280, 20, "Mittelwert der Eingaben")
; SetGadgetColor(#TString_5, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#STRING_INPUT, 250, 320, 450, 50, "", #PB_String_Numeric)
SetGadgetFont(#STRING_INPUT, FontID(1))
; Achtung: Änderung
OptionGadget(#Option_1, 250, 380, 100, 20, "Mittelwert x10")
OptionGadget(#Option_2, 350, 380, 100, 20, "Mittelwert x100")
; END Änderung
SetGadgetState(#Option_1, #True)
; TextGadget(#TString_8, 250, 380, 280, 20, "Mittelwert x100")
; SetGadgetColor(#TString_8, #PB_Gadget_BackColor,$FBE6C5)
StringGadget(#STRING_INPUT_1, 250, 400, 450, 50, "", #PB_String_Numeric)
TextGadget(#STRING_INPUT_2, 250, 150, 130, 100, "", #PB_Text_Border)
; StringGadget(#STRING_INPUT_2, 250, 150, 130, 100,"", #PB_String_ReadOnly)
; SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor,$FFFFFF)
SetGadgetFont(#STRING_INPUT_2, FontID(0))
Define iEvent.i, SetControl, Teiler, Mittelwert, a1.d, Mittel100, Quit,mText$,wEvent,gEvent
Define eingabe1$, eingabe2$, eingabe3$, eingabe4$, eingabe5$, eingabe6$
Repeat
iEvent.i = WaitWindowEvent()
wEvent = EventWindow()
gEvent = EventGadget()
Select wEvent
Case #Window_0
Select iEvent
Case #PB_Event_Gadget
Select gEvent
Case #Button_0
SetControl = 0
eingabe1$ = GetGadgetText(#String_0)
eingabe2$ = GetGadgetText(#String_1)
eingabe3$ = GetGadgetText(#String_2)
eingabe4$ = GetGadgetText(#String_3)
eingabe5$ = GetGadgetText(#String_4)
eingabe6$ = GetGadgetText(#STRING_5)
If (eingabe1$ <> "")
; If Feldpruefung(1,eingabe1$) ; springt nur hier hinein, wenn die Rückgabe 1 ist
Teiler + 1
Mittelwert = Val(eingabe1$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 1 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If (eingabe2$ <> "")
; If Feldpruefung(2,eingabe2$)
Teiler + 1
Mittelwert + Val(eingabe2$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 2 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If (eingabe3$ <> "")
; If Feldpruefung(3,eingabe3$)
Teiler + 1
Mittelwert + Val(eingabe3$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 3 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If (eingabe4$ <> "")
; If Feldpruefung(4,eingabe4$)
Teiler + 1
Mittelwert + Val(eingabe4$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 4 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If (eingabe5$ <> "")
; If Feldpruefung(5,eingabe5$)
Teiler + 1
Mittelwert + Val(eingabe5$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 5 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If (eingabe6$ <> "")
; If Feldpruefung(6,eingabe6$)
Teiler + 1
Mittelwert + Val(eingabe6$)
; EndIf
Else
If SetControl = 0
MessageRequester("Eingabefehler", "Feld 6 muß ausgefüllt werden!")
SetControl = 1
EndIf
EndIf
If Teiler = 6
SetGadgetText(#STRING_INPUT, StrD(Mittelwert / Teiler))
; Achtung: Änderung
If GetGadgetState(#Option_1)
a1.d = Mittelwert / Teiler * 10
Message("Mittelwert x 10 wird berechnet")
Else
a1.d = Mittelwert / Teiler * 100
Message("Mittelwert x 100 wird berechnet")
EndIf
; END Änderung
Mittel100 = Round(a1, #PB_Round_Up)
SetGadgetText(#STRING_INPUT_1, Str(Mittel100))
SetGadgetColor(#STRING_INPUT_1, #PB_Gadget_BackColor, $00FFFF)
SetGadgetText(#STRING_INPUT_2, ("Eingabe in Ordnung"))
SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $00FF00)
Else
MessageRequester("Fehler", "Es müssen alle Felder korrekt ausgefüllt werden!")
EndIf
Teiler = 0
Case #Button_loeschen
SetGadgetText(#String_0, "")
SetGadgetText(#String_1, "")
SetGadgetText(#String_2, "")
SetGadgetText(#String_3, "")
SetGadgetText(#String_4, "")
SetGadgetText(#STRING_5, "")
SetGadgetText(#STRING_INPUT_2, "")
SetGadgetColor(#STRING_INPUT_2, #PB_Gadget_BackColor, $FFFFFF)
ergebnisloeschen()
Case #String_0
ergebnisloeschen()
Case #String_1
ergebnisloeschen()
Case #String_2
ergebnisloeschen()
Case #String_3
ergebnisloeschen()
Case #String_4
ergebnisloeschen()
Case #STRING_5
ergebnisloeschen()
Case #STRING_INPUT
SetGadgetColor(#STRING_INPUT, #PB_Gadget_BackColor, $00FFFF)
Case #Button_drucken
Drucken(Str(Mittel100))
Case #Button_vorschau
Vorschau(Str(Mittel100))
Case #BUTTON_CLOSE
Quit = #True
EndSelect
EndSelect
Case #Window_2
Select iEvent
Case #PB_Event_Gadget
Select gEvent
Case #Druck_1
CloseWindow(#Window_2)
EndSelect
EndSelect
EndSelect
Until iEvent = #PB_Event_CloseWindow Or Quit = #True
EndIf