Button drücken funzt nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mavi

Betreff: Button drücken funzt nicht

BeitragSo, Nov 22, 2009 2:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ihrs,

Ich habe folgenes Problem, ich habe einen ButtonFunktion geschrieben, wenn ich mit der Maus drüber fahre, dann öffnet sich wie gewünscht ein neues fenster, aber wenn ich an die abfrage ein MouseHit(1) oder MouseDown(1) dranhänge funktioniert es nicht! Könnt ihr mir weiter helfen?

Code: [AUSKLAPPEN]
Function button(button_x,button_y,button_width, button_height,button_text$)
   Rect button_x,button_y,button_width,button_height,0
   Text button_x+5,button_y+5, button_text$
   
   If mx>button_x And my>button_y And mx<button_x+button_width And my<button_y+button_height Then
      
      button_w=True
   EndIf
   
   If button_w Then
      CreateWindow(200,50,250,200,"Button INC",192,192,192)
   EndIf
End Function

ozzi789

BeitragSo, Nov 22, 2009 2:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann es sein das du Mousehit schon mal wo anders in deinem Programm benützt?
bei mehrmaligem abrufen klappt das ganze nicht richtig (in einer schleife)

mh=Mousehit(1)
und anstatt jedes mal mousehit abzurufen schaust du was in mh steht

mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hazumu-kun

BeitragSo, Nov 22, 2009 3:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Createwindow hat so viele Parameter, es scheint das du dir selber was gebastelt hast,
ohne mehr Code kann ich nur sagen das deine If-Abfrage so lauten könnte:

BlitzBasic: [AUSKLAPPEN]

If mx>button_x And mx<button_x+button_width Then
If my>button_y And my<button_y+button_height Then
button_press= (MouseHit(1)Mod 2)
EndIf
EndIf


EDIT:
MIST! Zu langsam!
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

mavi

BeitragSo, Nov 22, 2009 3:37
Antworten mit Zitat
Benutzer-Profile anzeigen
mousehit oder mousedown habe ich KEIN weiteres mal benutzt!

hazumu-kun

BeitragSo, Nov 22, 2009 3:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann musst du mehr von deinem Code posten.
Vielleicht ist in der Hauptschleife was kaputt.

<offtopic> Immer diese Nachtaktiven! Very Happy </offtopic>
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

M0rgenstern

BeitragSo, Nov 22, 2009 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, villeicht solltest du die Abfrage für Mousedown bzw Mousehit mitposten, denn ich kann die in deinem Code nirgendwo finden.
Ich mach das immer so: Ich geb jedem Button eine Variable. Von mir aus LoadOver. Wenn die Maus dann über dem LadeButton ist, dann ist LoadOver 1 Und dann halt die Abfrage für jeden Button:

Code: [AUSKLAPPEN]
If Mousedown(1) and LoadOver = 1 then . . .


Und sobald die Maus nicht mehr auf dem Button ist einfach die Variable auf 0 setzen.
Das funktioniert prima.

Lg, M0rgenstern
 

mavi

BeitragSo, Nov 22, 2009 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
AppTitle "Database"
Graphics 800,600,16,0
SetBuffer BackBuffer()

;''''''''''''''''
Include "C:\Dokumente und Einstellungen\notebook\Eigene Dateien\BB\GUI\gui.bb"
;''''''''''''''''
Global timer=CreateTimer(25)








;''''MAINLOOP''''
Repeat
CreateWindow(0,0,800,600,"my.Database",192,192,192)
table(190,50,6,10)




WaitTimer(timer)
Flip:Cls
Until KeyHit(1):End
Code: [AUSKLAPPEN]
Global border = LoadImage("border.jpg")
font1 = LoadFont("Verdana")
SetFont font1
Global texts$
Global apptxtx,apptxty
Global mh = MouseDown(1)
Global mx,my
Global button_x, button_y, button_width, button_height, button_text$




Function CreateWindow(x,y,gx,gy,title$,r,b,g)

   APPTXTX = x
   APPTXTY = y
   For i = 1 To gx
      DrawImage border, x,y
      x=x+1
   Next
   
   Text APPTXTX+2.5,APPTXTY+2.5, title$
   
   Color r,b,g
   Rect APPTXTX+0.25,APPTXTY+20,gx,gy,1
   
   Color 255,255,255

End Function


Function IO(tfx,tfy)
      
   local_key = GetKey()
   If local_key >= 32 And local_key < 127 Then
      
         antwort$ = Chr$ (local_key)
         texts$ = texts$ + antwort$
      
   EndIf
 
   If KeyHit(211) Or KeyHit(14) Then
      If Len(texts$) > 0 Then
         texts$ = Left(texts$,Len(texts$)-1)
      EndIf
   EndIf
      ;CORDS für Eingaberoutine eingeben
      Rect tfx,tfy, 150,20,0
      Text tfx+5,tfy+5, texts$
   
   If KeyHit(28) Then
      newtext$ = texts$   
   EndIf
   Text 10,10, newtext$
End Function

Function table(table_x,table_y,fields,rows)
   tyv = table_y
   For ii = 1 To fields
      For i=1 To rows
       Rect table_x, table_y, 100,25,0
       table_y = table_y + 25
      Next
      table_x = table_x + 100
      table_y = tyv
   Next
End Function

Function button(button_x,button_y,button_width, button_height,button_text$)
   Rect button_x,button_y,button_width,button_height,0
   Text button_x+5,button_y+5, button_text$
   
   If mx>button_x And my>button_y And mx<button_x+button_width And my<button_y+button_height And KeyHit(57) Then
      button_w=True
   EndIf
   
   If button_w Then
      CreateWindow(200,50,250,200,"Button INC",192,192,192)
   EndIf
End Function

Thunder

BeitragSo, Nov 22, 2009 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
mx, my und mh nehmen nicht einfach die Werte an, die du haben willst. Du musst sie ihnen schon zuweisen:
BlitzBasic: [AUSKLAPPEN]

Repeat
mh=MouseHit(1)
mx=MouseX()
my=MouseY()
;Aktualisierung deines Windows
;...
Until KeyHit(1)
End


Aja. Falls du deine GUI häufiger verwenden willst, also für mehrere Projekte, würde ich dir empfehlen die aktualisierung dieser Variablen in eine GUI-Funktion zu verlegen.


mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group