Probleme mit Menüs

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Probleme mit Menüs

Beitrag 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
Ich benutze PureBasic 4.0.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag 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")
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Verzichtet auf WindowEvent() und benutzt lieber WaitWindowEvent().
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@D@nte
WindowEvent() sollte man nur in Ausnahmefällen und nicht im Eventloop
verwenden, dafür gibts das TimeOutflag von WaitWindowEvent()
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Danke habe mir mal eure Posts angeschaut und en Code verbessert und funktionioniert alles , Danke!
Ich benutze PureBasic 4.0.
Antworten