fb:porticula NoPaste
Muh-Buttons
Uploader: | The_Muh |
Datum/Zeit: | 20.11.2008 17:43:49 |
'Muh-Buttons,
'Zur freien verfügung (auch in propritären codes)
'Gebastelt von The_Muh
'Benutzung von create_button(...) (einen button erstellen):
'1. Parameter = Text = String
'2. Parameter = Textfarbe = Integer
'3. Parameter = X-Koordinate = Integer
'4. Parameter = Y-Koordinate = Integer
'5. Parameter = Hoehe des Buttons = Integer
'6. Parameter = Hintergrundfarbe des Buttons = Integer
'7. Parameter = Rahmenfarbe des Buttons = Integer
'8. Parameter = Sub die bei klick aufgerufen wird = Pointer auf Sub
'Die Breite wird automatisch ermittelt, anhand der Textlänge, genauer:
' Textlänge * 8 + 8
' +8 um den text nicht direkt am rand zu haben
'Es empfiehlt sich übrigens eine Hoehe von mindestens 10 zu verwenden,
' da von der Hoehe 2 pixel für den Rahmen "Draufgehen" und der text
' Immer 8 pixel hoch ist.
'Benutzung von click_button:
'per Getmouse auf Tastendruck prüfen und dann die Mauskoordinaten
' an click_button() übergeben:
'1. Parameter = x-Koordinate
'2. Parameter = y-Koordinate
'refresh_buttons zeichnet alle buttons neu
'Beachten das die Buttons _vor_ click_button erstellt werden!
'(ja, es soll leute geben die sowas nicht auf anhieb begreifen)
declare sub create_button(text as string,textfarbe as integer,x as integer, y as integer, hoehe as integer,rahmen as integer,farbe as integer = 15, link as any ptr)
type button_type
x as integer
y as integer
hoehe as integer
breite as integer
farbe as integer
rahmen as integer
text as string
textfarbe as integer
link as any ptr
end type
dim shared button() as button_type
sub refresh_buttons()
dim i as integer
for i = 1 to ubound(button)
line (button(i).x ,button(i).y )-(button(i).x+button(i).breite,button(i).y+button(i).hoehe),button(i).rahmen, BF
line (button(i).x+1,button(i).y+1)-(button(i).x+button(i).breite-1,button(i).y+button(i).hoehe-1),button(i).farbe,BF
draw string (button(i).x+4,button(i).y+(button(i).hoehe/2) -4),button(i).text,button(i).textfarbe
next
end sub
sub create_button(text as string,textfarbe as integer,x as integer, y as integer, hoehe as integer,rahmen as integer,farbe as integer = 15, link as any ptr)
dim i as integer
dim breite as integer
breite = len(text)*8 +8
line (x,y)-(x+breite,y+hoehe),rahmen, BF
line (x+1,y+1)-(x+breite-1,y+hoehe-1),farbe,BF
draw string (x+4,y+(hoehe/2) -4),text,textfarbe
redim preserve button(ubound(button)+1)
i = ubound(button)
button(i).x = x
button(i).y = y
button(i).hoehe = hoehe
button(i).breite = breite
button(i).farbe = farbe
button(i).rahmen = rahmen
button(i).text = text
button(i).textfarbe = textfarbe
button(i).link = link
end sub
sub click_button(mx as integer, my as integer)
dim dummy as any ptr
for i as integer = 1 to ubound(button)
if mx >= button(i).x and mx <= (button(i).x + button(i).breite) and _
my >= button(i).y and my <= (button(i).y + button(i).hoehe) then
dim by_click as sub = button(i).link
by_click()
exit sub
end if
next
locate 1,1
print "Master ";
end sub
'---
'Ab hier das Beispiel:
'---
dim as integer mx,my,taste
dim shared value as integer
sub foo()
if button(1).textfarbe = 0 then
button(1).farbe = 0
button(1).textfarbe = 15
else
button(1).farbe = 15
button(1).textfarbe = 0
end if
refresh_buttons
end sub
sub foo2()
locate 1,1
value -= 1
print value;
end sub
sub foo3()
end
end sub
screenres 100,100
create_button(chr(219),15,10,10,15,14,0,@foo)
create_button("-1",15,10,40,15,14,0,@foo2)
create_button("Ende",15,10,70,15,14,0,@foo3)
do
getmouse mx,my,,taste
if taste = 1 then
click_button(mx,my)
while taste = 1
getmouse mx,my,,taste
sleep 1
wend
end if
sleep 1
loop while inkey = ""
sleep