Seite 2 von 4

Verfasst: 10.08.2007 12:57
von Yoshi

Code: Alles auswählen

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 213, -5, 620, 470, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 0, 0, 599, 450, Image0)
      ScrollBarGadget(#ScrollBar_0, 0, 450, 620, 20, 0, 10, 3)
      ScrollBarGadget(#ScrollBar_1, 600, 0, 20, 450, 0, 10, 3, #PB_ScrollBar_Vertical)
      ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
    EndIf
    If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
      CreateSprite(0,250,250)
      LoadSprite(0,"Parabel.bmp",0)
      TransparentSpriteColor(0,RGB(0,255,0))
  EndIf
EndProcedure
Jetzt meckert er nicht mehr. :D

Muss ich jetzt noch ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
rausnhgemen?

Verfasst: 10.08.2007 14:44
von Yoshi
Also ich habe jetzt mal ein bisschen getestet und jedes mal wenn ich auf "Complimieren/Starten" klicke und er mir das Fenster öffnet kommt "PureBasic1.exe hat ein Problem festgestellt und muss beendet werden."

Code: Alles auswählen

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 213, -5, 620, 470, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 0, 0, 599, 450, Image0)
      ScrollBarGadget(#ScrollBar_0, 0, 450, 620, 20, 0, 10, 3)
      ScrollBarGadget(#ScrollBar_1, 600, 0, 20, 450, 0, 10, 3, #PB_ScrollBar_Vertical)
      ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
    EndIf
    If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
      CreateSprite(0,250,250)
      LoadSprite(0,"Parabel.bmp",0)
      TransparentSpriteColor(0,RGB(0,255,0))
    EndIf
  EndIf
EndProcedure

If Open_Window_0()
  Select WindowEvent() 
      Case #PB_Event_Menu 
        Select EventMenu()
          Case 1
            MessageRequester("Test","Teeeeeeeeeeeeeeest!",0)
        EndSelect
  EndSelect
EndIf
End

Verfasst: 10.08.2007 14:54
von Kiffi
Yoshi hat geschrieben:

Code: Alles auswählen

If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
PB-Debugger hat geschrieben:InitSprite() must be called before using 'Screen' commands.
Grüße ... Kiffi

Verfasst: 10.08.2007 14:59
von Yoshi
Jetzt bleibt das Fenster nicht mehr offen.

Verfasst: 10.08.2007 15:07
von Kiffi
Yoshi hat geschrieben:Jetzt bleibt das Fenster nicht mehr offen.
Ägypten? Kannst Du Dich ein wenig verständlicher ausdrücken?

Verfasst: 10.08.2007 15:09
von Yoshi
Das Febster bleibt 1 Millisekunde lange offen und schließt sich anschließend wieder!

Verfasst: 10.08.2007 15:13
von Kiffi
Yoshi hat geschrieben:Das Febster bleibt 1 Millisekunde lange offen und schließt sich anschließend wieder!
ja, da fehlt die Repeat-Until-Schleife um die Abfrage der Events.

und jetzt erzähl uns bitte nicht, dass Du nicht weißt, was eine Event-Schleife ist.
Das ist Dir hier im Forum oft genug erklärt worden.


Grüße ... Kiffi

Verfasst: 10.08.2007 21:48
von Yoshi
Danke.

Jetzt hab ich nóch eine Frage zum ScrollBarGadget. Ich habe in einem Fenster ein Koodinatensystem und eine Parabel, die ich mit Hilfe des ScrollbarGadgets nach links,rechts,oben und unten verschieben möchte.

Kann ich dann in meinem Quelltext schreiben

Code: Alles auswählen


If #ScrollBar_0 +1
  Then ImageGadget(#Image_2, 190, 100, 251, 250, Image1)
EndIf
If #ScrollBar_0 +2 
  Then ImageGadget(#Image_2, 190, 100, 252, 250, Image1)
(In der Prozedur ist Image1 so angegeben:

Code: Alles auswählen

ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
)

oder wäre es besser so zu schreiben:

Code: Alles auswählen

If #ScrollBar_0 =1
  ImageGadget(#Image_2, 190, 100, 251, 250, Image1)
EndIf
If #ScrollBar_0 =2
  ImageGadget(#Image_2, 190, 100, 252, 250, Image1)
EndIf

Verfasst: 10.08.2007 22:30
von Fluid Byte
Du überprüfst in deinem IF/THEN block der Wert einer Konstante! Diese ändert sich aber nicht. Benutze eine normale Variabel.

Verfasst: 10.08.2007 22:36
von Kaeru Gaman
ne, das müsste ja eher

Code: Alles auswählen

NewValue = GetGadgetState(#ScrollBar_0)
If NewValue  <> OldValue
  If NewValue  > OldValue
    ; scrolled to the right
  Else
    ; scrolled to the left
  EndIf
  OldValue = NewValue  
EndIf
sein, oder irgendsowas...