; PButtons v1.0 by Pdd (C) 2006. ; Mail: pddpms [ÄT] yahoo.de ; Diese Lib darf frei verwendet werden, würde mich aber um einen Credits-Eintrag freuen! Type TButton Field X Field Y Field name$ Field ID Field Width Field Heigth Field Hint Field Hit Field Enabled Field OverImage End Type Global Button.TButton Global PB_ButtonHintFont = LoadFont("Verdana") Dim PB_HintColor(9) PB_HintColor(1) = 74 PB_HintColor(2) = 128 PB_HintColor(3) = 225 PB_HintColor(4) = 0 PB_HintColor(5) = 0 PB_HintColor(6) = 0 PB_HintColor(7) = 0 PB_HintColor(8) = 0 PB_HintColor(9) = 0 ; Setzt die Farbe der Hints ; rgb - Farbe des Hintergrunds ; r1g1b1 - Farbe des Rands ; r2g2b2 - Farbe des Textes Function PB_SetHintColor(r, g, b, r1, g1, b1, r2, g2, b2) ; Hintergrund PB_HintColor(1) = r PB_HintColor(2) = g PB_HintColor(3) = b ; Rahmen PB_HintColor(4) = r1 PB_HintColor(5) = g1 PB_HintColor(6) = b1 ; Text PB_HintColor(7) = r2 PB_HintColor(8) = g2 PB_HintColor(9) = b2 End Function ; Setzt die Schriftart des Hints ; font$ - Schriftart Function PB_SetHintFont(font$) PB_ButtonHintFont = LoadFont(font$) End Function ; Erstellt einen Button. Liefert die Identität des Buttons zurück. ; hint$ - Hint-Text ; X - X-Position des Buttons ; Y - Y-Position des Buttons ; HintE - Ob der Hint angezeigt werden soll (0 = nein, 1 = ja) ; width - Breite des Buttons ; height - Höhe des Buttons ; OverImage(optional) - Bild, das angezeigt werden soll, wenn man mit der Maus über den Button fährt Function PB_CreateButton(hint$, X, Y, HintE = 0, width, height, Overimage$ = "") Button = New TButton Button\ID = Handle(Button) Button\name = hint$ Button\Width = width Button\Heigth = height Button\X = X Button\Y = Y Button\Hint = HintE Button\Enabled = True If Overimage$ <> "" Then Button\OverImage = LoadImage(Overimage$) EndIf Return Handle(Button) End Function ; Liefert eine 1 zurück, wenn der Button gedrückt wurde. Ansonsten 0. Function PB_ButtonHit(Btn) If Btn <> 10000 Then Button = Object.TButton(Btn) If Button\Hit = 1 And Button\Enabled = True Then Button\Hit = 0 FlushMouse Return True Else Return False EndIf EndIf End Function ; Liefert eine 1 zurück, wenn die Maus über dem Button ist. Ansonsten 0. Function PB_ButtonOver(Btn) If Btn <> 10000 Then Button = Object.TButton(Btn) If (MouseX() > Button\X) And (MouseX() < (Button\X + Button\Width)) And (MouseY() > Button\Y) And (MouseY() < (Button\Y + Button\Heigth)) And (Button\Enabled = True) Then Return True Else Return False EndIf EndIf End Function ; Aktualisiert alles. Dieser Befehl muss immer in jeder Schleife ausgeführt werden! Function PB_Update() For Button = Each TButton If (PB_ButtonOver(Button\ID) = True) And (Button\Enabled = True) Then If Button\OverImage <> 0 Then DrawImage Button\OverImage, Button\X, Button\Y EndIf If Button\Hint = 1 Then SetFont PB_ButtonHintFont Color PB_HintColor(1), PB_HintColor(2), PB_HintColor(3) ;Hintergrund If (MouseX() + 20 + StringWidth(Button\name) + 10) < 800 Then Rect MouseX() + 20, MouseY() + 1, StringWidth(Button\name) + 10, 15, 1 Color PB_HintColor(4), PB_HintColor(5), PB_HintColor(6) ;Rahmen Rect MouseX() + 20, MouseY() + 1, StringWidth(Button\name) + 10, 15, 0 Color PB_HintColor(7), PB_HintColor(8), PB_HintColor(9) ;Text Text MouseX() + 25, MouseY() + 2, Button\Name Else Rect MouseX() - 5 - (StringWidth(Button\name) + 10) , MouseY() + 1, StringWidth(Button\name) + 10, 15, 1 Color PB_HintColor(4), PB_HintColor(5), PB_HintColor(6) ;Rahmen Rect MouseX() - 5 - (StringWidth(Button\name) + 10), MouseY() + 1, StringWidth(Button\name) + 10, 15, 0 Color PB_HintColor(7), PB_HintColor(8), PB_HintColor(9) ;Text Text MouseX() - (StringWidth(Button\name) + 10), MouseY() + 2, Button\Name EndIf EndIf If MouseHit(1) Then FlushMouse Button\Hit = 1 Else Button\Hit = 0 EndIf FlushMouse EndIf Next End Function ; Aktualisiert die Eigenschaften eines Buttons. Liefert die Identität des Buttons zurück, diese bleibt aber gleich. ; Parameter siehe PB_CreateButton. Function PB_UpdateButton(Btn, hint$, X, Y, HintE = 0, width, height, Overimage = 0) If Btn <> 10000 Then Button = Object.TButton(Btn) If hint$ <> "" Then Button\name = hint$ Button\Width = width Button\Heigth = height Button\X = X Button\Y = Y Button\Hint = HintE Button\Enabled = True If Overimage <> 0 Then Button\OverImage = LoadImage(Overimage) Else Button\OverImage = 0 EndIf Return Handle(Button) EndIf End Function ; Löscht ALLE Buttons Function PB_FreeButtons() For Button = Each TButton Delete Button Next End Function ; Löscht EINEN Button ; Btn - Identität des Buttons Function PB_FreeButton(Btn) Button = Object.TButton(Btn) Delete Button End Function ; Aktiviert einen Button ; Btn - Identität des Buttons Function PB_EnableButton(Btn) If Btn <> 10000 Then Button = Object.TButton(Btn) Button\Enabled = True EndIf End Function ; Deaktiviert einen Button ; Btn - Identität des Buttons Function PB_DisableButton(Btn) If Btn <> 10000 Then Button = Object.TButton(Btn) Button\Enabled = False EndIf End Function ; Aktiviert ALLE Buttons Function PB_EnableAll() For Button = Each TButton Button\Enabled = True Next End Function ; Deaktiviert ALLE Buttons Function PB_DisableAll() For Button = Each TButton Button\Enabled = False Next End Function