ListIconGadget mit den Maus positionieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

ListIconGadget mit den Maus positionieren

Beitrag von marcelx »

Hallo,

wie kann ich ein ListIconGadget mit der Maus positionieren und die Größe verändern?

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration
    
Enumeration   
  #tbl_data
EndEnumeration

If OpenWindow(#Window_0, 0, 0, 640, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(#tbl_data,  10,  25, 220, 100, "Column 1", 100)
    AddGadgetColumn(#tbl_data, 1, "Column 2", 100)
    
    For b = 0 To 20          ; fügt 4 Einträge auf jeder Zeile der ListIcons hinzu
      AddGadgetItem(#tbl_data, b, "Item 1"+Chr(10)+"Item 2")
    Next

  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Danke für ein Hinweis und Gruß
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ListIconGadget mit den Maus positionieren

Beitrag von mk-soft »

Schau mal hier...

Link viewtopic.php?f=8&t=29423
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget mit den Maus positionieren

Beitrag von marcelx »

Super (und schnell geantwortet)
Danke mk-soft und Gruß
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget mit den Maus positionieren

Beitrag von marcelx »

Hallo,

ich habe den Code aus Link übernommen.

Ich möchte die "Box" an Ecke und so weg haben und die Maus als Kreuz für die gesamte Fläche.
Leider habe ich nicht gefunden wo in den Code was zu ändern wäre.
Änderung:
Die Box konnte ich abschalten (s. BOX)
Wie sieht es aus mit die Maus als Kreuz für die gesamte Fläche für das Positionierung der Gadget?

Code: Alles auswählen

DeclareModule GadgetTransformation
   
   Enumeration 1
      #ButtonTest_Position
      #ButtonTest_Horizontally
      #ButtonTest_Vertically
   EndEnumeration
   
   #ButtonTest_Size = #ButtonTest_Horizontally|#ButtonTest_Vertically
   #ButtonTest_All  = #ButtonTest_Position|#ButtonTest_Horizontally|#ButtonTest_Vertically
   
   Declare DisableGadgetTransformation(Gadget.i)
   Declare EnableGadgetTransformation(Gadget.i, Flags.i=#ButtonTest_All, Grid.i=1)
   
EndDeclareModule

Module GadgetTransformation
   
   EnableExplicit
   
   #HandelSize = 5
   
   Structure GadgetTransformation
      Gadget.i
      Handle.i[10]
      Grid.i
   EndStructure
   
   Structure DataBuffer
      Handle.i[10]
   EndStructure
   
   Global NewList GadgetTransformation.GadgetTransformation()
   
   Procedure.i GridMatch(Value.i, Grid.i, Max.i=$7FFFFFFF)
      Value = Round(Value/Grid, #PB_Round_Nearest)*Grid
      If Value > Max
         ProcedureReturn Max
      Else
         ProcedureReturn Value
      EndIf
   EndProcedure
   
   Procedure GadgetTransformation_Callback()
      Static Selected.i, X.i, Y.i, OffsetX.i, OffsetY.i, GadgetX0.i, GadgetX1.i, GadgetY0.i, GadgetY1.i
      Protected *GadgetTransformation.GadgetTransformation = GetGadgetData(EventGadget())
      With *GadgetTransformation
         Select EventType()
            Case #PB_EventType_LeftButtonDown
               Selected = #True
               OffsetX = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseX)
               OffsetY = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseY)
               GadgetX0 = GadgetX(\Gadget)
               GadgetX1 = GadgetX0 + GadgetWidth(\Gadget)
               GadgetY0 = GadgetY(\Gadget)
               GadgetY1 = GadgetY0 + GadgetHeight(\Gadget)
            Case #PB_EventType_LeftButtonUp
               Selected = #False
            Case #PB_EventType_MouseMove
               If Selected
                  X = WindowMouseX(GetActiveWindow())-OffsetX
                  Y = WindowMouseY(GetActiveWindow())-OffsetY
                  Select EventGadget()
                     Case \Handle[1]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[2]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, #PB_Ignore, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[3]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[4]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore)
                     Case \Handle[5]
                        ResizeGadget(\Gadget, GridMatch(X-#HandelSize, \Grid), GridMatch(Y+#HandelSize, \Grid), #PB_Ignore, #PB_Ignore)
                     Case \Handle[6]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, #PB_Ignore)
                     Case \Handle[7]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y+#HandelSize, \Grid, GadgetY1), GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[8]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), #PB_Ignore, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[9]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), GridMatch(X, \Grid)-GadgetX0, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                  EndSelect
                  If \Handle[1]
                     ResizeGadget(\Handle[1], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[2]
                     ResizeGadget(\Handle[2], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[3]
                     ResizeGadget(\Handle[3], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[4]
                     ResizeGadget(\Handle[4], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[5]
                     ResizeGadget(\Handle[5], GadgetX(\Gadget)+#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[6]
                     ResizeGadget(\Handle[6], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[7]
                     ResizeGadget(\Handle[7], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[8]
                     ResizeGadget(\Handle[8], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[9]
                     ResizeGadget(\Handle[9], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
               EndIf
         EndSelect
      EndWith
   EndProcedure
   
   Procedure DisableGadgetTransformation(Gadget.i)
      Protected I.i, *GadgetTransformation.GadgetTransformation
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
   EndProcedure
   
   Procedure EnableGadgetTransformation(Gadget.i, Flags.i=#ButtonTest_All, Grid.i=1)
      Protected Handle.i, I.i
      Protected *GadgetTransformation.GadgetTransformation
      Protected *Cursors.DataBuffer = ?Cursors
      Protected *Flags.DataBuffer = ?Flags
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
      *GadgetTransformation = AddElement(GadgetTransformation())
      *GadgetTransformation\Gadget = Gadget
      *GadgetTransformation\Grid = Grid
      For I = 1 To 9
        If Flags & *Flags\Handle[I] = *Flags\Handle[I]
            Select I
               Case 1
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 2
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 3
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 4
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 5
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+#HandelSize, GadgetY(Gadget)-#HandelSize, 2*#HandelSize, #HandelSize)
               Case 6
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 7
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 8
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 9
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
            EndSelect
            *GadgetTransformation\Handle[I] = Handle
            SetGadgetData(Handle, *GadgetTransformation)
            SetGadgetAttribute(Handle, #PB_Canvas_Cursor, *Cursors\Handle[I])
; OHNE BOX
;             If StartDrawing(CanvasOutput(Handle))
;                Box(0, 0, OutputWidth(), OutputHeight(), $000000)
;                Box(1, 1, OutputWidth()-2, OutputHeight()-2, $FFFFFF)
;                StopDrawing()
;             EndIf

            BindGadgetEvent(Handle, @GadgetTransformation_Callback())
         EndIf
      Next
      DataSection
         Cursors:
         Data.i 0, #PB_Cursor_LeftDownRightUp, #PB_Cursor_UpDown, #PB_Cursor_LeftUpRightDown, #PB_Cursor_LeftRight
         Data.i #PB_Cursor_Arrows, #PB_Cursor_LeftRight, #PB_Cursor_LeftUpRightDown, #PB_Cursor_UpDown, #PB_Cursor_LeftDownRightUp
         Flags:
         Data.i 0, #ButtonTest_Size, #ButtonTest_Vertically, #ButtonTest_Size, #ButtonTest_Horizontally
         Data.i #ButtonTest_Position, #ButtonTest_Horizontally, #ButtonTest_Size, #ButtonTest_Vertically, #ButtonTest_Size
      EndDataSection
   EndProcedure
   
EndModule

UseModule GadgetTransformation

Enumeration
   #Window
   #ButtonTest
   #ListGadget
EndEnumeration

OpenWindow(#Window, 0, 0, 600, 400, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

ListIconGadget(#ListGadget, 50, 100, 200, 100, "Column 1", 100, #PB_ListIcon_FullRowSelect)

AddGadgetColumn(#ListGadget, 1, "Column 2", 100)
    
For b = 0 To 20
  AddGadgetItem(#ListGadget, b, "Item 1"+Chr(10)+"Item 2")
Next
    
ButtonGadget(#ButtonTest, 20, 20, 150, 25, "Test", #PB_Button_Toggle)

EnableGadgetTransformation(#ListGadget, #ButtonTest_All, 10)
                     
                     
Repeat
   
   Select WaitWindowEvent()
         
      Case #PB_Event_CloseWindow
         End
         
      Case #PB_Event_Gadget
         Select EventGadget()
            Case #ButtonTest
              Debug "Test"
              GadgetX = GadgetX(#ListGadget)
              GadgetY = GadgetY(#ListGadget)
              GadgetdY = GadgetWidth(#ListGadget)
              GadgetdX = GadgetHeight(#ListGadget)
               
              Debug "X/Y: "+Str(GadgetX)+"/"+Str(GadgetY)+ " dX/dY: "+Str(GadgetdX)+"/"+Str(GadgetdY)
         EndSelect
        
   EndSelect
   
ForEver
Danke für ein Hinweise und Gruß
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ListIconGadget mit den Maus positionieren

Beitrag von bobobo »

so in der Art vielleicht? ohne Krezz whatever

der TestButton aktiviert die Möglichkeit der Größenänderung
während Du Space gedrückt hältst, hängt das Gadget mittig
am Mauscursor und kann hin und her geschoben werden.
Danach wieder auf den TestButton zum Aktivieren der Möglichk.... s-o-

Code: Alles auswählen

DeclareModule GadgetTransformation
   
   Enumeration 1
      #ButtonTest_Position
      #ButtonTest_Horizontally
      #ButtonTest_Vertically
   EndEnumeration
   
   #ButtonTest_Size = #ButtonTest_Horizontally|#ButtonTest_Vertically
   #ButtonTest_All  = #ButtonTest_Position|#ButtonTest_Horizontally|#ButtonTest_Vertically
   
   Declare DisableGadgetTransformation(Gadget.i)
   Declare EnableGadgetTransformation(Gadget.i, Flags.i=#ButtonTest_All, Grid.i=1)
   
EndDeclareModule

Module GadgetTransformation
   
   EnableExplicit
   
   #HandelSize = 5
   
   Structure GadgetTransformation
      Gadget.i
      Handle.i[10]
      Grid.i
   EndStructure
   
   Structure DataBuffer
      Handle.i[10]
   EndStructure
   
   Global NewList GadgetTransformation.GadgetTransformation()
   
   Procedure.i GridMatch(Value.i, Grid.i, Max.i=$7FFFFFFF)
      Value = Round(Value/Grid, #PB_Round_Nearest)*Grid
      If Value > Max
         ProcedureReturn Max
      Else
         ProcedureReturn Value
      EndIf
   EndProcedure
   
   Procedure GadgetTransformation_Callback()
      Static Selected.i, X.i, Y.i, OffsetX.i, OffsetY.i, GadgetX0.i, GadgetX1.i, GadgetY0.i, GadgetY1.i
      Protected *GadgetTransformation.GadgetTransformation = GetGadgetData(EventGadget())
      With *GadgetTransformation
         Select EventType()
            Case #PB_EventType_LeftButtonDown
               Selected = #True
               OffsetX = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseX)
               OffsetY = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseY)
               GadgetX0 = GadgetX(\Gadget)
               GadgetX1 = GadgetX0 + GadgetWidth(\Gadget)
               GadgetY0 = GadgetY(\Gadget)
               GadgetY1 = GadgetY0 + GadgetHeight(\Gadget)
            Case #PB_EventType_LeftButtonUp
               Selected = #False
            Case #PB_EventType_MouseMove
               If Selected
                  X = WindowMouseX(GetActiveWindow())-OffsetX
                  Y = WindowMouseY(GetActiveWindow())-OffsetY
                  Select EventGadget()
                     Case \Handle[1]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[2]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, #PB_Ignore, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[3]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[4]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore)
                     Case \Handle[5]
                        ResizeGadget(\Gadget, GridMatch(X-#HandelSize, \Grid), GridMatch(Y+#HandelSize, \Grid), #PB_Ignore, #PB_Ignore)
                     Case \Handle[6]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, #PB_Ignore)
                     Case \Handle[7]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y+#HandelSize, \Grid, GadgetY1), GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[8]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), #PB_Ignore, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[9]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), GridMatch(X, \Grid)-GadgetX0, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                  EndSelect
                  If \Handle[1]
                     ResizeGadget(\Handle[1], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[2]
                     ResizeGadget(\Handle[2], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[3]
                     ResizeGadget(\Handle[3], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[4]
                     ResizeGadget(\Handle[4], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[5]
                     ResizeGadget(\Handle[5], GadgetX(\Gadget)+#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[6]
                     ResizeGadget(\Handle[6], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[7]
                     ResizeGadget(\Handle[7], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[8]
                     ResizeGadget(\Handle[8], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[9]
                     ResizeGadget(\Handle[9], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
               EndIf
         EndSelect
      EndWith
   EndProcedure
   
   Procedure DisableGadgetTransformation(Gadget.i)
      Protected I.i, *GadgetTransformation.GadgetTransformation
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
   EndProcedure
   
   Procedure EnableGadgetTransformation(Gadget.i, Flags.i=#ButtonTest_All, Grid.i=1)
      Protected Handle.i, I.i
      Protected *GadgetTransformation.GadgetTransformation
      Protected *Cursors.DataBuffer = ?Cursors
      Protected *Flags.DataBuffer = ?Flags
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
      *GadgetTransformation = AddElement(GadgetTransformation())
      *GadgetTransformation\Gadget = Gadget
      *GadgetTransformation\Grid = Grid
      For I = 1 To 9
        If Flags & *Flags\Handle[I] = *Flags\Handle[I]
            Select I
               Case 1
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 2
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 3
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 4
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 5
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+#HandelSize, GadgetY(Gadget)-#HandelSize, 2*#HandelSize, #HandelSize)
               Case 6
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 7
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 8
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 9
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
            EndSelect
            *GadgetTransformation\Handle[I] = Handle
            SetGadgetData(Handle, *GadgetTransformation)
            SetGadgetAttribute(Handle, #PB_Canvas_Cursor, *Cursors\Handle[I])
; OHNE BOX
;             If StartDrawing(CanvasOutput(Handle))
;                Box(0, 0, OutputWidth(), OutputHeight(), $000000)
;                Box(1, 1, OutputWidth()-2, OutputHeight()-2, $FFFFFF)
;                StopDrawing()
;             EndIf

            BindGadgetEvent(Handle, @GadgetTransformation_Callback())
         EndIf
      Next
      DataSection
         Cursors:
         Data.i 0, #PB_Cursor_LeftDownRightUp, #PB_Cursor_UpDown, #PB_Cursor_LeftUpRightDown, #PB_Cursor_LeftRight
         Data.i #PB_Cursor_Arrows, #PB_Cursor_LeftRight, #PB_Cursor_LeftUpRightDown, #PB_Cursor_UpDown, #PB_Cursor_LeftDownRightUp
         Flags:
         Data.i 0, #ButtonTest_Size, #ButtonTest_Vertically, #ButtonTest_Size, #ButtonTest_Horizontally
         Data.i #ButtonTest_Position, #ButtonTest_Horizontally, #ButtonTest_Size, #ButtonTest_Vertically, #ButtonTest_Size
      EndDataSection
   EndProcedure
   
EndModule

UseModule GadgetTransformation

Enumeration
   #Window
   #ButtonTest
   #ListGadget
EndEnumeration

OpenWindow(#Window, 0, 0, 600, 400, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

ListIconGadget(#ListGadget, 50, 100, 200, 100, "Column 1", 100, #PB_ListIcon_FullRowSelect)

AddGadgetColumn(#ListGadget, 1, "Column 2", 100)
    
For b = 0 To 20
  AddGadgetItem(#ListGadget, b, "Item 1"+Chr(10)+"Item 2")
Next
    
ButtonGadget(#ButtonTest, 20, 20, 150, 25, "Kick in to resize Listicongadget", #PB_Button_Toggle)



AddKeyboardShortcut(#Window,#PB_Shortcut_Space,1)                    
                     
Repeat
   
   Select WaitWindowEvent()
         
      Case #PB_Event_CloseWindow
         End
       Case #PB_Event_Menu
         Select EventMenu()
           Case 1
             DisableGadgetTransformation(#ListGadget)
             Debug "Das Listicon hängt mittig an der Maus"
             ResizeGadget(#ListGadget,WindowMouseX(#window)-GadgetWidth(#ListGadget)/2,WindowMouseY(#window)-GadgetHeight(#ListGadget)/2,#PB_Ignore,#PB_Ignore)
             
         EndSelect
         
      Case #PB_Event_Gadget
         Select EventGadget()
           Case #ButtonTest
             EnableGadgetTransformation(#ListGadget, #ButtonTest_All, 10)
              Debug "Test"
              GadgetX = GadgetX(#ListGadget)
              GadgetY = GadgetY(#ListGadget)
              GadgetdY = GadgetWidth(#ListGadget)
              GadgetdX = GadgetHeight(#ListGadget)
               
              Debug "X/Y: "+Str(GadgetX)+"/"+Str(GadgetY)+ " dX/dY: "+Str(GadgetdX)+"/"+Str(GadgetdY)
         EndSelect
        
   EndSelect
   
ForEver
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget mit den Maus positionieren

Beitrag von marcelx »

Danke bobobo,
nur die Größe der ListIconGadget kann ich nicht ändern
Win-10, PB 5.31 (Windows - x86)
Antworten