Seite 1 von 2

Von 4.0 zu 3.94

Verfasst: 08.03.2006 18:52
von R4z0r1989
kann mir jemand diesen PB 4.0 Code in einen PB 3.94 code uwandeln

Code: Alles auswählen


Declare InitHoverButtons ()
Declare CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
Declare HoverButtonEvent()
Declare FuseImage2Window (ImageID.l)


#ButtonHovered=1
#ButtonNormal=2

UseJPEGImageDecoder(); Wichtig. Sonst kann kein JPG verwendet werden


If OpenWindow(0, 0, 0, 300, 250, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "HoverButton") And CreateGadgetList(WindowID(0))
   
    CatchImage (#ButtonNormal,?Button_Normal)
    CatchImage (#ButtonHovered,?Button_Hovered)
    FuseImage2Window (#ButtonNormal)
    FuseImage2Window (#ButtonHovered)


    If InitHoverButtons () 
       CreateHoverButton (1,100,20,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (2,100,80,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (3,100,140,#ButtonNormal,#ButtonHovered)
    EndIf

  Repeat
     WnEventID.l=WaitWindowEvent()
     HBEventID.l=HoverButtonEvent()
     Select WNEventID.l
       Case #PB_Event_Gadget
         Select HBEventID.l
            Case 1
            Beep_(1000,100)
            Case 2
            Beep_(2000,100)
            Case 3
            Beep_(3000,100)         
         EndSelect
      EndSelect
  Until WnEventID.l = #PB_Event_CloseWindow
EndIf


Procedure InitHoverButtons ()   
  Shared WsHB_Init.l
  If WsHB_Init.l=0
    Structure HoverButtonStruct
       GadgetID.l
       ImageID_Normal.l
       ImageID_Hovered.l
    EndStructure
    Global NewList HovButID.HoverButtonStruct () 
    WsHB_Init.l=1
    ProcedureReturn #True
    Else
    ProcedureReturn #False
  EndIf
EndProcedure


Procedure CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
   ImageGadget(GadgetID.l,x.l,y.l,ImageWidth(ImageID_Normal.l),ImageHeight(ImageID_Normal.l), ImageID_Normal.l)  ; Empfängt Klickevents wie das ButtonGadget
   AddElement (HovButID())
   HovButID ()\GadgetID=GadgetID.l
   HovButID ()\ImageID_Normal=ImageID(ImageID_Normal.l)
   HovButID ()\ImageID_Hovered=ImageID(ImageID_Hovered.l)
EndProcedure


Procedure HoverButtonEvent()
    ForEach HovButID ()
      wnd.l=GadgetID(HovButID ()\GadgetID)
      GetWindowRect_(wnd,re.RECT)
      GetCursorPos_(pt.POINT)
      Result = PtInRect_(re,pt\x,pt\y)
      If Result
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Hovered)
        WichGadget.l=HovButID()\GadgetID
        Else
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Normal)
      EndIf
    Next
    ProcedureReturn WichGadget.l
EndProcedure


Procedure FuseImage2Window (ImageID.l)
   StartDrawing (ImageOutput (ImageID.l))
   For x=0 To ImageWidth (ImageID.l)-1
     For y=0 To ImageHeight (ImageID.l)-1
       If Point (x,y)=RGB(255,0,255)
          Plot (x,y,GetSysColor_(#COLOR_BTNFACE))
       EndIf
     Next y
   Next x
   StopDrawing ()
EndProcedure


DataSection
   Button_Normal : IncludeBinary "Button_Normal.bmp"
   Button_Hovered : IncludeBinary "Button_Hovered.bmp"
EndDataSection


Verfasst: 08.03.2006 19:03
von Macros
Müsste klappen, kanns ja nicht testen.

Code: Alles auswählen


Declare InitHoverButtons ()
Declare CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
Declare HoverButtonEvent()
Declare FuseImage2Window (ImageID.l)


#ButtonHovered=1
#ButtonNormal=2

UseJPEGImageDecoder(); Wichtig. Sonst kann kein JPG verwendet werden


If OpenWindow(0, 0, 0, 300, 250, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "HoverButton") And CreateGadgetList(WindowID(0))
   
    CatchImage (#ButtonNormal,?Button_Normal)
    CatchImage (#ButtonHovered,?Button_Hovered)
    FuseImage2Window (#ButtonNormal)
    FuseImage2Window (#ButtonHovered)


    If InitHoverButtons ()
       CreateHoverButton (1,100,20,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (2,100,80,#ButtonNormal,#ButtonHovered)
       CreateHoverButton (3,100,140,#ButtonNormal,#ButtonHovered)
    EndIf

  Repeat
     WnEventID.l=WaitWindowEvent()
     HBEventID.l=HoverButtonEvent()
     Select WNEventID.l
       Case #PB_Event_Gadget
         Select HBEventID.l
            Case 1
            Beep_(1000,100)
            Case 2
            Beep_(2000,100)
            Case 3
            Beep_(3000,100)         
         EndSelect
      EndSelect
  Until WnEventID.l = #PB_Event_CloseWindow
EndIf


Procedure InitHoverButtons ()   
  Shared WsHB_Init.l
  If WsHB_Init.l=0
    Structure HoverButtonStruct
       GadgetID.l
       ImageID_Normal.l
       ImageID_Hovered.l
    EndStructure
    NewList HovButID.HoverButtonStruct ()
    WsHB_Init.l=1
    ProcedureReturn #True
    Else
    ProcedureReturn #False
  EndIf
EndProcedure


Procedure CreateHoverButton (GadgetID.l,x.l,y.l,ImageID_Normal.l,ImageID_Hovered.l)
UseImage(ImageID_Normal.l)
   ImageGadget(GadgetID.l,x.l,y.l,ImageWidth(),ImageHeight(), ImageID_Normal.l)  ; Empfängt Klickevents wie das ButtonGadget
   AddElement (HovButID())
   HovButID ()\GadgetID=GadgetID.l
   HovButID ()\ImageID_Normal=ImageID()
   UseImage(ImageID_Hovered.l)
   HovButID ()\ImageID_Hovered=ImageID()
EndProcedure


Procedure HoverButtonEvent()
    ForEach HovButID ()
      wnd.l=GadgetID(HovButID ()\GadgetID)
      GetWindowRect_(wnd,re.RECT)
      GetCursorPos_(pt.POINT)
      Result = PtInRect_(re,pt\x,pt\y)
      If Result
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Hovered)
        WichGadget.l=HovButID()\GadgetID
        Else
        SetGadgetState (HovButID()\GadgetID,HovButID ()\ImageID_Normal)
      EndIf
    Next
    ProcedureReturn WichGadget.l
EndProcedure


Procedure FuseImage2Window (ImageID.l)
UseImage(imageID.l)
   StartDrawing (ImageOutput ())
   For x=0 To ImageWidth ()-1
     For y=0 To ImageHeight ()-1
       If Point (x,y)=RGB(255,0,255)
          Plot (x,y,GetSysColor_(#COLOR_BTNFACE))
       EndIf
     Next y
   Next x
   StopDrawing ()
EndProcedure


DataSection
   Button_Normal : IncludeBinary "Button_Normal.bmp"
   Button_Hovered : IncludeBinary "Button_Hovered.bmp"
EndDataSection


Verfasst: 08.03.2006 19:04
von ts-soft
Warum fragste nicht in der Lounge den Hroudtwolf, da haste den Code doch her.

Verfasst: 08.03.2006 19:10
von R4z0r1989
ja aber ich dachte er sei off

und danke für die antworten

habt ihr vl ne idee wie er wenn es ein ovaller button ist nur die Ovalle form nimmt also das ich den Button nicht den ganzen rechteckigen bereich um Button anklicken kann sondern wirklich nur den Button???

Verfasst: 08.03.2006 19:13
von Macros
Mit Sprites auf OpenwindowedScreen.
sonnst wirds komplizierter.

Verfasst: 08.03.2006 19:14
von R4z0r1989
ja aber da fängt mein Problem an das will ich nicht

Verfasst: 08.03.2006 19:21
von Hroudtwolf
Die Autor-Remarks sind nicht umsonst am Kopf des Codes.
Wäre dir dankbar wenn du dir nicht mehr abschneidest vor dem Pasten in andere Foren.

Verfasst: 08.03.2006 19:23
von R4z0r1989
das is ne anschuldigung die nicht gerechtfertigt ist weil ich das von der datei die in der rar war kopiert hab und da war das nicht dabei!!!!

Verfasst: 08.03.2006 19:26
von Hroudtwolf
OK.
Verzeihungssegen erteilt *amen*

Könntest dich aber in zukunft zumindest weiter mit mir über deine Probleme unterhalten anstatt damit gleich zu andern zu rennen noch bevor wir zu einer Lösung für dich gekommen sind.

Dabai fühl ich mich logischerweise ein wenig veräppelt ;-)

Verfasst: 08.03.2006 19:28
von R4z0r1989
tu mir leid war echt nicht im sinne das ich dich hintergehe oder sonstiges:
eine schriftliche und echt ernstgemeinte entschuldigung!!!

Sorry!!!