Fehler im 1. Fenster nach Öffnen eines 2. Fensters [gelöst]
Verfasst: 12.01.2007 12:42
Hallo,
warum gibt es hier eine Änderung der Funktionalität, dass gleichlautende Befehle nach Öffnen eines weiteren Fensters nicht mehr korrekt ausgeführt werden?
Programm aufrufen und als erstes ALT+H oder auf "Ein" klicken ...
Danach das zweite Fenster mit "Korrektur" aufrufen und danach erneut ALT+H aufrufen, dann wird das Problem erkennbar.
Mit einem SetActivWindow lässt sichs nicht lösen, deshalb ists im Quelltext auskommentiert ...
warum gibt es hier eine Änderung der Funktionalität, dass gleichlautende Befehle nach Öffnen eines weiteren Fensters nicht mehr korrekt ausgeführt werden?
Programm aufrufen und als erstes ALT+H oder auf "Ein" klicken ...
Danach das zweite Fenster mit "Korrektur" aufrufen und danach erneut ALT+H aufrufen, dann wird das Problem erkennbar.
Mit einem SetActivWindow lässt sichs nicht lösen, deshalb ists im Quelltext auskommentiert ...
Code: Alles auswählen
;- Window Constants
;
Enumeration
#Window_0
#Window_EK
EndEnumeration
;- Gadget Constants
;
Enumeration
#F3DI
#Button_OK
#Button_Dlte
#EKButton_OK
#EKButton_L
#F3Help
#Helpin
#HelpButton
#EKF3DI
EndEnumeration
#LVM_FIRST = $1000
#LVM_GETHEADER = #LVM_FIRST + 31
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Arial", 18)
Global FontID2
FontID2 = LoadFont(2, "Arial", 18, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(3, "Arial", 6)
Global FontID4
FontID4 = LoadFont(4, "Arial", 8)
Global FontID5
FontID5 = LoadFont(5, "Arial", 7)
Procedure Open_Window_0()
If OpenWindow(#Window_0, 0, 0, 1024, 650, "Hilfe", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget| #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(0))
Frame3DGadget(#F3Help, 7, 10, 40, 40, "&Hilfe")
ButtonGadget(#HelpButton, 11, 25, 32, 20, "Ein",#PB_Button_Toggle)
SetGadgetState(#HelpButton,0)
hilfe$="Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+Chr(10)+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"Hilfe"+Chr(10)+"usw."
TextGadget(#Helpin, 10, 35, 34, 560, hilfe$)
SetGadgetFont(#Helpin, FontID5)
HideGadget(#Helpin,1)
Frame3DGadget(#F3DI, 55, 10, 440, 600, "Erfassung")
ButtonGadget(#Button_OK, 360, 240, 80, 24, "Erfassen")
ButtonGadget(#Button_Dlte, 360, 300, 80, 24, "Korrigieren")
EndIf
EndIf
EndProcedure
Procedure Open_Window_EK()
If OpenWindow(#Window_EK, 0, 0, 500, 420, "Korrektur", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget| #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Window_EK))
Frame3DGadget(#EKF3DI, 55, 10, 400, 400, "Korrektur")
ButtonGadget(#EKButton_OK, 360, 240, 80, 24, "Korrigieren")
ButtonGadget(#EKButton_L, 360, 300, 80, 24, "Abbrechen")
EndIf
EndIf
EndProcedure
Open_Window_0()
ShowWindow_(WindowID(0),#SW_MAXIMIZE)
CreateMenu(0, WindowID(0))
MenuTitle("&Datei")
MenuItem( 1, "&Neu")
MenuItem( 2, "&Laden")
MenuItem( 3, "&Speichern")
; MenuItem( 4, "Nicht definiert")
MenuBar()
; MenuItem( 5, "Nicht definiert")
MenuItem( 6, "&Beenden")
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Alt |#PB_Shortcut_H, 734)
Programmschleifenstart:
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
If Event = #PB_Event_Menu
If EventMenu()=734 And Event = #PB_Event_Menu
If hilfe = 1
Gosub hilfe1
Else
Gosub hilfe0
EndIf
EndIf
EndIf
If Event = #PB_Event_Gadget
GadgetID = EventGadget()
If GadgetID = #HelpButton
If hilfe = 1
Gosub hilfe1
Else
Gosub hilfe0
EndIf
EndIf
If GadgetID = #Button_Dlte
Gosub eintragloeschen
EndIf
If GadgetID = #Button_OK
Gosub datensatzerzeugen
EndIf
EndIf
Until WindowID=#Window_0 And event= #PB_Event_CloseWindow
Ergebnis=MessageRequester("Programm beenden", "Programm schliessen?", #PB_MessageRequester_YesNoCancel)
If Ergebnis=7 Or Ergebnis=2
Goto Programmschleifenstart
EndIf
End
hilfe0:
hilfe=1
;SetActiveWindow(#Window_0)
HideGadget(#Helpin,0)
Frame3DGadget(#F3Help, 7, 10, 40, 600, "&Hilfe")
ButtonGadget(#HelpButton, 11, 585, 32, 20, "Aus",#PB_Button_Toggle)
SetGadgetState(#HelpButton,1)
Return
hilfe1:
hilfe=0
;SetActiveWindow(#Window_0)
HideGadget(#Helpin,1)
Frame3DGadget(#F3Help, 7, 10, 40, 40, "&Hilfe")
ButtonGadget(#HelpButton, 11, 25, 32, 20, "Ein",#PB_Button_Toggle)
SetGadgetState(#HelpButton,0)
Return
datensatzerzeugen:
datensatzende:
Return
;------------------------------------------------------------------------------------------
eintragloeschen:
Open_Window_EK()
SetWindowTitle(#Window_EK, "Korrektur: "+ abc$)
repcor:
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
If Event = #PB_Event_Menu
EndIf
If Event = #PB_Event_Gadget
GadgetID = EventGadget()
If GadgetID = #EKButton_OK
Goto startchange
EndIf
If GadgetID = #EKButton_L
Goto elende
EndIf
EndIf
Until WindowID=#Window_EK And event= #PB_Event_CloseWindow
Goto elende:
elende:
CloseWindow(#Window_EK)
Return
startchange:
Return