Nach Schließen eines 2. Fensters auf 1. Malen [Gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Nach Schließen eines 2. Fensters auf 1. Malen [Gelöst]

Beitrag von Chimorin »

Halli Hallo,

ich poste dieses Problem im Anfängerforum, weil ich wohl dieses Anfängerproblem versäumt habe :oops:
Problem ist, ich habe ein Fenster, erstelle ein Childwindow und nach Beenden dieses wird später ein Gadget gelöscht und nochmals gezeichnet.
Hier kommt nun ein Fehler, weil der Focus immer noch auf dem 2. Fenster liegt. Ich hab nach SetFocus() und sowas gesucht, gibts aber nicht.

Damit auch die codehungrigen Geier hier befriedigt sind, hier mein Problem in Code ;)

Code: Alles auswählen

EnableExplicit

Global.i Event

Enumeration
  #Window_0
  #Window_1
EndEnumeration


Enumeration
  #Button_0
  #Container_0
EndEnumeration

Procedure Container()
  ContainerGadget(#Container_0, 70, 10, 200, 200, #PB_Container_Single)
EndProcedure


OpenWindow(#Window_0, 200, 200, 400, 400, "Fenster 1")
ButtonGadget(#Button_0, 10, 10, 50, 50, "Neues Fenster")
Container()
CloseGadgetList()       ;#Container_0

Repeat
  Event = WindowEvent()
  
  Select Event
    Case 0
      Delay(5)
      
    Case #PB_Event_CloseWindow
      End
      
    Case #PB_Event_Gadget
      
      Select EventGadget()
        Case #Button_0
          
          Select EventType()
            Case #PB_EventType_LeftClick
              OpenWindow(#Window_1, 400, 400, 200, 200, "Fenster 2")
              Repeat
              Until WindowEvent() = #PB_Event_CloseWindow
              CloseWindow(#Window_1)
              FreeGadget(#Container_0)
              Container()
              
          EndSelect
          
      EndSelect
      
  EndSelect
  
ForEver
Zuletzt geändert von Chimorin am 26.03.2013 18:14, insgesamt 1-mal geändert.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Nach Schließen eines 2. Fensters auf 1. Malen ---> Fehle

Beitrag von STARGÅTE »

Dafür gibt es UseGadgetList(WindowID(#Window_0)) um auf das "alte" Fenster zuzugreifen.

Außerdem musst du nach deinem Container() auch wieder CloseGadgetList() aufrufen damit nicht alles in den Container kommt.

Code: Alles auswählen


              CloseWindow(#Window_1)
              FreeGadget(#Container_0)
              UseGadgetList(WindowID(#Window_0))
              Container()
              CloseGadgetList()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Nach Schließen eines 2. Fensters auf 1. Malen ---> Fehle

Beitrag von Chimorin »

@Stargate:

Aha, vielen Dank. Ich hätte gedacht, dass man da wieder OpenGadgetlist() benutzt, was aber nicht funktioniert ;)
Das ganze war nur ein in 2min zusammengeschriebenes Beispiel, Kot für die Toilette ^^
Bild

- formerly known as Bananenfreak -
Antworten