Fenster wechseln bei Escape-GUI

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

buja

Betreff: Fenster wechseln bei Escape-GUI

BeitragMi, Mai 14, 2008 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich bin grad was am coden und leider am verzweifeln. Ich habe ein Problem, was eigentlich ganz einfach gehen sollte. Ich kann nicht den ganzen code posten, da ich ihn noch für einen wettbewerb brauche -.-

So, wenn man auf neues dokument im menü geht, soll sich ein Fenster was ich definiert habe öffnen, was auch funktioniert.
Wenn man auf abbrechen (abbrechen.eg_button) drückt soll es, (surprise surprise) das Fenster verschwinden lassen und zum Hauptfenster wechseln.
Aber leider passiert nichts wenn man auf abbrechen geht. das Fenster wird nicht unsichtbar Sad


Fenster Erzeugen:
Code: [AUSKLAPPEN]

Global fenster_neu.EG_Window = EG_Window(GraphicsWidth()/2,GraphicsHeight()/2,300,150,"Neues Dokument öffnen",5)
fenster_neu.EG_Window\visible = False
eg_draw_all()
eg_windowactive(fenster_haupt)

;Jetzt die Label, Eingabefelder und Button machen

Global label_1.eg_label = eg_label(fenster_neu,20,1,100,20,Chr$(4)+"Eigenschaften:" )
Global label_breite.eg_label = eg_label(fenster_neu,30,20,100,20,"Breite:")
Global text_breite.eg_input = eg_input(fenster_neu,30+100,20,100,"",4,False,False)

Global label_hohe.eg_label =  eg_label(fenster_neu,30,40,100,20,"Höhe:")
Global text_hohe.eg_input = eg_input(fenster_neu,30+100,40,100,"",4,False,False)

Global ok.eg_button = eg_button(fenster_neu,50,100,100,20,"Ok")
Global abbrechen.eg_button = eg_button(fenster_neu,180,100,100,20,"Abbrechen")



Die Funktion die das Fenster ausführt:

Code: [AUSKLAPPEN]

Function NewDocument()
   eg_windowactive(fenster_neu.EG_Window)   ;Fokus auf Neu-Dokument Fenster
   eg_window_stable = True               ;Wechseln zwischen 2 Fenstern verhindern.
   eg_draw_all()                     ;Änderungen wirksam machen
   
   
   If eg_event_button = abbrechen.eg_button
   
      eg_windowactive(fenster_haupt)
      eg_window_stable = False
      eg_draw_window(fenster_haupt.EG_Window)
      
   EndIf
   
   
   
End Function   


Ich hoffe mal ich hab nicht ins falsche Forum gepostet.
...

Blackside

BeitragMi, Mai 14, 2008 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If eg_event_button = abbrechen.eg_button

muss
Code: [AUSKLAPPEN]
If eg_event_button = abbrechen

heißen
Hier sollte eigentlich eine Signatur stehen!
 

buja

BeitragMi, Mai 14, 2008 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ändert leider auch nicht, wenn ich das ".eg_button" wegmache.
Es reagiert immer noch nicht.
...

Noobody

BeitragMi, Mai 14, 2008 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
 Fenster_Neu\Visible = False


So wird es unsichtbar.
Ausserdem brauchst du die Position des Fensters nicht mit GraphicsWidth/Height zu berechnen - schliesslich gibt es ja den Tag EG_Center, denn man bei der Positionsangabe angeben kann.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

buja

BeitragMi, Mai 14, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch das bringt leider nichts Sad

Bei Klick auf Abbrechen sieht man das fenster_neu immer noch Sad


HAt jemand noch ne idee? sonst werd ich das so dastehen lassen müssen, sonst schaffe ich den rest nicht bis ende mai.
...

Noobody

BeitragMi, Mai 14, 2008 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann machst du irgendetwas falsch.
Das Fenster wird nämlich nur gezeichnet, wenn EG_Window\Visible auf 1 gesetzt wird.
Das heisst, dass du es vermutlich nicht auf False setzt, wenn es trotzdem noch da ist.
Mach mal probehalber ein Stop in den Block, in dem du das Fenster verschwinden lässt, und überprüfe dort mal, ob es überhaupt aufgerufen wird.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

buja

BeitragMi, Mai 14, 2008 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm..
Ich werde hier mal den Source Code posten, ich hoffe dass niemand abguckt oder 1:1 kopiert, und selbst wenn, es ist noch kaum fortgeschritten.. Very Happy

Ich benutze den IDEal editor, falls der Code komisch aussieht.

(der code wird nicht laufen)

Code: [AUSKLAPPEN]

;Versionsnummer:
version# = 0.01



;Screen Settings
;-------------------------------------------------------------------------

Global x_aufloesung = apigetsystemmetrics(0)   ;Gleich Desktop Auflösung mit USER LIB
Global y_aufloesung = apigetsystemmetrics(1)   ;GLEICH Desktop Auflösung mit USER lIB
Global z_farbtiefe = 32      ;32bit für Detailtreue^^
Global modus = 2         ;Skalierbares Fenster


;Allgemeine Settings
;-------------------------------------------------------------------------
Type dokument         ;Erstelle ein Type gültig für alle Dokumente mit name,pfad und auflösung
   Field name$         ; Beispiel: name$ = "picture"
   Field x,y         ;Die Auflösungen (selbsterklärend^^)
   Field pfad$         ;Der "echte Pfad" ergibt sich aus  'pfad$ + name$' + Dateiart beim SaveDialog
End Type
Global temp_image

Global dokumentexist = 0 ;Prüfwert ob ein Dokument grade bearbeitet wird oder nicht
Global CurrentTool = 0 ;0 = auswahl, 1 = radiergummi, 2 = stift, u.s.w (siehe image load befehle unten)
Global farbe = $000000




;Grapchis und Buffer
;-------------------------------------------------------------------------
Graphics (x_aufloesung,y_aufloesung,z_farbtiefe,modus) ;Graphicsmodus laden für Blitz3D
SetBuffer BackBuffer()                           ;Den Malbereich auf BackBuffer setzen.
HidePointer()                                 ;Die Windowsmaus verstecken (Die nervt beim Fenster-schieben)

Global framelimiter = CreateTimer(60)               ;FRAME-LIMITER Timer einstellen.


;[Block IMAGES LADEN FÜR TOOLBOX]
;IMAGES LADEN
;-------------------------------------------------------------------------

Global menuimage = LoadAnimImage ("system/png/iconline.png",17,17,0,3) ;DAS IMAGE FÜR DAS MENÜ mit save load new
Global closeimage = LoadImage ("system/png/CloseButton.jpg")         ;DAS IMAGE FÜR DAS BEENDEN IM DATEI MENÜ

Global img_auswahl = LoadImage ("system/png/toolbox/auswahl.png")
MaskImage (img_auswahl,255,0,255)

Global img_radiergummi = LoadImage("system/png/toolbox/radiergummi.png")
MaskImage (img_radiergummi,255,0,255)

Global img_stift = LoadImage("system/png/toolbox/stift.png")
MaskImage (img_stift,255,0,255)

Global img_eimer = LoadImage("system/png/toolbox/eimer.png")
MaskImage (img_eimer,255,0,255)

Global img_pinsel = LoadImage("system/png/toolbox/pinsel.png")
MaskImage (img_pinsel,255,0,255)

Global img_airbrush = LoadImage("system/png/toolbox/airbrush.png")
MaskImage (img_airbrush,255,0,255)

Global img_rechteck = LoadImage("system/png/toolbox/rechteck.png")
MaskImage (img_rechteck,255,0,255)

Global img_vieleck = LoadImage("system/png/toolbox/vieleck.png")
MaskImage (img_vieleck,255,0,255)

Global img_bogen = LoadImage("system/png/toolbox/bogen.png")
MaskImage (img_bogen,255,0,255)

Global img_kreis = LoadImage("system/png/toolbox/kreis.png")
MaskImage (img_kreis,255,0,255)

Global img_text = LoadImage("system/png/toolbox/text.png")
MaskImage (img_text,255,0,255)




;[End BLOCK]



;Dateien Includen für die GUI und Funktionen (NIEMALS VOR GRAPHICS() :D )
Include "system/escape.bb"              ;Die Haupt GUI
Include "system/eg_sawindow.bb"          ;Neues Fenster ohne Blitz3d Standard Fenster
Include "system/ImageFunctions.bb"       ;Bildmanipulationsbefehle


;Das GUI-Fenster öffnen und das BlitzBasic Fenster verstecken^^
;-------------------------------------------------------------------------
Global fenster_haupt.EG_Window = eg_create_SAwindow(0,-30,"CrazyPaint" + "v" + version# + "   by PE") ;NEUES FENSTER MIT WINDOWS AUFLÖSUNG
fenster_haupt\state = True
eg_draw_all()
eg_maus = False

;Jetzt das Menü und die Items
;[Block Menu]
Global Menu.eg_menuitem = eg_menu(fenster_haupt)                                       ;Das Menü-Handle

Global Datei.eg_menuitem = eg_menuitem(Menu,"Datei","")                                 ;EINTRAG DATEI

Global Neu.eg_menuitem = eg_menuitem(Datei,"Neu..           ","Strg + N",menuimage,2)                   ;DATEI --> Neu..
Global Offnen.eg_menuitem = eg_menuitem(Datei,"Öffnen..      ","Strg + O",menuimage,1)                  ;DATEI --> Öffnen..
Global Speichern.eg_menuitem = eg_menuitem(Datei,"Speichern unter..","Strg + S",menuimage,0)            ;DATEI --> Speichern Unter..
eg_menubrk (Datei)                                                         ;Waagerechte Trennlinie
Global Schliessen.eg_menuitem = eg_menuitem(Datei,"Beenden","",closeimage)                           ;DATEI --> Beenden

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Global Bearbeiten.eg_menuitem = eg_menuitem(Menu,"Bearbeiten","")                           ;EINTRAG BEARBEITEN

Global Ruckgangig.eg_menuitem = eg_menuitem(Bearbeiten,"Rückgängig","Strg + Z")               ;BEARBEITEN --> Rückgängig
Global Wiederholen.eg_menuitem = eg_menuitem(Bearbeiten,"Wiederholen","Strg + Y")               ;BEARBEITEN --> Wiederholen
eg_menubrk (Bearbeiten)                                                      ;trennlinie
Global Ausschneiden.eg_menuitem = eg_menuitem(Bearbeiten,"Ausschneiden","Strg + X")            ;BEARBEITEN --> Ausschneiden
Global Kopieren.eg_menuitem = eg_menuitem(Bearbeiten,"Kopieren","Strg + C")                  ;BEARBEITEN --> Kopieren
Global Einfugen.eg_menuitem = eg_menuitem(Bearbeiten,"Einfügen","Strg + V")                  ;BEARBEITEN --> Einfügen
eg_menubrk (Bearbeiten)
Global AllesAuswahlen.eg_menuitem = eg_menuitem(Bearbeiten,"Alles Auswählen","Strg + A")         ;BEARBEITEN --> Alles Auswählen
Global AuswahlAufheben.eg_menuitem = eg_menuitem(Bearbeiten,"Auswahl Aufheben","Strg + N")         ;BEARBEITEN --> Nichts Auswählen

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Global Ansicht.eg_menuitem = eg_menuitem(Menu,"Ansicht","")                              ;ANSICHT

Global GesamtBild.eg_menuitem = eg_menuitem (Ansicht,"Gesamtes Bild anzeigen","Strg + G")         ;ANSICHT --> Gesamtes Bild zeigen im Vollbildmodus


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Global Bild.eg_menuitem = eg_menuitem(Menu,"Bild","")                                    ;BILD MENÜ

Global Drehen.eg_menuitem =    eg_menuitem(Bild,"Drehen..","Strg + D")                        ;BILD --> Drehen..
Global Spiegeln.eg_menuitem =    eg_menuitem(Bild,"Spiegeln..","Strg + S + D")                  ;BILD --> Spiegeln..
Global Skalieren.eg_menuitem = eg_menuitem(Bild,"Skalieren..","Strg + T")                     ;BILD --> Skalieren..
Global Helligkeit.eg_menuitem =eg_menuitem(Bild,"Helligkeit..","Strg + B")                     ;BILD --> Helligkeit..
Global Kontrast.eg_menuitem =    eg_menuitem(Bild,"Kontrast..","Strg + K")                     ;BILD --> Kontrast..

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Global Filter.eg_menuitem = eg_menuitem(Menu,"Filter","")                                 ;FILTER MENÜ

Global Scharfen.eg_menuitem =       eg_menuitem(Filter,"Schärfen..","Strg + W")                  ;FILTER --> Schärfen
Global Weichzeichnen.eg_menuitem = eg_menuitem(Filter,"Weichzeichnen..","Strg + E")            ;FILTER --> Weichzeichnen
Global Solarisieren.eg_menuitem =    eg_menuitem(Filter,"Solarisieren..", "Strg + J")            ;FILTER --> Solarisieren
Global Kolorieren.eg_menuitem =    eg_menuitem(Filter,"Kolorieren..","Strg + F")               ;FILTER --> Kolorieren
Global Pragen.eg_menuitem =       eg_menuitem(Filter,"Prägen..","Strg + P")                  ;FILTER --> Prägen
Global Graustufen.eg_menuitem =    eg_menuitem(Filter,"Graustufen","Strg + G")                  ;FILTER --> Graustufen
Global Invertieren.eg_menuitem =    eg_menuitem(Filter,"Invertieren..","Strg + I")               ;FILTER --> Invertieren
Global Diffuser.eg_menuitem =       eg_menuitem(Filter,"Diffuser..","Strg + H")                  ;FILTER --> Diffuser

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Global Uber.eg_menuitem = eg_menuitem(Menu,"Über..","")                                 ; ABOUT MENÜ


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[End Block]

;[Block Toolbox]
toolbox.eg_frame = eg_frame(fenster_haupt,0,0,1680/30,1050/5,"Toolbox") ;Damit die Proportionen stimmen

auswahl.EG_ImgButton =    EG_ImgButton    (fenster_haupt,2,13,img_auswahl,0,"Rechteckige Auswahl",False,False)
radiergummi.EG_ImgButton = EG_ImgButton (fenster_haupt,34,13,img_radiergummi,0,"Radiergummi",False,False)

stift.EG_ImgButton = EG_ImgButton       (fenster_haupt,2,35,img_stift,0,"Stift",False,False)
eimer.EG_ImgButton = EG_ImgButton       (fenster_haupt,34,35,img_eimer,0,"Eimer",False,False)   ; X-Abstand 32: Y-Abstand 22

pinsel.EG_ImgButton = EG_ImgButton       (fenster_haupt,2,(35+22),img_pinsel,0,"Pinsel",False,False)
airbrush.EG_ImgButton = EG_ImgButton    (fenster_haupt,34,(35+22),img_airbrush,0,"Airbrush",False,False)

rechteck.EG_ImgButton = EG_ImgButton    (fenster_haupt,2,(35+22*2),img_rechteck,0,"Rechteck",False,False)
vieleck.EG_ImgButton = EG_ImgButton    (fenster_haupt,34,(35+22*2),img_vieleck,0,"Vieleck",False,False)

bogen.EG_ImgButton = EG_ImgButton    (fenster_haupt,2,(35+22*3),img_bogen,0,"Bogen",False,False)
kreis.EG_ImgButton = EG_ImgButton    (fenster_haupt,34,(35+22*3),img_kreis,0,"Kreis",False,False)

Text.EG_ImgButton = EG_ImgButton   (fenster_haupt,2,(35+22*4),img_text,0,"Text",False,False)



;Jetzt das Bildmenü Button
Global hintergrund = CreateImage (50,30)
Farbauswahl.EG_ImgButton = EG_ImgButton (fenster_haupt,2,(55+22*5),hintergrund,1,"Farbauswahl",False,False)



;[End BLOCK]

;[Block Malbereich]

blatt.eg_image = eg_image(fenster_haupt,1680/30+10,0,temp_image)




;[End block]

;[Block Neues Dokument Fenster]
Global fenster_neu.EG_Window = EG_Window(GraphicsWidth()/2,GraphicsHeight()/2,300,150,"Neues Dokument öffnen",5)
fenster_neu.EG_Window\visible = False
eg_draw_all()
eg_windowactive(fenster_haupt)

;Jetzt die Label, Eingabefelder und Button machen

Global label_1.eg_label = eg_label(fenster_neu,20,1,100,20,Chr$(4)+"Eigenschaften:" )
Global label_breite.eg_label = eg_label(fenster_neu,30,20,100,20,"Breite:")
Global text_breite.eg_input = eg_input(fenster_neu,30+100,20,100,"",4,False,False)

Global label_hohe.eg_label =  eg_label(fenster_neu,30,40,100,20,"Höhe:")
Global text_hohe.eg_input = eg_input(fenster_neu,30+100,40,100,"",4,False,False)

Global ok.eg_button = eg_button(fenster_neu,50,100,100,20,"Ok")
Global abbrechen.eg_button = eg_button(fenster_neu,180,100,100,20,"Abbrechen")



;[End block]







;[Block Hauptschleife]
;HAUPT_SCHLEIFE^^
;-------------------------------------------------------------------------
Repeat
   
   Cls                                 ;selbsterklärend^^
   
   
   
   
   eg_move_SAwindow(fenster_haupt)            ;Prüfen ob Fenster bewegt wird
   
   eg_main()                           ;Hauptroutine der GUI
   Farbauswahl()                        ;Farbauswahl aufrufen (im Toolbox Frame)
   
   
   
         ;EVENTS PRÜFEN
   ;-------------------------------------------------------------------------
   If eg_event_imgbutton = Farbauswahl.EG_ImgButton Then farbe = eg_colorpicker(farbe)   ;FARB ASUWAHL DIALOG ÖFFNEN
   
   ;DAtei --> Neu
   If eg_event_menuitem = Neu.eg_menuitem Then NewDocument()                     ;Neues Dokument Dialog öffnen
   
   
   
   
   If eg_event_window = fenster_haupt Then Exit ;Bei Close Button schließen
   WaitTimer framelimiter                   ;Der Frame-Limiter^^ Wir wollen ja keine 100% Auslastung bei Paint^^
   Flip 0
Forever

eg_exit()
   










   
   





;[End block]






;=========================================================================
;#########################################################################
;FUNCTIONS



;Neues Dokument erstellen
;-------------------------------------------------------------------------
Function NewDocument()
   eg_windowactive(fenster_neu)   ;Fokus auf Neu-Dokument Fenster
   eg_window_stable = True               ;Wechseln zwischen 2 Fenstern verhindern.
   eg_draw_all()                     ;Änderungen wirksam machen
   
   
   If eg_event_button = abbrechen
      fenster_neu\Visible = False
      eg_windowactive(fenster_haupt)
      eg_window_stable = False
      eg_draw_window(fenster_haupt)
      
   EndIf
   
   
   
End Function   


;Farbauswahlbutton im Frame Toolbox aktivieren
;-------------------------------------------------------------------------
Function Farbauswahl()
   LockBuffer ImageBuffer(hintergrund)
   SetBuffer ImageBuffer(hintergrund)
   
   For i = 1 To 50
      If farbe = $000000 Then farbe = $010101 : state = 1 ;Das ist notwendig weil die GUI irgendwie $000000 nicht darstellt^^
      For f = 1 To 30
         WritePixelFast(i,f,farbe)
      Next
   Next
   UnlockBuffer ImageBuffer(hintergrund)
   SetBuffer BackBuffer()
   If state = 1 Then farbe = $000000 ;Die Farbe wieder zurückstellen, damit das Bild nicht verfälscht wird^^
End Function


;HTML FARBWERTE in R,G,B umrechnen
Function umrechnen()
   RGB%  = $3454FFFF
; $11223344 Shr 24 = $00000011
   Alpha% = ARGB Shr 24
   
; $11223344 Shr 16 = $00001122
;
;     $00001122
; And $000000FF
; -------------
;     $00000022
   Red%   = (ARGB Shr 16) And $000000FF
   
   
; $11223344 Shr 8 = $00112233
;
;     $00112233
; And $000000FF
; -------------
;     $00000033
   Green% = (ARGB Shr 8)  And $000000FF
   
;     $11223344
; And $000000FF
; -------------
;     $00000044
   Blue%  = ARGB And $000000FF
   
End Function
...
  • Zuletzt bearbeitet von buja am Do, Jan 29, 2009 16:26, insgesamt einmal bearbeitet

Noobody

BeitragMi, Mai 14, 2008 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, du überprüfst den Button nur, wenn du gerade das Fenster öffnest (nur kurz in der Funktion New_Document).
Du musst es die ganze Zeit überprüfen, während das Fenster gerade sichtbar ist (und zwar in der Hauptschleife).

In der Art von: Code: [AUSKLAPPEN]
 If Fenster_Neu\Visible And EG_Event_Button = ....
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

buja

BeitragDo, Mai 15, 2008 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für deine hilfe Smile
...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group