Menüleiste

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

TheProgrammer

Betreff: Menüleiste

BeitragSo, Apr 04, 2004 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Ich habe ein kleines Programm mit ein paar Funktionen geproggt.

DrawMenuButton

Mit DrawMenuButton zeichnet man einen Button in die Menuleiste.
Ganz wichtig:
Vor den DrawMenuButton-Befehlen muss ResetButtons stehen und dannach muss UpdateButtons stehen!

Parameter:

txt$ - gibt enthaltenen Text an
nr% - gibt irgendeine Zahl an (darf nicht doppelt vorkommen)

- liefert einen Wert zurück, der dann bei DrawMenu wichtig ist.

DrawMenu

Mit DrawMenu zeichnet man an einem MenuButton ein Untermenü.

Parameter:

menu - gibt den zurückgelieferten Wert von DrawMenuButton an, an dem
dieses Untermenü angehängt werden soll

status - gibt die Zahl an, die bei dem anzuhängenden MenüButton als nr-
Parameter stand

txt$ - gibt den text an

nr - Gibt die Nummer an, in welcher Reihenfolge dieses Untermenü stehen soll

Der Code:

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,32,2
SetBuffer BackBuffer()
AppTitle "GUI"

; GLOBAL
Global status%
Global butWidth%
Global butDown%
Global wahl%
Global tahoma=LoadFont("Tahoma",16,0,0,0)
; GLOBAL

ClsColor 128,128,128

Repeat
Cls

ResetButtons
MenuBut1 = DrawMenuButton("Datei",1)
MenuBut2 = DrawMenuButton("Ansicht",2)
MenuBut3 = DrawMenuButton("Hilfe",3)
UpdateButtons

Menu1 = DrawMenu(MenuBut1,1,"bla",1)
Menu2 = DrawMenu(MenuBut1,1,"bla",2)
Menu3 = DrawMenu(MenuBut1,1,"Beenden",3)

Menu4 = DrawMenu(MenuBut2,2,"bla",1)
Menu5 = DrawMenu(MenuBut2,2,"bla",2)

Menu6 = DrawMenu(MenuBut3,3,"bla",1)

If Menu3 = 1 Then End

Flip
Forever


; Functions
Function ResetButtons()

butWidth = 0
Color 192,192,192
Rect 0,0,GraphicsWidth(),21,1
Color 110,110,110
Line 0,21,GraphicsWidth(),21
Color 230,230,230
Line 0,22,GraphicsWidth(),22

End Function

Function UpdateButtons()

If wahl = 0 Then
If MouseHit(1) Then status = 0
EndIf
wahl = 0

End Function

Function DrawMenuButton(txt$,stat%)

buttonWidth = StringWidth(txt$)+20

If MouseX() > butWidth And MouseX() < butWidth+buttonWidth And MouseY() > 0 And MouseY() < 21 Then
Color 192,192,192
Rect butWidth,0,buttonWidth,20
Color 230,230,230
Line butWidth,0,buttonWidth+butWidth,0
Line butWidth,0,butWidth,20
Color 110,110,110
Line butWidth,20,butWidth+buttonWidth,20
Line butWidth+buttonWidth,0,butWidth+buttonWidth,20
Color 0,0,0
SetFont tahoma
Text buttonWidth/2+butWidth,10,txt$,1,1
If status = 0 Then
If MouseHit(1) Then status = stat
ElseIf status <> 0 And status <> stat
status = stat
EndIf
Else
Color 192,192,192
Rect butWidth,0,buttonWidth,20
Color 0,0,0
SetFont tahoma
Text buttonWidth/2+butWidth,10,txt$,1,1
EndIf

If status = stat Then
Color 192,192,192
Rect butWidth,0,buttonWidth,20
Color 110,110,110
Line butWidth,0,buttonWidth+butWidth,0
Line butWidth,0,butWidth,20
Color 230,230,230
Line butWidth,20,butWidth+buttonWidth,20
Line butWidth+buttonWidth,0,butWidth+buttonWidth,20
Color 0,0,0
SetFont tahoma
Text buttonWidth/2+1+butWidth,11,txt$,1,1
EndIf

butWidth = butWidth + buttonWidth+1
Return (butWidth-buttonWidth)-1

End Function

Function DrawMenu(menu,stat,txt$,nr)

SetFont tahoma

If status = stat Then
Color 192,192,192
Rect menu,nr*21,150,21

If MouseX()>menu And MouseX() < menu+150 And MouseY() > nr*21 And MouseY() < nr*21+20 Then
Color 0,0,255
Rect menu,nr*21,150,20,1
Color 255,255,255
If MouseHit(1) Then status = 0 : Return 1
wahl = 1
Else
Color 0,0,0
EndIf
Text menu+5,nr*21+10,txt$,0,1

EndIf

End Function


Ich weiß... Es könnten noch ein paar Verbesserungen angebracht
werden. Confused
aktuelles Projekt: The last day of human being
 

Kekskiller

BeitragMo, Apr 05, 2004 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Totschick ^_^
 

x.Force

BeitragMo, Apr 05, 2004 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
erstaunt sein, mach doch mal ein schickes FakeOS du hast das zeug dazu Smile

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-

Jan_

Ehemaliger Admin

BeitragDi, Apr 06, 2004 7:29
Antworten mit Zitat
Benutzer-Profile anzeigen
sehr schön, aber langsam.
between angels and insects

Xenon

BeitragDi, Apr 06, 2004 9:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Nen Tipp:

Du könntest die langsamen Lines, die sowieso gerade sind durch Rects ersetzen, das is bei weitem schneller!

TheProgrammer

BeitragDi, Apr 06, 2004 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Tipps!!! Very Happy
aktuelles Projekt: The last day of human being

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group