Gadgeterstellung und Resize vereinfachen
Verfasst: 20.01.2015 12:27
Hallöchen an Alle
Was mich immer stört ist immer die doppelte Schreibarbeit beim erstellen des Gadgetcode
und beim ResizeGadget. Man erstellt ein Gadget und wenn es an Fenstergröß angepasst werden soll
muss man wieder eine weitere Zeile schreiben.
Man sieht sowohl den Create als auch den Resize Code aber schön ist was anderes weil doppelte Schreibarbeit.
Warum fasst man es nicht zusammen und sagt ich will ein Gadget und soll an der Größe angepasst werden ohne zwei Zeilen schreiben zu müssen?
Müsste irgendwie gehen. Habs versucht und habs geschaft. Ich finde es so viel einfacher und spart zukünftig Schreibarbeit.
Wie man gut sehen kann schreibt man nur eine Zeile für beide Varianten sowohl Create als auch Resize.
Diese Lösung finde ich echt super gut und möchte es mit euch teilen.
Was mich immer stört ist immer die doppelte Schreibarbeit beim erstellen des Gadgetcode
und beim ResizeGadget. Man erstellt ein Gadget und wenn es an Fenstergröß angepasst werden soll
muss man wieder eine weitere Zeile schreiben.
Code: Alles auswählen
Define e
OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
EditorGadget(0, 5, 5, WindowWidth(0) - 10, (WindowHeight(0) / 2) - 5, 0)
EditorGadget(1, 5, (WindowHeight(0) / 2) + 5, WindowWidth(0) - 10, (WindowHeight(0) / 2) - 10, 0)
Repeat
e = WaitWindowEvent()
If e = #PB_Event_SizeWindow
ResizeGadget(0, 5, 5, WindowWidth(0) - 10, (WindowHeight(0) / 2) - 5)
ResizeGadget(1, 5, (WindowHeight(0) / 2) + 5, WindowWidth(0) - 10, (WindowHeight(0) / 2) - 10)
EndIf
Until e = #PB_Event_CloseWindow
Warum fasst man es nicht zusammen und sagt ich will ein Gadget und soll an der Größe angepasst werden ohne zwei Zeilen schreiben zu müssen?
Müsste irgendwie gehen. Habs versucht und habs geschaft. Ich finde es so viel einfacher und spart zukünftig Schreibarbeit.
Code: Alles auswählen
EnableExplicit
Define Event
Define Editor3
Procedure _CreateResizeGadget(Type$, Gadget, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P1$, P2$, P3$, P4$, P5$)
Protected GadgetNr, GadgetAnyNr, IsGadgetNr
If Gadget > 100000
GadgetNr = #PB_Any
GadgetAnyNr = PeekI(Gadget)
IsGadgetNr = PeekI(Gadget)
Else
GadgetNr = Gadget
IsGadgetNr = Gadget
EndIf
If IsGadget(IsGadgetNr)=0
Select Type$
Case "ButtonGadget" : GadgetAnyNr = ButtonGadget (GadgetNr, P1, P2, P3, P4, P1$, P6)
Case "CanvasGadget" : GadgetAnyNr = CanvasGadget (GadgetNr, P1, P2, P3, P4, P6)
Case "ContainerGadget" : GadgetAnyNr = ContainerGadget (GadgetNr, P1, P2, P3, P4, P6)
Case "ExplorerComboGadget" : GadgetAnyNr = ExplorerComboGadget(GadgetNr, P1, P2, P3, P4, P1$, P6)
Case "FrameGadget" : GadgetAnyNr = FrameGadget (GadgetNr, P1, P2, P3, P4, P1$, P6)
Case "ImageGadget" : GadgetAnyNr = ImageGadget (GadgetNr, P1, P2, P3, P4, P5, P6)
Case "MDIGadget" : GadgetAnyNr = MDIGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case "PanelGadget" : GadgetAnyNr = PanelGadget (GadgetNr, P1, P2, P3, P4)
Case "ScrollBarGadget" : GadgetAnyNr = ScrollBarGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7, P8)
Case "SplitterGadget" : GadgetAnyNr = SplitterGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case "TrackBarGadget" : GadgetAnyNr = TrackBarGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case "ButtonImageGadget" : GadgetAnyNr = ButtonImageGadget (GadgetNr, P1, P2, P3, P4, P5, P6)
Case "CheckBoxGadget" : GadgetAnyNr = CheckBoxGadget (GadgetNr, P1, P2, P3, P4, P1$, P5)
Case "DateGadget" : GadgetAnyNr = DateGadget (GadgetNr, P1, P2, P3, P4, P1$, P5, P6)
;... soon
Case "EditorGadget" : GadgetAnyNr = EditorGadget (GadgetNr, P1, P2, P3, P4, P6)
EndSelect
EndIf
If Gadget > 100000
PokeI(Gadget, GadgetAnyNr)
ResizeGadget(PeekI(Gadget), P1, P2, P3, P4)
Else
ResizeGadget(Gadget, P1, P2, P3, P4)
EndIf
EndProcedure
Define _, _G, _X, _Y, _W, _H, _T, _F
Macro ButtonGadget(_G, _X, _Y, _W, _H, _T, _F=0) : _CreateResizeGadget("ButtonGadget", _G, _X, _Y, _W, _H, _F, 0, 0, 0, 0, 0, _T, "", "", "", "") : EndMacro
Macro CanvasGadget(_G, _X, _Y, _W, _H, _F=0) : _CreateResizeGadget("CanvasGadget", _G, _X, _Y, _W, _H, _F, 0, 0, 0, 0, 0, "", "", "", "", "") : EndMacro
;... soon
Macro EditorGadget(_G, _X, _Y, _W, _H, _F=0) : _CreateResizeGadget("EditorGadget", _G, _X, _Y, _W, _H, _F, 0, 0, 0, 0, 0, "", "", "", "", "") : EndMacro
OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Repaint Or Event = #PB_Event_SizeWindow
EditorGadget(25, 5, 5, WindowWidth(0) - 10, WindowHeight(0) / 2, 0)
EditorGadget(50, 5, (WindowHeight(0) / 2) + 10, WindowWidth(0) - 10, (WindowHeight(0) / 2) - 35, 0)
ButtonGadget(@Editor3, WindowWidth(0) - 100, WindowHeight(0) - 20, 95, 15, "MyButton", 0)
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case Editor3
Debug "Es geht"
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Diese Lösung finde ich echt super gut und möchte es mit euch teilen.