Seite 1 von 1

Probleme mit Menüs

Verfasst: 04.06.2007 19:56
von Dark Skillu
Hi ich habe das Problem, dass meine Menüeinträge nicht funktionieren:

Code: Alles auswählen

If OpenWindow(0, 256, 103, 608, 294, "EasyEdit by DarkSkillu",  #PB_Window_SystemMenu | #PB_Window_TitleBar ) And CreateMenu(1, WindowID(0))
      MenuTitle("Datei")
      MenuItem(1, "New")
      MenuItem(2, "Open")
      MenuItem(3, "Save")
      MenuItem(4, "Exit")
      MenuTitle("?")
      MenuItem(5, "Info")
EndIf
     
If CreateGadgetList(WindowID(0))
  EditorGadget(6, 20, 10, 570, 240)
EndIf


Repeat 

If WindowEvent()=#PB_Event_CloseWindow
 quit=1
EndIf

Event=WaitWindowEvent()
Select Event
    Case #PB_Event_Menu
      
      
       Case 3
               save$ = GetGadgetText(6)
               File$ = SaveFileRequester("HTML Datei speichern", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*;|Text (*.txt)|*.txt", 0)
                 If File$ <> "" ; nicht abgebrochen
                   If CreateFile(0, File$); immer überprüfen!!!! wichtig
                     WriteString(0, save$ )
                     CloseFile(0)
                   EndIf
                 EndIf
                
      Case 2
               
                File$ = OpenFileRequester("HTML Datei Öffnen", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*;|Text (*.txt)|*.txt", 0)
                 If File$ <> "" ; nicht abgebrochen
                  If OpenFile(0, File$); immer überprüfen!!!! wichtig
                      Repeat
                      AddGadgetItem(6, -1, ReadString(0))  ; eine Zeile zum Editorgadget hinzufügen (-1: unten anfügen)
                      Until Loc(0) = Lof(0)
                     CloseFile(0)
                  EndIf
                EndIf
                
      Case 4
                quit=1
                
                
    
EndSelect
      


Until quit=1
Jedenfalls hat mir jemand ausm Board über IcQ weitergeholfen, seitdem funktionieren die Menüeinträge ja auch, aber der Open/Save File Requester lässt sich erst nach etlichem Klicken schließen ( über 20, stresst ziemlich)

Code: Alles auswählen

If OpenWindow(0, 256, 103, 608, 294, "EasyEdit by DarkSkillu", #PB_Window_SystemMenu | #PB_Window_TitleBar ) And CreateMenu(1, WindowID(0))
If CreateGadgetList(WindowID(0))
EditorGadget(6, 20, 10, 570, 240)
EndIf
MenuTitle("Datei")
MenuItem(1, "New")
MenuItem(2, "Open")
MenuItem(3, "Save")
MenuItem(4, "Exit")
MenuTitle("?")
MenuItem(5, "Info")
EndIf


Repeat 

If WindowEvent()=#PB_Event_CloseWindow
quit=1
EndIf

Event=WaitWindowEvent()

If #PB_Event_Menu
Select EventMenu()
 
Case 3
save$ = GetGadgetText(6)
File$ = SaveFileRequester("HTML Datei speichern", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*;|Text (*.txt)|*.txt", 0)
If File$ <> "" 
If CreateFile(0, File$)
WriteString(0, save$ )
CloseFile(0)
EndIf
EndIf

Case 2 
File$ = OpenFileRequester("HTML Datei Öffnen", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*;|Text (*.txt)|*.txt", 0)
If File$ <> "" 
If OpenFile(0, File$)
Repeat
AddGadgetItem(6, -1, ReadString(0)) 
Until Loc(0) = Lof(0)
CloseFile(0)
EndIf
EndIf

Case 4
quit=1


EndSelect
EndIf


Until quit=1
Ich hoffe mir kann jemand bei diesen kleinen Problemen helfen, habe sicher irgendwas falsch gemacht, bzw. übersehen und finde den fehler nicht ...

MfG DarkSkillu

Verfasst: 04.06.2007 20:02
von ts-soft
Nicht Einrücken oder viel zu gross einrücken, da macht das lesen Spaß :freak:

Code: Alles auswählen

Repeat
  Event=WaitWindowEvent()
  If Event=#PB_Event_CloseWindow
    quit=1
  EndIf

  Select Event
    Case #PB_Event_Menu


    Case 3
Nur ein WaitWindowEvent! Ansonsten fehlen Dir Events

Verfasst: 04.06.2007 20:13
von D@nte
>Nicht Einrücken oder viel zu gross einrücken, da macht das lesen Spaß :Freak:
Dacht ich mir auch ersma -.-

Alternativ:

Code: Alles auswählen

Repeat

Select WindowEvent()

  Case #PB_Event_CloseWindow
    quit = 1

 Case #PB_Event_Menu
    Select EventMenu()
 
      Case 3
Achja auch wenn's bei der funzt eigentlich sieht nen Menü ja so aus:

Code: Alles auswählen

If CreateMenu(1, WindowID(0))
  MenuTitle("Datei")

Verfasst: 04.06.2007 20:16
von edel
Verzichtet auf WindowEvent() und benutzt lieber WaitWindowEvent().

Verfasst: 04.06.2007 20:18
von ts-soft
@D@nte
WindowEvent() sollte man nur in Ausnahmefällen und nicht im Eventloop
verwenden, dafür gibts das TimeOutflag von WaitWindowEvent()

Verfasst: 04.06.2007 20:23
von Kaeru Gaman
ich find die struktur nich so "schön"...

Code: Alles auswählen

If OpenWindow() And CreateMenu(1, WindowID(0))
  If CreateGadgetList(WindowID(0))
    EditorGadget(6, 20, 10, 570, 240)
  EndIf
  MenuTitle("Datei")
EndIf 
sollte das erste If fehlschlagen, wird trotzdem der eventloop ausgeführt.
außerdem bezweifle ich den Nutzen von Ands in dem fall.

schöner fände ich z.b.

Code: Alles auswählen

If Not OpenWindow()
  End
EndIf
If Not CreateMenu(1, WindowID(0))
  End
EndIf
If Not CreateGadgetList(WindowID(0))
  End
EndIf

Verfasst: 05.06.2007 15:26
von Dark Skillu
Danke habe mir mal eure Posts angeschaut und en Code verbessert und funktionioniert alles , Danke!