Mouse-Position Problem

Anfängerfragen zum Programmieren mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Mouse-Position Problem

Beitrag von Tombi »

Erst der Code, dann das Problem :mrgreen:

Code: Alles auswählen


;Ab hier sind Variablen vorhanden, die vorher definiert werden, wurde
;bereits gebuggt. Also an diesen Variablen liegt`s nicht...
menuon = 1
menuwidth = 50
menuheight = 50

Procedure Click_Menu()
  If menuon 
    
    MouseX = MouseX()
    MouseY = MouseY()
    t = 0
    
    ResetList(Menu())
    While NextElement(Menu())
    t+1
    z = screenX-(t*menuwidth-menuwidth)
    
    If MouseX >= screenX-(t*menuwidth) And MouseY < menuheight And MouseX <= z
      Debug "Name des ausgewählten Menus: "+Menu()\Name
    EndIf
    
    Wend   
  EndIf
EndProcedure
Funktioniert nun so halb. Es soll also oben rechts das eingefügte Menü verlinkt werden.
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

du stellt immer wieder nur solche halben fragen.

1. Der Code den du postest, sollte ausführbar sein, damit man das Problem selber sehen kann.
2. Es reicht nicht nur das zu Posten wo du denkst das dort der Fehler liegen könnte, auch wenn du allesdebbugt hast.

EDIT da feht die 4. Bedingung der MausFläche:
vllt hilft dir das hier:

Code: Alles auswählen

Procedure MouseInBox(x,y,Width,Height)
 If MouseX() > x And MouseX() < x+Width And MouseX() > y And MouseX() < y+Height
  ProcedureReturn 1
 EndIf
EndProcedure
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
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Nicht nur im Menu oben rechts wird "Bereich" im Debug-Fenster angezeigt, sondern auch in Abständen untendrunter, aber nur unter`m Menu, nicht links davon.

Code: Alles auswählen

Procedure Click_Menu()
  If menuon 
    
    MouseX = MouseX()
    MouseY = MouseY()
    t = 0
    
    ResetList(Menu())
    While NextElement(Menu())
    t+1
    z = screenX-(t*menuwidth-menuwidth)
    menuheight = 50
    If MouseX > screenX-(t*menuwidth)  And MouseX <= z And MouseY < menuheight And MouseY > 0
      Debug menuheight
    EndIf
    
    Wend   
  EndIf
EndProcedure
Wenn ich jetzt MouseY < menuheight in MouseY < 50 umändere, habe ich keine Probleme. menuheight enthält jedoch die Zahl 50. Auch wenn ich Sie 1 Schritt vorher neu setze auf 50 habe ich das gleiche Problem.

Kann es schlecht beschreiben.
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Es fehlt außerdem das Gleichheitszeichen: "x >= width" & "y >= height"
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Fluid Byte hat geschrieben:Es fehlt außerdem das Gleichheitszeichen: "x >= width" & "y >= height"
Ändert nicht mein Problem!
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Poste erstmal lauffähigen code, dann reden wir vielleicht weiter.
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

ich krieg bei deinem code nur:

Code: Alles auswählen

Zeile : 14
Menu() is not a function, array, macro or linked list
edit: oh zu langsam ;)
PureBasic 4.40 (Windows - x86)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Bin zu Faul das alles in eine Datei zu quetschen. Vorallem wegen den ganzen Ini-Dateien. Hoffe jemand ist so nett und schaut sich das genauer an.

Oben genannte Procedure in: Menu_draw.pb
Start-Datei in: Start.pb

Download
Dateien.zip
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

ich würde mir mal die variablentypen ansehen, aber hab dazu grad keine lust. also mußt du dich wohl dazu aufraffen, auch wenns schwer fällt :mrgreen:

ein lauffähiges beispiel<>der ganze code
wozu gibts copy&paste. kopier die relevanten teile zusammen und teste/poste
pb 4.51 win7 64
Antworten