Popabmenu
Übersicht

![]() |
LifetecBetreff: Popabmenu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal ne frage ich habe das hier gefunden.
Meine Frage ist wie bekomm ich es hin das das Popabmenu aufgeht wenn man auf eine Textarea drückt ? Code: [AUSKLAPPEN] ;PopupMenu Example ; ;Main Program ;Create standard B+ stuff win = CreateWindow ("Popup Menu Example",0,0,206,250,Desktop(),1) textarea = CreateTextarea (0,50,100,100,win) label = CreateLabel("Right-Click the window for a pop-up menu",0,0,200,20,win) ;Assign a few constants, relating to the popup menu Const PUM_NEW = 1 Const PUM_OPEN = 2 ;Seperator = 3 Const PUM_SAVE = 4 Const PUM_SAVEAS = 5 ;Seperator = 6 Const PUM_CUT = 7 Const PUM_COPY = 8 Const PUM_PASTE = 9 ;Seperator = 10 Const PUM_LOCKPAD = 11 ;Seperator = 12 Const PUM_PRINT = 13 ;Seperator = 14 Const PUM_ABOUT = 15 ;Main loop Repeat id = WaitEvent(50) If id = $803 Then Exit If id = $201 If EventData() = 2 popupMenu = CreatePopupMenu(win,"New|Open||Save|Save As...||Cut|Copy|Paste||Lock Pad||Print||About PopupMenu") timeCount = MilliSecs() Repeat id = WaitEvent(1) If id = $206 Then Exit popupMenuID = PopupMenuEvent() If MouseHit(1) Select popupMenuID Case PUM_NEW Notify "New" Exit Case PUM_OPEN Notify "Open" Exit Case PUM_ABOUT Notify "Popup Menu Functions"+Chr$(13)+"Written by Michael Denathorn 2005" Exit End Select End If Forever DisableGadget(popupMenu ) HideGadget(popupMenu ) popupMenu = 0 FreeGadget popupMenu End If End If Forever End ;I recommend banging the below code in an include file ;Popup Menu related Arrays Dim popupMenuImages(0) Dim popupInvertedMenuImages(0) Dim popupMenuItemsStr$(0) ;Popup Menu related Globals Global popupMenuCanvas,popupMenuBorder,popupMenuItemHeight,popupMenuItemCount,popupMenuDot ;CreatePopupMenu(hWin,strItemList$) ;hWin - Parent window handle ;strItemList$ - String containing the list of items for the ; popup menu, each should be seperated by a '|' ; character. A null item ('||') in the list will ; produce a seperator line. ; ;The 'CreatePopupMenu' function returns a handle to the new popup menu Function CreatePopupMenu(winHandle,menuString$) popWinTitle$ = "PopWin" my = MouseY() mx = MouseX() deskWidth = GadgetWidth(Desktop()) popupMenuItemCount = 0 For loop = 1 To Len(menuString$) char$ = Mid$(menuString$,loop,1) If char$ = "|" popupMenuItemCount = popupMenuItemCount + 1 End If Next Dim popupMenuItemsStr$(popupMenuItemCount) popupMenuItemCount = 0 For loop = 1 To Len(menuString$) char$ = Mid$(menuString$,loop,1) If char$ = "|" popupMenuItemCount = popupMenuItemCount + 1 Else popupMenuItemsStr$(popupMenuItemCount) = popupMenuItemsStr$(popupMenuItemCount) + char$ End If Next tempCanvas = CreateCanvas(0,0,0,0,winHandle) SetBuffer CanvasBuffer(tempCanvas) For loop = 0 To popupMenuItemCount MenuLength = StringWidth(popupMenuItemsStr$(loop)) If MenuLength > tempMenuLength Then tempMenuLength = MenuLength Next popWinXsize = tempMenuLength+10 popWinYsize = (StringHeight(popupMenuItemsStr$(0)) * (popupMenuItemCount+1))+10 popupMenuItemHeight = StringHeight(popupMenuItemsStr$(0)) FreeGadget tempCanvas If (mx+popWinXsize) > deskWidth popWinHandle = CreateWindow (popWinTitle$,(mx-popWinXsize),(my-popWinYsize),popWinXsize,popWinYsize,winHandle,16) ; create a window first HideGadget popWinHandle CreatePopupMenuItems(popWinXsize,popWinYsize,popupMenuItemCount,popupMenuItemHeight,popWinHandle) ShowGadget popWinHandle Return popWinHandle End If popWinHandle = CreateWindow (popWinTitle$,mx,(my-popWinYsize),popWinXsize,popWinYsize,winHandle,16) ; create a window first HideGadget popWinHandle CreatePopupMenuItems(popWinXsize,popWinYsize,popupMenuItemCount,popupMenuItemHeight,popWinHandle) ShowGadget popWinHandle Return popWinHandle End Function ;PopupMenuEvent() ; ;The 'PopupMenuEvent' function returns the selected popup menu item code ;which is based on how the user creates the popup menu (See example) Function PopupMenuEvent() SetBuffer CanvasBuffer(popupMenuCanvas) mx = MouseX(popupMenuCanvas) my = MouseY(popupMenuCanvas) ClsColor 255,255,255 Cls DrawImage(popupMenuBorder,0,0) DrawBlock(popupMenuDot,MouseX(),MouseY()) For loop = 0 To popupMenuItemCount If ImagesCollide(popupMenuImages(loop),5,(popupMenuItemHeight*loop)+5,0,popupMenuDot,mx,my,0) DrawBlock popupInvertedMenuImages(loop),5,(popupMenuItemHeight*loop)+5 Else DrawBlock popupMenuImages(loop),5,(popupMenuItemHeight*loop)+5 End If Next For loop = 0 To popupMenuItemCount If ImagesCollide(popupMenuImages(loop),5,(popupMenuItemHeight*loop)+5,0,popupMenuDot,mx,my,0) popupMenuEventID = loop+1 End If Next FlipCanvas popupMenuCanvas Return popupMenuEventID End Function ;Internal Function Function CreatePopupMenuItems(x,y,count,textHeight,winHandle) Dim popupMenuImages(count) Dim popupInvertedMenuImages(count) popupMenuCanvas = CreateCanvas(0,0,x,y,winHandle) popupMenuBorder = CreateImage(x,y) popupMenuDot = CreateImage(1,1) SetBuffer ImageBuffer(popupMenuDot) Color 50,50,50 Rect 0,0,1,1 SetBuffer ImageBuffer(popupMenuBorder) Color 172,168,153 Rect 0,0,x,y,False For loop = 0 To count popupMenuImages(loop) = CreateImage(x-10,textHeight) SetBuffer ImageBuffer(popupMenuImages(loop)) ClsColor 255,255,255 If popupMenuItemsStr$(loop) <> "" ClsColor 255,255,255 Color 20,20,20 Cls Text 0,0,popupMenuItemsStr$(loop) Else Color 172,168,153 Cls Line 0,(textHeight/2),(x-10),(textHeight/2) End If Next ;Inverted For loop = 0 To count popupInvertedMenuImages(loop) = CreateImage(x-10,textHeight) SetBuffer ImageBuffer(popupInvertedMenuImages(loop)) If popupMenuItemsStr$(loop) <> "" ClsColor 49,106,197 Color 255,255,255 Cls Text 0,0,popupMenuItemsStr$(loop) Else ClsColor 255,255,255 Color 172,168,153 Cls Line 0,(textHeight/2),(x-10),(textHeight/2) End If Next End Function |
||
Virus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich schätze du musst die funktion aufrufen ![]() |
||
www.legacy.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group