Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Muh-Buttons

Uploader:MitgliedThe_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