Variable in Gadget einfügen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Variable in Gadget einfügen

Beitrag von Dark Skillu »

Hallo ich würde gerne die Postition der Maus in 2 Variablen speichern und in ein Gadget einfügen lassen. Das Problem ist, dass

Code: Alles auswählen

Setgadgettext()
keine Variablen sondern nur Strings unterstützt in die ich keine Zahlen speichern kann soweit ich weiß?Hat jemand eine Lösung, ich könnte natürlich unter den Buttons einen Sprite erstellen, in den ich immer den Wert von den Variablen zeichnen lassen könnte.Ich hoffe ihr versteht mein Problem.

Hier der Code:

MfG DarkSkillu

Code: Alles auswählen

InitSprite()
InitMouse()
If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    ButtonGadget(1,340, 10,60,20,"Button 1")
    ButtonGadget(2,340, 40,60,20,"Button 2")
    ButtonGadget(3,340, 70,60,20,"Button 3")
    TextGadget  (4,340,110,60,30  ,"")
EndIf

If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
  CreateSprite(0,20,20)
EndIf

StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()

y = MouseX() 
x = MouseY() 

Repeat 

If WindowEvent() = #PB_Event_CloseWindow
 quit=1
EndIf

ClearScreen(RGB(0,0,0))
DisplaySprite(0, 50, 50)
FlipBuffers()

SetGadgetText(4,x+y)

Until quit=1
Edit: Habs mit dem zeichnen versucht aber Drawtext() unterstützt auch nur strings ...
Zuletzt geändert von Dark Skillu am 28.05.2007 00:06, insgesamt 1-mal geändert.
Ich benutze PureBasic 4.0.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

z.B.

Code: Alles auswählen

SetGadgetText(4,Str(x)+ "," + Str(y))
Mit Stringfield wieder trennen und mit val den Wert ermitteln.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Danke funktioniert, habe aber das Problem, dass sich der Wert ändetr aber der Mauszeiger nciht mehr angezeigt wird

Code: Alles auswählen

InitSprite()    
InitMouse()


If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    ButtonGadget(1,340, 10,60,20,"Button 1")
    ButtonGadget(2,340, 40,60,20,"Button 2")
    ButtonGadget(3,340, 70,60,20,"Button 3")
    TextGadget  (4,340,110,60,30  ,"") 
EndIf

If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
  CreateSprite(0,20,20)
EndIf

StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()



Repeat 
ExamineMouse() 

If WindowEvent() = #PB_Event_CloseWindow
 quit=1
EndIf

ClearScreen(RGB(0,0,0))
DisplaySprite(0, 50, 50)
FlipBuffers()

y = MouseX() 
x = MouseY() 
SetGadgetText(4,Str(x)+ "," + Str(y))

Until quit=1
Ich benutze PureBasic 4.0.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Versuch es mal so :

Code: Alles auswählen

Repeat
  ExamineMouse()
  x = MouseX()
  y = MouseY()
  
  event = WaitWindowEvent(1)
  
  If event = #WM_MOUSEMOVE
    SetGadgetText(4,Str(x)+ "," + Str(y))
  EndIf
  
  ClearScreen(RGB(0,0,0))
  DisplaySprite(0, x, y)
  FlipBuffers()
  
Until event = #PB_Event_CloseWindow
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

Beitrag von Olaf »

Nun ja...das ist eigentlich ganz logisch, dass die Maus nicht mehr angezeigt wird. Denn sobald du die Maus für deinen Screen zur Abfrage verwendest, wird sie für Windows gesperrt. Kannst's mal mit WindowMouseX/Y() probieren. Dann is se noch da :wink:
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

kleiner demo-code zur benutzung der maus im windowed screen:

http://www.purebasic.fr/german/viewtopic.php?t=11280
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Danke Dein Code funktioniert Edel, aber ich hzabe das problem, dass ich die Box nicht außerhalb des Sprites bewegen kann, also wie soll ich das Fenster schließen und ich würde gerne einfach nur die normale Standard maus haben. Vielleicht habe ich mich auch falsch ausgedrückt. Außerdem werden die Buttons nciht mehr angezeigt.Ich würde gerne einfach in dem Text-Gadget die Koordinaten meiner Maus angegeben haben.
Ich benutze PureBasic 4.0.
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

Beitrag von Olaf »

Probiers mal so:

Code: Alles auswählen

InitSprite()

If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    If OpenWindowedScreen(WindowID(0),5,5,320,300,0,85,5)
        CreateSprite(0,20,20)
    EndIf
    ButtonGadget(1,340, 10,60,20,"Button 1")
    ButtonGadget(2,340, 40,60,20,"Button 2")
    ButtonGadget(3,340, 70,60,20,"Button 3")
    TextGadget  (4,340,110,60,30  ,"")
EndIf

StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()



Repeat

If WindowEvent() = #PB_Event_CloseWindow
 quit=1
EndIf

ClearScreen(RGB(0,0,0))
DisplaySprite(0, x-5, y-5)
FlipBuffers()

x = WindowMouseX(0)
y = WindowMouseY(0)
If x>=0 And x<=410 And y>=0 And y<=310
  SetGadgetText(4,Str(x)+ "," + Str(y))
Else
  SetGadgetText(4,"-,-")
EndIf

Until quit=1
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol:
Benutzeravatar
Dark Skillu
Beiträge: 103
Registriert: 18.03.2007 15:03

Beitrag von Dark Skillu »

Danke funktioniert, wie schaffe ich es, dass außerhalb des Sprites meine Maus normal ist und innerhalb des Sprites ein Fadenkreuz?Ich habe mir gedacht ich setze an die Koordinaten des Mauszeigers ein Bild/Sprite müsste aber ja irgendwie erreichen, dass der Mauszeiger selber nicht mehr dargestellt wird, sieht ja nicht so toll aus, wenn über dem Fadenkreuz der Mauszeiger immer ist ...

Ich habe jetzt versucht, dass eine gezeichnete Box von links nach rechts über den Sprite "wandert", dabei wird die Position auf der Y-Position per Zufall bestimmt, anstatt der Box würde ich dann nachher z.B. nen Moorhuhn nehmen etc. . Mein Problem ist, dass die Box wenn sie rechts angekommen ist , links wieder neu erscheint und ich es nicht schaffe, dass mehrere Bpxen erscheinen.
Ich benutze PureBasic 4.0.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Danke funktioniert, wie schaffe ich es, dass außerhalb des Sprites meine Maus normal ist und innerhalb des Sprites ein Fadenkreuz?

du solltest dir meinen code zumindest einmal ansehen.

außerdem:
windowed screen mit gadgets drumrum ist nicht gerade einfach.
wenn du dich zum ersten mal mit sprites auseinandersetzt, solltest du mit nem fullscreen arbeiten.
dann hast du ein problem weniger und kannst dich erstmal in die screen-programmierung einarbeiten.
wann du das wirklich draufhast, kannst du dich immernoch mit dem komplexen thema
auseinandersetzen, einen screen auf ein window zu integrieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten