Kontextmenü
Übersicht

FlorianBetreff: Kontextmenü |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type TKontextmenu Field X1,X2 Field Y1,Y2 Field PosX,PosY Field Menu$ Field MenuName$ End Type Global Kontextmenu.TKontextmenu Global Kontextmenu_Aktiv$ Global KontextmenuSchrift Global MausUeberKontextmenu$ Global Kontextmenuauswaehlt$ Global Timer=CreateTimer(20) Graphics 800,600,0,2 SetBuffer BackBuffer() KontextmenuSchrift=LoadFont("",18) Erstellt ein Kontextmenü mit den Namen "Test". ; ;Mit den Namen kann man das Menü später löschen ;---------------------------------------------------------------- ;Function DeleteKontextmenu(MenuName$) ;-------------------------------------------------------------- CreateKontextmenu (200,200,200,200,"Test1|~Test2|-|Test3|Test4|","Test") Repeat DrawKontextmenu RunKontextmenu WaitTimer Timer Flip Cls Forever Function RunKontextmenu() Color 255,255,255 Text 0,0,Kontextmenu_Aktiv$ ; Menüname Select Kontextmenu_Aktiv$ Case "Test" If Len(Kontextmenuauswaehlt) Then Color 255,255,0 Text 100 ,100, Kontextmenuauswaehlt$ Select Kontextmenuauswaehlt$ Case "Test1" Case "Test2" Case "Test3" Case "Test4" End Select Else Color 255,255,255 Text 200,200, MausUeberKontextmenu Select MausUeberKontextmenu Case "Test1" Case "Test2" Case "Test3" Case "Test4" End Select EndIf End Select End Function Function DeleteKontextmenu(MenuName$) If Len(MenuName$) Then Return False If Kontextmenu_Aktiv$ = MenuName$ Then Kontextmenu_Aktiv$ = "" EndIf For Kontextmenu.TKontextmenu = Each TKontextmenu If Kontextmenu\MenuName$ = MenuName$ Then Delete Kontextmenu Return True EndIf Next End Function Function CreateKontextmenu(X1,X2,Y1,Y2,Menu$,MenuName$) If MenuName$="" Then Return False If X1<0 Or Y1<0 Then Return False If Len(Menu$)=0 Then Return False If Right$(Menu$,1)<>"|" Then Return False For Kontextmenu.TKontextmenu = Each TKontextmenu If MenuName$=Kontextmenu\MenuName$ Then Return False EndIf Next Kontextmenu= New TKontextmenu Kontextmenu\X1=X1 Kontextmenu\X2=X2 Kontextmenu\Y1=Y1 Kontextmenu\Y2=Y2 Kontextmenu\Menu$=Menu$ Kontextmenu\MenuName$=MenuName$ Return True End Function Function DrawKontextmenu() If Len(Kontextmenuauswaehlt)>0 Then Kontextmenuauswaehlt = "" Kontextmenu_Aktiv = "" EndIf MausUeberKontextmenu = "" If MouseDown (2) Then KontextmenuGefunden=False For Kontextmenu.TKontextmenu = Each TKontextmenu If Kontextmenu\X1=<MouseX() Then If Kontextmenu\Y1=<MouseY() Then If Kontextmenu\X1+Kontextmenu\X2-1=>MouseX() Then If Kontextmenu\Y1+Kontextmenu\Y2-1=>MouseY() Then Kontextmenu_Aktiv= Kontextmenu\MenuName$ Kontextmenu\PosX =MouseX() Kontextmenu\PosY =MouseY() KontextmenuGefunden=True Exit EndIf EndIf EndIf EndIf Next If KontextmenuGefunden=False Then Kontextmenu_Aktiv="" EndIf EndIf If Len(Kontextmenu_Aktiv)>0 Then For Kontextmenu.TKontextmenu = Each TKontextmenu If Kontextmenu_Aktiv=Kontextmenu\MenuName Then If MouseDown(1) Then If MouseX()<Kontextmenu\X1 Or MouseX()>Kontextmenu\X1+Kontextmenu\X2 Or MouseY()<Kontextmenu\y1 Or MouseY()>Kontextmenu\Y1+Kontextmenu\Y2 Then Kontextmenu_Aktiv="" Return False EndIf EndIf SetFont KontextmenuSchrift X=Kontextmenu\PosX-2 Y=Kontextmenu\PosY-2 Breit=0 Index=1 For I=1 To MenuCount(Kontextmenu\Menu$) IndexNeu=Instr(Kontextmenu\Menu$,"|",Index) MenuName$=Mid$(Kontextmenu\Menu$,Index,IndexNeu-Index) If Left$(MenuName$,1)="~" Then MenuName$=Mid$(MenuName$,2) EndIf If Breit<StringWidth("----"+MenuName$) Then Breit = StringWidth("----"+MenuName$) EndIf Index=IndexNeu+1 Next Color 0,0,$D8CCB8 Rect X,Y,Breit,(MenuCount(Kontextmenu\Menu$)+1)*FontHeight() Color 220,220,220 Rect X,Y,1,(MenuCount(Kontextmenu\Menu$)+1)*FontHeight() If X=<MouseX() Then If (X+Breit)=>MouseX() Then If Y+(0.5)*FontHeight()=<MouseY() Then If Y+((MenuCount(Kontextmenu\Menu$))+0.5)*FontHeight()=>MouseY() Then MausUeberMenu=Ceil((MouseY()-Y-(FontHeight()/2)-1)/FontHeight())+1 Index=1 For I=1 To MausUeberMenu IndexNeu=Instr(Kontextmenu\Menu$,"|",Index) MenuName$=Mid$(Kontextmenu\Menu$,Index,IndexNeu-Index) Index=IndexNeu+1 Next If MenuName$ <> "-" Then If Left$(MenuName$,1) <> "~" Then If MouseDown(1)=True Then Kontextmenuauswaehlt = MenuName$ Else MausUeberKontextmenu = MenuName$ EndIf Color 0,0,$0A246A Rect X,Y+Ceil((MouseY()-Y-(FontHeight()/2)-1)/FontHeight())*FontHeight()+(FontHeight()/2),Breit,FontHeight(),0 Color 0,0,$B6BDD2 Rect X+1,Y+1+Ceil((MouseY()-Y-(FontHeight()/2)-1)/FontHeight())*FontHeight()+(FontHeight()/2),Breit-2,FontHeight()-2 EndIf EndIf EndIf EndIf EndIf EndIf Index=1 For I=1 To MenuCount(Kontextmenu\Menu$) IndexNeu=Instr(Kontextmenu\Menu$,"|",Index) MenuName$=Mid$(Kontextmenu\Menu$,Index,IndexNeu-Index) If MenuName$ = "-" Then Color 128,128,128 Rect X+StringWidth("--"),Y+((I-1)+1)*FontHeight(),Breit-StringWidth("----"),2 ElseIf Left$(MenuName$,1)="~" Then MenuName$=Mid$(MenuName$,2) Color 92,92,92 Text X+StringWidth("--"),Y+((I-1)+0.5)*FontHeight (),MenuName$ Else Color 0,0,0 Text X+StringWidth("--"),Y+((I-1)+0.5)*FontHeight (),MenuName$ EndIf Index=IndexNeu+1 Next EndIf Next EndIf If Len(Kontextmenuauswaehlt)>0 Then Return True EndIf End Function Function MenuCount(Count$) For I=1 To Len(Count$) If Mid$(Count$,I,1)="|" Then Cnt=Cnt+1 Next Return Cnt End Function |
||
- Zuletzt bearbeitet von Florian am Sa, Jan 27, 2007 0:27, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht gut aus, aber mach mal, dass man sich den Code nicht erst zusammen basteln (aus drei Teilen) muss. Man kann es auch so machen, dass man angibt '''Hier kommt jetzt die blub.bb -Include''' oder sowas, da dieses Beispiel ja wohl am meisten von anderen auch so gehandhabt wird. | ||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, bei mir erscheint irgendwie nichts am Bildschirm ![]() |
||
°_° °.° °~° °v° .. -.- |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei erscheint auch nix, und das Kontextmenü lässt sich nur dann aufrufen, wenn man irgendwo in der Mitte rechtsklickt.... | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Code: [AUSKLAPPEN] Function CreateKontextmenu(X1,X2,Y1,Y2,Menu$,MenuName$) X1, X2, Y1 und Y2 geben den Bereich an dem das Kontextmenü erscheinen soll. X1 und Y1 geben die Position an. X2 und Y2 geben die Höhe und Breite an. MfG Florian |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group