Das ist ein bugfix Release, es gibt also nicht viel neues, aber einige wichtige
fixes. (Beispiel Memory-Leak mit Strings und LinkedLists)
Änderungen:
Hilfe zu den neuen Befehlen:- Added: CalendarGadget() and DateGadget(), thanks to Fr34k !
- Added: Doubleclick on windows background now generate an event (Thanks to Rings)
- Added: LibraryID()
- Added: SaveSprite() now have an optional 'Flags' parameter and can now save 8 bits sprite/screen
- Optimized: ListCount() and ListIndex() are now very fast (it doesn't iterate each element of the list anymore).
- Changed: DeleteElement() now always goes back to the previous element (can be outside the list if
it was the first element), to be fully compatible with ForEach. An optional flag has been added to preserve previous behaviour.
- Changed: the application current directory isn't anymore touched by any PureBasic command to conform
to Windows rules.
- Fixed: IsSound() wasn't available in NT4 mode
- Fixed: AddDate() could fail depending of the computer time zone
- Fixed: Memory leak with linkedlists, arrays and local variables when using a structure which contained strings
- Fixed: SaveSprite() default value for JPEG saving is now '7'.
- Fixed: DisplayPalette() failed on XP systems (1st and last color remained unchanged)
- Fixed: ImageGadget() now supports ToolTips and bitmap/icon live switching
- Fixed: ImageButtonGadget() now supports skinning and bitmap/icon live switching
- Fixed: SetGadgetItemText() for ListViewGadget() destroyed the item user data
- Fixed: CopyImage() failed on WinNT4 under some conditions
- Fixed: A memory leak in SendNetworkFile(). Now, it returns 1 on success or 0 on failure.
- Fixed: StatusBarText() didn't refresh the statusbar with the 'Borderless' flag
- Fixed: CatchImage() with #PB_any
- Fixed: the PNG decoder nows handle corrupted PNG safely
- Fixed: the JPEG encoder with quality value inferior to 3 could lead to a crash
- Fixed: a little TreeGadget() bug when checkboxes were activated
- Fixed: several compiler bugs
CalendarGadget()
Syntax
CalendarGadget(#Gadget, x, y, Breite, Höhe [, Datum [, Flags]])
Beschreibung
Erstellt ein Kalendergadget innerhalb der aktuellen Gadgetliste. Dieses Gadget stellt einen Monatskalender dar und lässt den Anwender ein Datum auswählen. Die von diesem Gadget und seinen relevanten Befehlen verwendeten Datumsangaben benutzen das gleiche Datumsformat wie die PB Date Library.
Wenn #PB_Any als '#Gadget' Parameter verwendet wird, dann wird der Identifier des neuen Gadgets als 'Ergebnis' zurückgegeben. #Gadget ist die Nummer, die (später) von der EventGadgetID() Funktion zurückgegeben wird.
Der 'Datum' Parameter kann optional genutzt werden, um ein bestimmtes Datum auszuwählen. Wird keines angegeben, dann wird das aktuelle Datum verwendet.
Sie können #PB_Calendar_Borderless als 'Flags' Parameter angeben, wenn Sie das Gadget ohne einen Rand erstellen wollen.
Die folgenden Befehle können zum Zugriff auf den Inhalt des Kalendergadgets genutzt werden:
- SetGadgetState(): setzt das aktuell anzuzeigende Datum.
- GetGadgetState(): ermittelt das aktuell angezeigte Datum.
Beispiel:
If OpenWindow(0, 0, 0, 220, 200, #PB_Window_SystemMenu|#PB_Window_Screencentered,"CalendarGadget()")
If CreateGadgetList(WindowID())
CalendarGadget(0, 10, 10, 200, 180)
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
DateGadget()
Syntax
Ergebnis = DateGadget(#Gadget, x, y, Breite, Höhe [, Maske$ [, Datum [, Flags]]])
Beschreibung
Erstellt ein Stringgadget innerhalb der aktuellen Gadgetliste, in welchem ein Datum und/oder eine Zeit eingegeben werden kann.
Dieses Gadget verwendet das gleiche Datumsformat für seine Funktionen wie die Date Library. Damit können Sie z.B. FormatDate() verwenden, um die mittels GetGadgetState() erhaltenen Ergebnisse in einem ordentlichen Datumsformat anzuzeigen.
Wenn #PB_Any als '#Gadget' Parameter verwendet wird, dann wird der Identifier des neuen Gadgets als 'Ergebnis' zurückgegeben. #Gadget ist die Nummer, die (später) von der EventGadgetID() Funktion zurückgegeben wird.
Mit dem optionalen 'Maske$' Parameter können Sie das Format angeben, in welchem das Datum eingegeben werden kann. Siehe FormatDate() für das Format dieser Maske.
Wichtiger Hinweis: Das Gadget unterstützt nicht die Anzeige von Sekunden, wenn Sie also "%ss" im 'Maske$' Parameter angeben, wird dies einfach ignoriert!
Wenn Sie keine Maske oder einen leeren String angeben, wird eine Standardmaske verwendet. Die Maske kann mittels dem SetGadgetText() Befehl verändert werden.
Mit dem optionalen 'Datum' Parameter können Sie das anzuzeigende Datum auf jedes Datum Ihrer Wahl einstellen. Ohne diesen Parameter oder die Angabe einer 0 wird das aktuelle Datum verwendet.
Standardmäßig hat das Gadget einen Schalter zum Aufrufen eines Kalenders, in welchem der Anwender ein Datum auswählen kann (siehe Bild weiter unten). Sie können dies ändern, wenn Sie #PB_Date_UpDown als 'Flags' Parameter angeben. Dies versieht das Gadget mit einem Hoch/Runter-Schalter, mit welchem der Anwender den aktuell ausgewählten Teil des Gadgets verändern kann.
Die folgenden Befehle können zum Zugriff auf den Inhalt des Datumsgadgets genutzt werden:
- SetGadgetState(): Setzt das aktuell angezeigte Datum.
- SetGadgetText(): Ändert die Eingabemaske des Gadgets.
- SetGadgetAttribute(): Setzt ein Minimum/Maximum Datum, welches der Anwender auswählen kann.
- GetGadgetState(): Ermittelt das aktuell angezeigte Datum.
- GetGadgetText(): Ermittelt das aktuell angezeigte Datum als ein String, wie dieser im Gadget angezeigt wird.
- GetGadgetAttribute(): Ermittelt das Minimum/Maximum Datum des Gadgets.
Beispiel:
If OpenWindow(0, 0, 0, 200, 250, #PB_Window_SystemMenu|#PB_Window_Screencentered,"DateGadget()")
If CreateGadgetList(WindowID())
DateGadget(0, 10, 10, 180, 25, "Datum: %mm/%dd/%yyyy Zeit: %hh:%ii")
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf