Gadgeterstellung und Resize vereinfachen
Re: Gadgeterstellung und Resize vereinfachen
Ich mache das immer so (cross-platform).
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Gadgeterstellung und Resize vereinfachen
@Tommy:
Da hast du mich falsch verstanden. Ich meinte statt der beschreibenden Strings für Gadgettypen einfach die '#PB_GadgetType_*'-Konstanten nehmen:
Da hast du mich falsch verstanden. Ich meinte statt der beschreibenden Strings für Gadgettypen einfach die '#PB_GadgetType_*'-Konstanten nehmen:
Code: Alles auswählen
EnableExplicit
Define Event
Define Editor3
Procedure _CreateResizeGadget(Type.i, 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 #PB_GadgetType_Button : GadgetAnyNr = ButtonGadget (GadgetNr, P1, P2, P3, P4, P1$, P6)
Case #PB_GadgetType_Canvas : GadgetAnyNr = CanvasGadget (GadgetNr, P1, P2, P3, P4, P6)
Case #PB_GadgetType_Container : GadgetAnyNr = ContainerGadget (GadgetNr, P1, P2, P3, P4, P6)
Case #PB_GadgetType_ExplorerCombo : GadgetAnyNr = ExplorerComboGadget(GadgetNr, P1, P2, P3, P4, P1$, P6)
Case #PB_GadgetType_Frame : GadgetAnyNr = FrameGadget (GadgetNr, P1, P2, P3, P4, P1$, P6)
Case #PB_GadgetType_Image : GadgetAnyNr = ImageGadget (GadgetNr, P1, P2, P3, P4, P5, P6)
;Case "MDIGadget" : GadgetAnyNr = MDIGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case #PB_GadgetType_Panel : GadgetAnyNr = PanelGadget (GadgetNr, P1, P2, P3, P4)
Case #PB_GadgetType_ScrollBar : GadgetAnyNr = ScrollBarGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7, P8)
Case #PB_GadgetType_Splitter : GadgetAnyNr = SplitterGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case #PB_GadgetType_TrackBar : GadgetAnyNr = TrackBarGadget (GadgetNr, P1, P2, P3, P4, P5, P6, P7)
Case #PB_GadgetType_ButtonImage : GadgetAnyNr = ButtonImageGadget (GadgetNr, P1, P2, P3, P4, P5, P6)
Case #PB_GadgetType_CheckBox : GadgetAnyNr = CheckBoxGadget (GadgetNr, P1, P2, P3, P4, P1$, P5)
Case #PB_GadgetType_Date : GadgetAnyNr = DateGadget (GadgetNr, P1, P2, P3, P4, P1$, P5, P6)
;... soon
Case #PB_GadgetType_Editor : 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(#PB_GadgetType_Button, _G, _X, _Y, _W, _H, _F, 0, 0, 0, 0, 0, _T, "", "", "", "") : EndMacro
Macro CanvasGadget(_G, _X, _Y, _W, _H, _F=0) : _CreateResizeGadget(#PB_GadgetType_Canvas, _G, _X, _Y, _W, _H, _F, 0, 0, 0, 0, 0, "", "", "", "", "") : EndMacro
;... soon
Macro EditorGadget(_G, _X, _Y, _W, _H, _F=0) : _CreateResizeGadget(#PB_GadgetType_Editor, _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) - 45, 0)
ButtonGadget(@Editor3, WindowWidth(0) - 100, WindowHeight(0) - 30, 95, 25, "MyButton", 0)
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case Editor3
Debug "Es geht"
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Re: Gadgeterstellung und Resize vereinfachen
Gute Idee, NicTheQuick, mit den Konstanten. Danke für deine Mit-Hilfe. 

PB 5.41 x64