Kaeru Gaman hat geschrieben:1)
von Windows aus selber ist der Wert nur ein Word. ist nunmal so.
das hat auch in der PB-Help nichts zu suchen, weil es eine OS-Eigenschaft ist.
solche Informationen findet man dann auf der MSDN.
Windows kann das sehr wohl, wenn auch erst ab IE 5.
Hier mal ein kleines Beispiel wie man das Spingadget mit Werten
groesser als Word nutzen kann :
Code: Alles auswählen
Structure PB_GadgetVT
GadgetType.l
SizeOf.l
GadgetCallback.l
FreeGadget.l
GetGadgetState.l
SetGadgetState.l
GetGadgetText.l
SetGadgetText.l
AddGadgetItem2.l
AddGadgetItem3.l
RemoveGadgetItem.l
ClearGadgetItemList.l
ResizeGadget.l
CountGadgetItems.l
GetGadgetItemState.l
SetGadgetItemState.l
GetGadgetItemText.l
SetGadgetItemText.l
OpenGadgetList2.l
GadgetX.l
GadgetY.l
GadgetWidth.l
GadgetHeight.l
HideGadget.l
AddGadgetColumn.l
RemoveGadgetColumn.l
GetGadgetAttribute.l
SetGadgetAttribute.l
GetGadgetItemAttribute2.l
SetGadgetItemAttribute2.l
SetGadgetColor.l
GetGadgetColor.l
SetGadgetItemColor2.l
GetGadgetItemColor2.l
SetGadgetItemData.l
GetGadgetItemData.l
EndStructure
Structure PB_Gadget
Gadget.l
*VT.PB_GadgetVT
UserData.l
OldCallback.l
Daten.l[4]
EndStructure
#UDM_SETPOS32 = #WM_USER + 113
#UDM_GETPOS32 = #WM_USER + 114
Procedure Spin_GetGadgetState(*gadget.PB_Gadget)
ProcedureReturn SendMessage_(*gadget\Daten[3], #UDM_GETPOS32, 0, 0)
EndProcedure
Procedure Spin_SetGadgetState(*gadget.PB_Gadget, State)
SendMessage_(*gadget\Daten[3], #UDM_SETPOS32, 0, State)
EndProcedure
Procedure Spin_SetGadgetAttribute(*gadget.PB_Gadget, State, Val)
Protected min.l
Protected max.l
SendMessage_(*gadget\Daten[3], #UDM_GETRANGE32, @min, @max)
If state = #PB_Spin_Minimum
SendMessage_(*gadget\Daten[3], #UDM_SETRANGE32, val, max)
EndIf
If state = #PB_Spin_Maximum
SendMessage_(*gadget\Daten[3], #UDM_SETRANGE32, min, val)
EndIf
EndProcedure
Procedure Spin_GetGadgetAttribute(*gadget.PB_Gadget, State)
Protected min.l
Protected max.l
Protected res.l
SendMessage_(*gadget\Daten[3], #UDM_GETRANGE32, @min, @max)
If state = #PB_Spin_Minimum
res = min
EndIf
If state = #PB_Spin_Maximum
res = max
EndIf
ProcedureReturn res
EndProcedure
Procedure SpinGadgetEx(Gadget, x, y, cx, cy, min, max, Flags = 0)
Protected res.l
Protected id.l
Protected *ga.PB_Gadget
res = SpinGadget(Gadget, x, y, cx, cy, 0, 0, Flags)
If Gadget = #PB_Any
id = res
Else
id = Gadget
EndIf
*ga = IsGadget(id)
If *ga
*ga\VT\GetGadgetState = @Spin_GetGadgetState()
*ga\VT\SetGadgetState = @Spin_SetGadgetState()
*ga\VT\SetGadgetAttribute = @Spin_SetGadgetAttribute()
*ga\VT\GetGadgetAttribute = @Spin_GetGadgetAttribute()
EndIf
SetGadgetAttribute(0, #PB_Spin_Minimum, min)
SetGadgetAttribute(0, #PB_Spin_Maximum, max)
EndProcedure
Macro SpinGadget
SpinGadgetEx
EndMacro
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
SpinGadget(0, 20, 20, 100, 25, -111100, 1)
SetGadgetState(0, -100000)
SetGadgetText(0, "-100000")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
Select EventType()
Case #PB_EventType_Change
SetGadgetState(0, Val(GetGadgetText(0)))
Default
SetGadgetText(0, Str(GetGadgetState(0)))
EndSelect
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf