Hi Folks!
My second Program i develop a onMouseOver Event for Gadgets.
additionally it is a GagProgramm
who wisch to better....... here it is
Code: Select all
;******************************************************************************
; On mouse Over Demo
; Peter Kriegel http://www.network-gui.de 30.April.2005
; if the code is selfexplaining in englisch, i use the German explanation only
;
; Demonstrate how you get easy an "on Mouse over" event from a Gadget
; only for Gadgets wich are rectangular
; Demonstriert wie man leicht ein On Mouse Over ereignis (event) von einem Gadget bekommt
; nur für Gadgets die rechteckige werte liefern
;******************************************************************************
;Procedure delivers 1 if the Mouse is ove the Gadget and 0 if is not
;Prozedur liefert 1 wenn die Maus über dem Gadget ist und 0 wenn nicht
;******************************************************************************
Procedure.b onMouseOver(GadgedNr)
X = GadgetX(GadgedNr) ; queries Gadget X erfragen
Y = GadgetY(GadgedNr) ; queries Gadget Y erfragen
Mx = WindowMouseX(1) ; queries Mouse X erfragen
My =WindowMouseY(1) ; queries Mouse Y erfragen
; in the if, i do the rectangular calculation and the compare with the Mousecoordinates
; in der if abfrage wird das Rechteckberechnet und mit den Mausekoordinaten verglichen
; GadgetWidth(GadgedNr) Gadget Breite erfragen / GadgetHeight(GadgedNr) Gadget Höhe erfragen
If Mx > X And Mx < (X + GadgetWidth(GadgedNr)) And My > Y And My < (Y + GadgetHeight(GadgedNr) )
ProcedureReturn 1 ; Mouse is over the Gadget ; Maus ist über dem Gadget
EndIf
ProcedureReturn 0 ; Mouse is not over the Gadget ; Maus ist nicht über dem Gadget
EndProcedure
;******************************************************************************
; begin Create Window and Gadgets ; Beginn Fenster und Gadgets erstellen
If OpenWindow(1, 216, 0, 260, 135 , "On Mouse over Demo", #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_Invisible)
ButtonGadget(1, 30, 80, 50, 25, "No")
; Paint first Image vor the Yes Button ; Das erste Bild für den Yes Knopf malen
If CreateImage(1, 45, 20)
If StartDrawing(ImageOutput(1)) ; das malen Starten
DrawingMode(1)
Box(0, 0, 45, 20 ,RGB($EC,$E9,$D8))
DrawText(10, 3,"Yes")
; (
StopDrawing(); dont forget !! ; das malen Stoppen nicht vergessen !!
EndIf
; Paint second Image vor the Yes Button ; Das zweite Bild für den Yes Knopf malen
If CreateImage(2, 45, 20)
If StartDrawing(ImageOutput(2)) ; das malen Starten
DrawingMode(1)
Box(0, 0, 45, 20 ,RGB($0,$80,$FF))
DrawText(5, 3,"Sure?")
; (
StopDrawing(); dont forget !! ; das malen Stoppen nicht vergessen !!
EndIf
EndIf
ButtonImageGadget(2, 100, 80, 50, 25, ImageID(1)) ; the Yes Button ; Der Yes Knopf
EndIf
TextGadget(3,30,20,200,20,"Haben Sie einen kleinen Penis ?",#PB_Text_Center)
TextGadget(4,30,50,200,20,"Do you have a tiny dick ?",#PB_Text_Center)
EndIf
HideWindow(1,0)
; end Window stuff + Gadget ; Ende Fenster + Gadget
;******************************************************************************
toggle = 0 ; Position switch Variable for Jumping Button ; Position Schalt Variable für den Springenden Knopf
Repeat
EventID = WaitWindowEvent()
If EventID <> 0 ; is true every Window event ; wird bei jedem Fensterereignis ausgeführt
If onMouseOver(1) ; If the Mouse is over the Gadget1 then .... ; Wenn die Mause über dem Gadget1 ist dann ....
If toggle ; .... let the button1 jump ; .... lass den Knopf1 springen
ResizeGadget(1,GadgetX(1) - 140 ,-1,-1,-1) ; move the Button in X - 200 ; verschiebe den Knopf in X - 200
;UpdateWindow_(WindowID(1)) ; winAPI perhapst needed, on winXP not ; winAPI vieleicht nötig, auf winXP nicht
toggle = 0
Else
ResizeGadget(1,GadgetX(1) + 140 ,-1,-1,-1); move the Button in X + 200 ; verschiebe den Knopf in X + 200
;UpdateWindow_(WindowID(1)) ; winAPI perhapst needed, on winXP not ; winAPI vieleicht nötig, auf winXP nicht
toggle = 1
EndIf
EndIf
If onMouseOver(2) ; If the Mouse is over the Gadget2 then .... ; Wenn die Mause über dem Gadget2 ist dann ....
SetGadgetState(2,ImageID(2)) ; .... use Image2 for the button2 .... ; .... benutze das Image2 für den Knopf2....
Else
SetGadgetState(2,ImageID(1)) ; .... else use Image1 for the button2 ; .... sonnst benutze das Image1 für den Knopf2
EndIf
EndIf
Select EventID ; remainig Window event ; die restlichen Fensterereignisse
Case #PB_Event_CloseWindow
;End ; The Window doesn´t close on this event !!; Das Fenster wird hier nicht geschlossen!!
Case #PB_Event_Gadget
Select EventGadget()
Case 2 ; if Button Yes is Pressed ; Wenn der Yes Knopf gedrückt wurde
MessageRequester("Poor Boy!!", "Armer Junge!!", #MB_OK|#MB_ICONWARNING)
End ; here ends all ;Und alles zuende
EndSelect
EndSelect
ForEver
End