Code: Select all
EnableExplicit
Enumeration
#MainWin
EndEnumeration
Define Event.l
Define EventType.l
Define GadgetNr.l
Define MausA.POINT
Define MausE.POINT
Define StartTime, EndTime
Define LGD.l, FGD, GD1, GD2, Tausche
Define *FirstElement, *SecondElement
NewList Gadgets()
Procedure CreateMenuButton(Text$,Breite.l,List(),F.l,Start=0)
Static GD.l,x
If CountList(List())<>0
LastElement(List())
GD=List()
x=GadgetX(GD)+GadgetWidth(GD)
Else
GD=Start-1
EndIf
AddElement(List())
List()=GD+1
CreateImage(GD+1,Breite-5,20)
StartDrawing(ImageOutput(GD+1))
Box(0,0,ImageWidth(GD+1),ImageHeight(GD+1),#Gray)
Box(1,1,ImageWidth(GD+1)-2,ImageHeight(GD+1)-2,F)
DrawText(4,2,Text$,0,F); #LightGray
StopDrawing()
ImageGadget(GD+1, x, 0, Breite, 35, ImageID(GD+1))
EndProcedure
OpenPreferences("FLFenster4.ini")
Define WinPosX_MainWin.l=ReadPreferenceLong("WINDOW_XPOS_MAIN",50);
Define WinPosY_MainWin.l=ReadPreferenceLong("WINDOW_YPOS_MAIN",50);
ClosePreferences()
OpenWindow(#MainWin,WinPosX_MainWin,WinPosY_MainWin, 750,550,":: FL :: FL-Fenster 4")
CreateGadgetList(WindowID(#MainWin))
CreateMenuButton("Menu 1",60,Gadgets(),#Yellow,100) ; GadgetID startet bei 100
CreateMenuButton("Menu 2",60,Gadgets(),#Red)
CreateMenuButton("Menu Nummer 3",120,Gadgets(),RGB(128,128,255))
CreateMenuButton("Menu vier",80,Gadgets(),RGB(192,192,192))
CreateMenuButton("M V",40,Gadgets(),#Green)
;CreateMenuButton("",10,Gadgets(),#Gray)
Repeat
Event= WaitWindowEvent()
If Event=#PB_Event_Gadget
GadgetNr=EventGadget()
Debug GadgetNr
LastElement(Gadgets())
LGD.l=Gadgets() ; letztes Element
FirstElement(Gadgets())
FGD.l=Gadgets() ; Erstes Element
ResetList(Gadgets())
While NextElement(Gadgets())
If GadgetNr=Gadgets(); Letzter Schieber soll nicht funktionieren
EventType=EventType()
Debug EventType ; MouseDown und MouseUp wäre noch nützlich, damit ziehen vom Klicken unterschieden werden kann
; 0 = erste Maustaste einfach geklickt
; 1 = zweite Maustaste einfach geklickt
; 2 = erste Maustaste zweifach geklickt
; 3 = zweite Maustaste zweifach geklickt
; 14002 = erste Maustaste klicken und dabei ziehen
If EventType = 0
MausA\x=WindowMouseX(#MainWin)
MausA\y=WindowMouseY(#MainWin)
EndIf
If EventType = 14002
MausE\x=WindowMouseX(#MainWin)
MausE\y=WindowMouseY(#MainWin)
If MausA\x-MausE\x>0
Debug "<--- nach links geschoben" ; Tausch erfolgt mit 5-Breit-Knopf auf linker Seite vom ImageButton, außer wenn erster
If Gadgets()<>FGD ; erstes Element in der Liste
Tausche.l=1
GD2=Gadgets()
*SecondElement=@Gadgets()
PreviousElement(Gadgets())
*FirstElement = @Gadgets()
GD1=Gadgets()
Else
Tausche.l=0
EndIf
Else
Debug "nach rechtss geschoben --->" ; Tausch erfolgt mit 5-Breit-Knopf auf rechter Seite vom ImageButton, außer wenn letzter
If Gadgets()<> LGD; letztes Element in der Liste
Tausche=1
GD1=Gadgets()
*FirstElement = @Gadgets()
NextElement(Gadgets())
*SecondElement=@Gadgets()
GD2=Gadgets()
Else
Tausche.l=0
EndIf
EndIf
EndIf
; kleiner Knopf neben Menu-Eintrag !Breite = 5; Anzahl + 100, weil Gadget-IDs bei 100 Beginnen
If Tausche
ResizeGadget(GD2,GadgetX(GD1),#PB_Ignore,#PB_Ignore,#PB_Ignore) ; hinterer nach vorn
SetGadgetState(GD2, ImageID(GD2)) ; Gibt sonst Darstellungsfehler
ResizeGadget(GD1,GadgetX(GD2)+GadgetWidth(GD2),#PB_Ignore,#PB_Ignore,#PB_Ignore) ; vorderer nach hinten
SetGadgetState(GD1, ImageID(GD1)) ; Gibt sonst Darstellungsfehler
SwapElements(Gadgets(),*FirstElement,*SecondElement)
Tausche=0
GadgetNr=-1
Debug "getauscht Tausche"
EndIf
EndIf
Wend
EndIf
EventType=EventType()
EndTime=ElapsedMilliseconds()
If EventType<>-1 Or EndTime-StartTime>100
Debug EventType
StartTime=ElapsedMilliseconds()
EndIf
Until Event=#PB_Event_CloseWindow
CreatePreferences("FLFenster4.ini")
WritePreferenceLong("WINDOW_XPOS_MAIN",WindowX(#MainWin))
WritePreferenceLong("WINDOW_YPOS_MAIN",WindowY(#MainWin))
ClosePreferences()
CloseWindow(#MainWin)
second mouse-button clicking on the menu in the explorer.
make a hook on : Links
Know you have your links from the FAVORITEs (when not, put a link there)
If you klick and drag one of these links, you can decide there position in the menu.
In Word, Excel and other Office products it is nearly the same.
You can also drop it away. And there is a hole in your menu

Do you know, what I mean?
I tried this too, but how you can see, it is not the same.
Do I wait for PB V. 4.1. or is there another possibility?
Thanks for trying my code. Folker
