problem mit meiner gui

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: problem mit meiner gui

BeitragDi, Mai 11, 2010 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
problem mit meinem gui versuch

ich hab alles vorbereitet, windows könn erstellt werden und in deren fenster auch buttons, das prob is nur das ich nich auf ein button klicken kann bzw. nich drauf reagiert wird.


mein code:
Code: [AUSKLAPPEN]
Global MouseImage,WindowImage

Global Window.Window
Global Button.Button
Global WindowID
Type Window
   Field X,Y,W,H,ID
   Field Activ
   Field Name$
End Type

Type Button
   Field X,Y,W,H,ID
   Field Status
   Field Name$
   Field Window.Window
End Type

Function MosMouseX()
   Return MouseX()
End Function

Function MosMouseY()
   Return MouseY()
End Function

Function MosMouseB()
   If MouseDown(1) Then Return 1
   If MouseDown(2) Then Return 2
   Return 0
End Function

Function MosGuiUpdate()
   DrawWindow()
   DrawButton()
   CheckWindow()
   CheckButton()
   
   DrawMosMouse()
End Function

Function DrawMosMouse()
   DrawImage MouseImage,MosMouseX(),MosMouseY()
End Function

;Styles Laden
Function MosStyleLoad(Mouse$,Windows$)
   MouseImage=LoadImage (Mouse$+"Mouse_0.BMP")
   MaskImage MouseImage,255,0,255
   
   mostdatei=LoadImage (Windows$+"Window_0.BMP")
   mostx=ImageWidth(mostdatei)/3
   mosty=ImageHeight(mostdatei)/6
   WindowImage=LoadAnimImage(Windows$+"Window_0.BMP",mostx,mosty,0,18)
   MaskImage WindowImage ,255,0,255
End Function

;Button
Function NewButton.Button(window.Window ,name$,X,Y,W,H)
   Button=New Button
   Button\X=X
   Button\Y=Y
   Button\W=W
   Button\H=H
   Button\Name$=name$
   window.Window=window.Window
   
   Return (Button)
End Function

Function CheckButton()
   For Button = Each Button
      If(Button\Window.Window = Last Window)
         Button\Status = False
         If MosMouseB()=1 And MosMouseX()>Button\X And MosMouseX()<Button\X+Button\W And MosMouseY()>Button\Y And MosMouseY()<Button\Y+Button\H Then
            Button\Status=True
            End
         EndIf
      EndIf
   Next
End Function

Function DrawButton()
   For Button=Each Button
      Color 0,0,255
      Rect Button\X,Button\Y,Button\W,Button\H
   Next
End Function

;Window
Function NewWindow.Window(name$,X,Y,W,H)
   Window=New Window
   Window\X=X
   Window\Y=Y
   Window\W=W
   Window\H=H
   Window\Name$=name$
   Window\ID=WindowID
   
   WindowID=WindowID+1
   Return (Window)
End Function

Function DrawWindow()
   For Window=Each Window
      If Window\Activ=1 Then Color 255,0,0
      If Window\Activ=0 Then Color 255,255,255
      Rect Window\X,Window\Y,Window\W,Window\H
   Next
End Function

Function CheckWindow()
   For Window=Each Window
      If MosMouseB()=1 Then
         If MosMouseX()> Window\X And MosMouseX()<Window\X+Window\W And MosMouseY()>Window\Y And MosMouseY()<Window\Y+Window\H Then
            Window\Activ=1
         Else
            Window\Activ=0
         EndIf
      EndIf
   Next
   
   For Window=Each Window
      If Window\Activ=1 Then id=Window\ID
   Next
   For Window=Each Window
      If Window\ID=id Then
         Insert Window After Last Window
      Else
         Window\Activ=0
      EndIf
   Next
End Function






Temp=ReadFile("Data\System\CFG.mos")
Global MosScreenX=Int(ReadLine(temp))
Global MosScreenY=Int(ReadLine(temp))
Global MosBackground$=ReadLine(temp)
Mouse$=ReadLine(temp)
Windows$=ReadLine(temp)
CloseFile temp
Graphics MosScreenX,MosScreenY,16,2

MosStyleLoad(mouse$,Windows$)

Global mathias.Window=NewWindow("Test",20,20,270,185)
Global test.Window=NewWindow("Test",50,90,270,185)

Global beenden.Button =NewButton(mathias,"Test",50,30,100,22)

SetBuffer BackBuffer()
Repeat
   Cls
   MosGuiUpdate()
   
   If(beenden\Status) End
   
   
   
   Flip 0
Until KeyDown(1)
End

Xeres

Moderator

BeitragDi, Mai 11, 2010 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function MosMouseX()
   Return MouseX()
End Function

Function MosMouseY()
   Return MouseY()
End Function
Das sorgt prinzipiell nur für eine Verlangsamung - Kurze Globale Variablen wären für Maus Position und Klicks eine bessere Wahl.

Und: Welche Reaktion erwartest du denn?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Di, Mai 11, 2010 15:08, insgesamt einmal bearbeitet

Thunder

BeitragDi, Mai 11, 2010 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
[Edit: Was hier vorher stand passte nicht mehr weil Xeres' Beitrag nicht mehr derselbe ist.]

Du hast was ziemlich wichtiges vergessen:

BlitzBasic: [AUSKLAPPEN]
Function NewButton.Button(window.Window ,name$,X,Y,W,H)
Button=New Button
Button\X=X
Button\Y=Y
Button\W=W
Button\H=H
Button\Name$=name$
Button\Window=window ; Fehlte!
window.Window=window.Window

Return (Button)
End Function
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Mathias-Kwiatkowski

BeitragDi, Mai 11, 2010 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
okey dann noch die frage, wenn ich ein button erstelle, x30 solls windowX + die 30 sein wie kann ich das machen? fehlt dazu auh was im code? und wenn ich ein fenster verschiebe, soll der button auto mitgeschoben werden, wie kan ich das am besten machen?

Xeres

Moderator

BeitragDi, Mai 11, 2010 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn jeder Button immer zu einem Fenster gehört, spricht nichts dagegen, dass die Button-Koordinaten sich immer auf sein Fenster beziehen...
Code: [AUSKLAPPEN]
Function DrawButton()
   For Button=Each Button
      Color 0,0,255
      Rect Button\Window\x+Button\X,Button\Window\y+Button\Y,Button\W,Button\H
   Next
End Function

Und:
Code: [AUSKLAPPEN]
window.Window=window.Window
Das ist gleichermaßen wahr wie nutzlos Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group