Hier mal ein kleine Auswahl die ich als absolut notwendige Dinge betrachte:
(Nicht weiter kommentiert, aber ich denke doch, dass man was damit anfangen kann und so das Rad nicht jedes mal neu erfinden muss)
Code: Alles auswählen
Procedure.s FormatWert(Wert.d, MinWert.d, MaxWert.d, InitWert.d, Format.d)
;
If Wert.d = #Undefiniert
Wert.d = InitWert.d
EndIf
If Wert.d < MinWert.d
Wert.d = MinWert.d
EndIf
If Wert.d > MaxWert.d
Wert.d = MaxWert.d
EndIf
;
AnzahlVorkommastellen.d = Int(Format.d / 10)
AnzahlNachkommastellen.d = Format.d - (AnzahlVorkommastellen.d * 10)
;
Temp$ = StrD(Wert.d, AnzahlNachkommastellen.d)
;
If AnzahlNachkommastellen.d > 0
AnzahlVorkommastellen.d = AnzahlVorkommastellen.d + 1
EndIf
Temp$ = RSet(Temp$, AnzahlVorkommastellen.d + AnzahlNachkommastellen.d)
;
ProcedureReturn Temp$
;
EndProcedure
Code: Alles auswählen
Procedure.i SetTextGadget(NumGadget.i, XPos.i, YPos.i, FontID.i, Text$)
;
Width.i = TextRealWidth(FontID.i, Text$)
TextGadget(NumGadget.i, XPos.i, YPos.i, Width.i, TextRealHeight(FontID.i, Text$), Text$)
SetGadgetFont(NumGadget.i, FontID.i)
SetGadgetNormalfarben(NumGadget.i)
;
ProcedureReturn Width.i
;
EndProcedure
Code: Alles auswählen
Procedure SetGadgetNormalfarben(NumGadget.i)
SetGadgetColor(NumGadget.i, #PB_Gadget_BackColor, RGBFarbcodes(Hintergrundfarbe.i))
SetGadgetColor(NumGadget.i, #PB_Gadget_FrontColor, RGBFarbcodes(Vordergrundfarbe.i))
EndProcedure
Code: Alles auswählen
Procedure EdierenEinAus(NumGadget.i, Edit.d, Status.i)
If Status.i = #Entriegelt
If Edit.d = #Ja
DisableGadget(NumGadget.i, 0)
PureCOLOR_SetGadgetColor(NumGadget.i, RGBFarbcodes(Eingabefeldvordergrundfarbe.i), RGBFarbcodes(Eingabefeldhintergrundfarbe.i))
EndIf
Else
DisableGadget(NumGadget.i, 1)
PureCOLOR_SetGadgetColor(NumGadget.i, SysColorGrayText.i, RGBFarbcodes(Hintergrundfarbe.i))
EndIf
EndProcedure
Code: Alles auswählen
Procedure ButtonEdierenEinAus(NumGadget.i, Edit.d, Status.i)
If Status.i = #Entriegelt
If Edit.d = #Ja
DisableGadget(NumGadget.i, 0)
PureCOLOR_SetGadgetColor(NumGadget.i, #PureCOLOR_UseLastColor, RGBFarbcodes(Hintergrundfarbe.i))
EndIf
Else
DisableGadget(NumGadget.i, 1)
PureCOLOR_SetGadgetColor(NumGadget.i, #PureCOLOR_SystemColor, #PureCOLOR_DontSetBackColor)
EndIf
EndProcedure
Code: Alles auswählen
Procedure.i SetRealTextGadget(NumGadget.i, XPos.i, YPos.i, BreiteMin.i, Hoehe.i, FontID.i, Text$, Flags.i)
;
Breite.i = TextRealWidth(FontID.i, Text$)
If Breite.i < BreiteMin.i
Breite.i = BreiteMin.i
EndIf
;
If Flags.i = 0
TextGadget(NumGadget.i, XPos.i, YPos.i, Breite.i, Hoehe.i, Text$)
Else
TextGadget(NumGadget.i, XPos.i, YPos.i, Breite.i, Hoehe.i, Text$, Flags.i)
EndIf
SetGadgetFont(NumGadget.i, FontID.i)
SetGadgetNormalfarben(NumGadget.i)
;
ProcedureReturn Breite.i
;
EndProcedure
Code: Alles auswählen
Procedure SetButtonImageGadget(NumGadget.i, XPos.i, YPos.i, ImageNumState0.i, ImageNumState1.i, Status.i)
;
If Status.i = 1
ID.i = ImageNumState1.i
Else
ID.i = ImageNumState0.i
EndIf
;
ButtonImageGadget(NumGadget.i, XPos.i, YPos.i, ImageWidth(ID.i), ImageHeight(ID.i), ImageID(ID.i), 0)
s.l=GetWindowLong_(GadgetID(NumGadget.i), #GWL_STYLE)
SetWindowLong_(GadgetID(NumGadget.i), #GWL_STYLE, #BS_FLAT | #BS_OWNERDRAW | s)
;
EndProcedure
Code: Alles auswählen
Procedure.i GetButtonImageGadgetState(NumGadget.i, ImageNumState0.i, ImageNumState1.i)
;
If GetGadgetAttribute(NumGadget.i, #PB_Button_Image) = ImageID(ImageNumState1.i)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
;
EndProcedure
Code: Alles auswählen
Procedure ToggleButtonImageGadget(NumGadget.i, ImageNumState0.i, ImageNumState1.i)
;
Status.i = GetGadgetAttribute(NumGadget.i, #PB_Button_Image)
If Status.i = ImageID(ImageNumState0.i)
SetGadgetAttribute(NumGadget.i, #PB_Button_Image, ImageID(ImageNumState1.i))
Else
SetGadgetAttribute(NumGadget.i, #PB_Button_Image, ImageID(ImageNumState0.i))
EndIf
PureCOLOR_SetGadgetColor(NumGadget.i, #PureCOLOR_UseLastColor, RGBFarbcodes(Hintergrundfarbe.i))
;
EndProcedure
Code: Alles auswählen
PROCEDURE.i TextRealWidth(FontID, Text$)
PROTECTED dc = GetDC_(0)
PROTECTED sz.Size
SelectObject_(dc, FontID)
GetTextExtentPoint32_(dc, Text$, Len(Text$), sz)
ReleaseDC_(0, dc)
PROCEDURERETURN sz\cx
ENDPROCEDURE
Code: Alles auswählen
PROCEDURE.i TextRealHeight(FontID, Text$)
PROTECTED dc = GetDC_(0)
PROTECTED sz.Size
SelectObject_(dc, FontID)
GetTextExtentPoint32_(dc, Text$, Len(Text$), sz)
ReleaseDC_(0, dc)
PROCEDURERETURN sz\cy
ENDPROCEDURE
Code: Alles auswählen
Procedure.i SetNumerischesEingabefeld(NumGadget.i, XPos.i, YPos.i, WertMin.d, WertMax.d, WertVorgabe.d, WertFormat.d, Wert.d, FontID.i)
;
If Wert.d = #Undefiniert
Edit$ = ""
AnzahlVorkommastellen.d = Int(WertFormat.d / 10)
AnzahlNachkommastellen.d = WertFormat.d - (AnzahlVorkommastellen.d * 10)
If AnzahlVorkommastellen.d > 0
For X.i = 1 To AnzahlVorkommastellen.d
Edit$ = Edit$ + "#"
Next
EndIf
If AnzahlNachkommastellen.d > 0
Edit$ = Edit$ + "."
For X.i = 1 To AnzahlNachkommastellen.d
Edit$ = Edit$ + "#"
Next
EndIf
Else
Edit$ = FormatWert(Wert.d, WertMin.d, WertMax.d, WertVorgabe.d, WertFormat.d)
EndIf
;
BreiteEingabefeld.i = TextRealWidth(FontID.i, Edit$ + "X")
HoeheEingabefeld.i = TextRealHeight(FontID.i, Edit$)
StringGadget(NumGadget.i, XPos.i, YPos.i, BreiteEingabefeld.i, HoeheEingabefeld.i, Edit$)
SendMessage_(GadgetID(NumGadget.i), #EM_LIMITTEXT, 0, 0)
SetGadgetEingabefeldfarben(NumGadget.i)
SetGadgetFont(NumGadget.i, FontID.i)
;
ProcedureReturn BreiteEingabefeld.i
;
EndProcedure
Code: Alles auswählen
Procedure.s GetAndFormatNumStringGadget(NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d)
;
Wert$ = RemoveString(GetGadgetText(NumGadget.i), " ")
If IsNumeric(Wert$)
Wert.d = ValD(Wert$)
Else
Wert.d = #Undefiniert
EndIf
Wert$ = FormatWert(Wert.d, Min.d, Max.d, Vorgabe.d, Format.d)
SetGadgetText(NumGadget.i, Wert$)
;
ProcedureReturn Wert$
;
EndProcedure
Code: Alles auswählen
Procedure KeyNumParGadget(NumGadget.i, ShortcutID.i, Min.d, Max.d, Vorgabe.d, Format.d)
;
If EventMenu() = ShortcutID.i
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, 0)
Wert$ = GetAndFormatNumStringGadget(NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d)
SetGadgetText(NumGadget.i, Wert$)
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, 0)
keybd_event_(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
Keybd_Event_(#VK_TAB, 0, 0, 0)
EndIf
;
EndProcedure
Code: Alles auswählen
Procedure EditNumParGadget(NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d)
;
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, 0)
If EventType() = #PB_EventType_Change
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, $fffffff)
EndIf
If EventType() = #PB_EventType_LostFocus
Wert.d = ValD(GetAndFormatNumStringGadget(NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d))
EndIf
;
EndProcedure
Code: Alles auswählen
Procedure ScrollEditNumParGadget(NumScrollArea.i, NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d)
;
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, 0)
;
If EventType() = #PB_EventType_Focus
SetGadgetAttribute(NumScrollArea.i, #PB_ScrollArea_Y, GadgetY(NumGadget.i) - GetGadgetData(NumScrollArea.i))
EndIf
;
If EventType() = #PB_EventType_Change
SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, $fffffff, $fffffff)
EndIf
;
If EventType() = #PB_EventType_LostFocus
Wert.d = ValD(GetAndFormatNumStringGadget(NumGadget.i, Min.d, Max.d, Vorgabe.d, Format.d))
EndIf
;
EndProcedure
Code: Alles auswählen
Procedure ScrollEditSelektorGadget(NumScrollArea.i, NumGadget.i)
;
If EventType() = #PB_EventType_RightDoubleClick ;3 ;#PB_EventType_LostFocus
SetGadgetAttribute(NumScrollArea.i, #PB_ScrollArea_Y, GadgetY(NumGadget.i) - GetGadgetData(NumScrollArea.i))
EndIf
;
EndProcedure
Code: Alles auswählen
Procedure ScrollKeyButtonImageGadget(NumScrollArea.i, NumGadget.i)
;
SetGadgetAttribute(NumScrollArea.i, #PB_ScrollArea_Y, GadgetY(NumGadget.i) - GetGadgetData(NumScrollArea.i))
Keybd_Event_(#VK_TAB, 0, 0, 0)
;
EndProcedure
Code: Alles auswählen
Procedure.i ScrollNoEventKeyButtonImageGadget(NumScrollArea.i, NumGadget.i)
;
SetGadgetAttribute(NumScrollArea.i, #PB_ScrollArea_Y, GadgetY(NumGadget.i) - GetGadgetData(NumScrollArea.i))
ProcedureReturn NumGadget.i
;
EndProcedure
Code: Alles auswählen
Procedure.i SetComboboxSelektor(NumGadget.i, Array Selektoren.s(1), XPos.i, YPos.i, SelektorMin.d, SelektorMax.d, SelektorVorgabe.d, SelektorEingabe.d, Vordergrundfarbe.i, Hintergrundfarbe.i, FontID.i)
;
MaxBreite.i = 0
For Selektorzaehler.i = SelektorMin.d To SelektorMax.d
Breite.i = TextRealWidth(FontID.i, Selektoren.s(Selektorzaehler.i) + "Xi")
If Breite.i > MaxBreite.i
MaxBreite.i = Breite.i
EndIf
Next
;
ComboBoxGadget(NumGadget.i, XPos.i, YPos.i, MaxBreite.i, TextRealHeight(FontID.i, Selektoren.s(Int(SelektorMin.d))), #CBS_NOINTEGRALHEIGHT)
SetGadgetFont(NumGadget.i, FontID.i)
PureCOLOR_SetGadgetColor(NumGadget.i, RGBFarbcodes(Vordergrundfarbe.i), RGBFarbcodes(Hintergrundfarbe.i))
;
For Selektorzaehler.i = SelektorMin.d To SelektorMax.d
AddGadgetItem(NumGadget.i, -1, Selektoren.s(Selektorzaehler.i))
Next
;
If ((SelektorEingabe.d < SelektorMin.d) OR (SelektorEingabe.d > SelektorMax.d))
Selektorstatus.i = SelektorVorgabe.d - 1
Else
Selektorstatus.i = SelektorEingabe.d - 1
EndIf
SetGadgetState(NumGadget.i, Selektorstatus.i)
;
ProcedureReturn MaxBreite.i
;
EndProcedure
Gruß
Daffy