Seite 1 von 1

Mehrfach Fenster öffnen

Verfasst: 25.02.2018 21:13
von Stephan-X
Ich möchte 1 Fenster öffnen, dieses soll über die gesamte Programmzeit geöffnet sein,
mit Buttons möchte ich weitere Fenster über diesen öffnen !
Problem ist wenn das 1. Fenster geöffnet ist und ich öffne per Buttun und Includefile ein weiteres Fenster wird das 1. Fenster geschlossen ?

Code: Alles auswählen

Enumeration
  #verein_fenster
  #verein_status
  #verein_text
  #verein_grund
  #verein_ende
EndEnumeration

If OpenWindow(#verein_fenster,15,15,1400,800,"Vereins - Verwaltung ")
  StringGadget(#verein_text,300,200,200,25,"")
  ButtonGadget(#verein_grund,30,50,40,40,"G")
EndIf

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Repaint
  EndIf
  If Event = #PB_Event_Menu
    Select  EventMenu()
    EndSelect
  EndIf	
   
  If Event = #PB_Event_Gadget
      Select EventGadget()
            Case #verein_text
            If EventType() = #PB_EventType_Focus
            ElseIf EventType() = #PB_EventType_Change
            ElseIf EventType() = #PB_EventType_LostFocus
            EndIf
       
        Case #verein_grund   ; Öffnen 2. Fenster
           IncludeFile "/home/ap-katrin/Entwicklung/SparVer/GrundDat.pb"
        EndSelect
   EndIf     
 Until EventID = #PB_Event_CloseWindow
 End
Da überseh ich bestimmt was, bitte um Hilfestellung !

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 21:21
von RSBasic
Verwendet das zweite Fenster die selbe Konstante oder ID?

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 21:22
von ccode_new
Hallöchen Stephan-X,

welche ID hat dein zweites Fenster ? (Was steht in der Include ?)

Laut Enumeration (Aufzählung) hat dein 1. Fenster den Index (ID) 0.

Hat dein zweites Fenster auch den Index 0 ?

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 21:37
von GPI
Schönes Beispiel, wo man lieber #pb_any benutzen sollte.

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 22:27
von DarkSoul
Jede ID kann nur von einem Fenster zur Zeit belegt werden.

Wenn du ein Fenster mit einer ID öffnest, unter der bereits ein Fenster geöffnet ist, wird das alte Fenster geschlossen. :wink:

Du musst dafür sorgen, dass jedes weitere Fenster eine andere ID hat. Daher (wenn du nicht weißt, wie viele Fenster geöffnet werden) #PB_Any. :mrgreen:

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 22:46
von mk-soft
Mal wieder eine falsche Anwendung von Enumeration.

Windows, Gadgets, Menus, etc haben ihre eigene PB-ID.
Ausserdem muss man nicht #PB_Any verwenden. Für #PB_Any muss man noch extra eine Variable anlegen und verwalten.
Wenn man mit sinnvollen Namen für Konstanten verwendet ist diese auch sehr gut im Code zu lesen.

Code: Alles auswählen

; Fenster 1
Enumeration Window
  #Main
EndEnumeration

Enumeration Gadget
  #MainList
  #MainButton_Ok
  #MainButton_Cancel
EndEnumeration

Enumeration Menu
  #MainMenu
EndEnumeration

Enumeration MenuItem
  #MainMenu_Exit
EndEnumeration



; Fenster 2

Enumeration Window
  #Dialog
EndEnumeration

Enumeration Gadget
  #DialogList
  #DialogButton_Ok
  #DialogButton_Cancel
EndEnumeration

Enumeration Menu
  #DialogMenu
EndEnumeration

Enumeration MenuItem
  #DialogMenu_Exit
EndEnumeration

Debug #Main
Debug #Dialog

Re: Mehrfach Fenster öffnen

Verfasst: 25.02.2018 22:56
von ts-soft
Leider schlecht zu sehen, aber hier die Erklärung:
mk-soft nutzt Named-Enumeration, also

Code: Alles auswählen

Enumeration Windows
EndEnumeration
Hier also mit dem Namen "Windows", der dafür sorgt, das jede Enumeration mit diesem Namen immer weiter gezählt wird. Die simplere Möglichkeit, als #PB_Any, wobei man einen ähnlichen Effekt hat.

Re: Mehrfach Fenster öffnen Gelöst

Verfasst: 26.02.2018 17:50
von Stephan-X
Ok, der volständigkeit halber, ja ich habe in der anderen Datei andere Konstanten aber eben auch Enumeration / EndEnumeration
Habe nun in allen Dateien

Code: Alles auswählen

Enumeration  Programm
daraus gemacht und es Funzt !
Danke, echt schnelle Hilfe ! Manchmal sind es eben nur Kleinigkeiten :allright:
Gruß Stephan-X

Re: Mehrfach Fenster öffnen

Verfasst: 26.02.2018 18:29
von ts-soft
Das Funktioniert, ist aber nicht gerade Optimal!

Jedes PureBasic Objekt benötigt eine eigene Nummerierung. Es geht zwar, alles durchzunummerieren, dabei wird aber evtl. viel Speicher unnötig verbraucht. Besser ist es jedes Objekt von 0 anzufangen.
Was denn nun die einzelnen Objekte sind, kann man auch in der Hilfe nachschauen:
http://www.purebasic.com/german/documen ... jects.html
Übersicht über die verschiedenen PureBasic-Objekte

Gruß
Thomas