Seite 2 von 2

Re: Gadgeterstellung und Resize vereinfachen

Verfasst: 20.01.2015 18:10
von Nino
Ich mache das immer so (cross-platform).

Re: Gadgeterstellung und Resize vereinfachen

Verfasst: 20.01.2015 18:23
von NicTheQuick
@Tommy:
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

Verfasst: 20.01.2015 22:14
von Tommy
Gute Idee, NicTheQuick, mit den Konstanten. Danke für deine Mit-Hilfe. :allright: