Seite 1 von 1

Neues Fenster = Altes Verschwindet ungewollt

Verfasst: 09.08.2006 18:45
von Stromberg
Hi,

bitte nicht lachen, aber ich sitze seit fast 24 Stunden an einem lächerlichen Problem.

Das folgende Programm, bereitet mir Kopfzerbrechen. Ja, ich weiß, es hat keinen Sinn und läuft ewig... :D

Wenn ich den Button klicke, so erscheint ein neues Fenster. Allerdings verschwindet das alte, was so nicht passieren soll.

Helft mir mal bitte auf die Sprünge, was ich da versaut habe. Danke.

Code: Alles auswählen

 Procedure startmenu()
  Enumeration
  #WahlFenster
  #button 
EndEnumeration 
OpenWindow(#WahlFenster, 349, 139, 380, 380, "Fenster1", #PB_Window_ScreenCentered| #PB_Window_BorderLess )
CreateGadgetList(WindowID(#WahlFenster))
ButtonGadget(#button,40,250,300,50,"Button",#BS_FLAT)
EndProcedure


 Procedure fensteranzeigen()
      Enumeration
              #fenster2
      EndEnumeration
   OpenWindow(#fenster2,0,0,40,40,"Fenster2",#PB_Window_ScreenCentered)
      CreateGadgetList(WindowID(#fenster2)) 
    EndProcedure 

startmenu()

Repeat

  Select WaitWindowEvent(25)
  
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #button 
        fensteranzeigen()
      EndSelect 
  EndSelect 

ForEver 

Verfasst: 09.08.2006 18:49
von Kaeru Gaman
deine zweite Enum ist da total falsch:

die fängt dann von vorne an zu zählen.

ich würd so auffe schnelle man sagen, die "beiden" fenster haben die selbe nummer.

Enum is zwar schick, aber zum rumprobieren sollte man fenster
und gadget-nummern vielleicht doch erst mal literal angeben.

auf keinen fall sollte man ein Enum in ne procedure stecken,
is dort absolut fehl am platze.

Verfasst: 09.08.2006 18:51
von ts-soft
Mach mal eine Enumeration, wenn Du 2 mal Fenster 0 erstellst, wird das
erste natürlich gelöscht. Enumeration in der Prozedure macht keinen Sinn
und wirkt unübersichtlich :wink: , auserdem findet man dann solche Fehler
schneller als in 24 Std.
:mrgreen:

Verfasst: 09.08.2006 18:53
von Stromberg
Oh, mann, das wars. Danke! Ich bin schon an mir verzweifelt. Ich bin einfach davon ausgegangen, dass er "intelligent" weiterdeklariert.


Vielen Dank, du hast meinen Abend gerettet. :)

Verfasst: 09.08.2006 18:58
von AND51
PB Hilfe hat geschrieben:Die reservierte Konstante #PB_Compiler_EnumerationValue speichert den nächsten Wert, welcher in der Aufzählung benutzt wird. Dies kann nützlich sein, um mehrere Aufzählungen zu verketten.

[...]

Beispiel: Verknüpfte Enumerations

Code: Alles auswählen

  Enumeration
    #GadgetInfo ; wird 0 sein
    #GadgetText ; wird 1 sein
    #GadgetOK   ; wird 2 sein
  EndEnumeration
  
  Enumeration #PB_Compiler_EnumerationValue
    #GadgetCancel ; wird 3 sein
    #GadgetImage  ; wird 4 sein
    #GadgetSound  ; wird 5 sein
  EndEnumeration

Verfasst: 09.08.2006 18:58
von ts-soft
"intelligent weiterdeklarieren" geht nur so:

Code: Alles auswählen

Enumeration #PB_Compiler_EnumerationValue
;
;
EndEnumeration
AND51 war schneller /:-> :wink:

Verfasst: 09.08.2006 19:04
von AND51
ts-soft hat geschrieben:AND51 war schneller /:-> :wink:
Macht nichts... :wink:

Verfasst: 09.08.2006 20:32
von Stromberg
Ein Dankeschön nochmal an alle, die geantwortet haben.

Dass der Fehler bei der Enumeration liegen könnte, da wäre ich einfach nicht drauf gekommen. Auch wenns natürlich in der Hilfe eindeutig formuliert ist. <)