Seite 1 von 2
[ERLEDIGT] DateGadget() und EditorGadget Rahmenlos
Verfasst: 04.06.2015 22:45
von udg
Laut Help soll es möglich sein ein DateGadget() mit #PB_Gadget_BackColor : Hintergrundfarbe
einzufärben.
Leider geht das nicht so wie ich mir das vorstelle
Ich möchte das Gadget wo es das Datum anzeigt schwarz machen und die Schrift weis.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 220, 200, "CalendarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $0)
DateGadget(0, 15, 50, 200, 17, "%dd/%mm/%yyyy", Date())
SetGadgetColor(0, #PB_Gadget_BackColor, $0)
SetGadgetColor(0, #PB_Gadget_FrontColor, $ffffff)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Danke für Hilfe. (sollte doch möglich sein oder? )
Re: [Frage] DateGadget()
Verfasst: 04.06.2015 22:49
von Kiffi
ja, anscheinend funktioniert das nur, wenn in den Compiler-Optionen 'Enable modern theme support' abgehakt ist.
Grüße ... Peter
Re: [Frage] DateGadget()
Verfasst: 04.06.2015 23:34
von RSBasic
Wie Kiffi schon richtig sagte, ist das Deaktivieren der XP-Skin-Funktion erforderlich, aber du kannst mit WinAPI das Design eines bestimmten Gadgets deaktivieren:
Code: Alles auswählen
EnableExplicit
Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
Protected *NMDATETIMECHANGE.NMDATETIMECHANGE
Select uMsg
Case #WM_NOTIFY
*NMDATETIMECHANGE = lParam
Select *NMDATETIMECHANGE\nmhdr\hwndfrom
Case GadgetID(0)
If *NMDATETIMECHANGE\nmhdr\code = #DTN_DROPDOWN
SetWindowTheme_(FindWindowEx_(FindWindow_("DropDown", 0), #Null, "SysMonthCal32", #Null), @"", @"")
EndIf
EndSelect
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $0)
DateGadget(0, 15, 50, 200, 17, "%dd/%mm/%yyyy", Date())
SetGadgetColor(0, #PB_Gadget_BackColor, $0)
SetGadgetColor(0, #PB_Gadget_FrontColor, $ffffff)
SetWindowCallback(@WindowCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 01:53
von udg
Oh. ja natürlich aber da habe ich mich wohl auch falsch ausgedrückt. Den Kalender habe ich ohne Probleme schon anpassen können.
Um was es mir geht, damit sich das Gadget in das Design einfügt, ist diese visuelle Darstellung:
Danke für Eure Hilfe
Noch eine Frage an dieser Stelle zu
StringGadget()
Ich möchte mit einem Button Klick den Text Inhalt in einem StringGadget löschen. Gibt es da irgend eine Lösung?
Mit
ClearGadgetItems(#Editor_Nfo) kann ich ja problemlos den Inhalt eines EditorGadgets löschen. Leider nicht von einem StringGadget?
Und wenn ich nun umsteige auf
EditorGadgets, habe ich dann immer eine Linie um das EditorGadget

dies würde wieder nicht zu meinem Design passen.
Das ist aber auch ferzwickt. Kann man denn diese Linien entfernen? Denn
#PB_String_BorderLess geht hier nun wieder nicht grummel
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 02:24
von NicTheQuick
Das 'StringGadget()' kannst du doch ganz einfach mit 'SetGadgetText()' löschen.
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 02:46
von udg
NicTheQuick hat geschrieben:Das 'StringGadget()' kannst du doch ganz einfach mit 'SetGadgetText()' löschen.
Danke Dir. gewusst wie.
Ich habe es mit HideGadget 0 bzw 1 versucht, geht, aber da kommt beim speichern von den Inhalten Müll raus.
SetGadgetText(#Gadget1,"") ist natürlich

Re: [Frage] DateGadget()
Verfasst: 05.06.2015 03:04
von udg
Ist es denn auf halbwegs einfachen Weg möglich, die Linien um ein EditorGadget zu entfernen?
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 09:28
von RSBasic
udg hat geschrieben:Den Kalender habe ich ohne Probleme schon anpassen können.
Sicher? Also bei mir unter Windows 7 auf jeden Fall nicht. Deshalb nahm ich an, dass du das ausgeklappte DateGadget meintest.
Bei mir sieht es mit und ohne Callback so aus:
Vielleicht verwendest du noch Windows Vista und da gab es noch dieses DateGadget-Design nicht oder du hast XP-Skin schon vorher ausgeschaltet.
udg hat geschrieben:Ist es denn auf halbwegs einfachen Weg möglich, die Linien um ein EditorGadget zu entfernen?
Bitte erstelle zukünftig einen neuen Thread, wenn du eine ganz andere Frage hast. Diese Frage hat nichts mehr mit der ursprünglichen Frage dieses Threads zu tun.
Aber um deine Frage ausnahmsweise hier zu beantworten:
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(1, 50, 50, WindowWidth(0)-100, WindowHeight(0)-100, 0)
SetWindowTheme_(GadgetID(1), @"", @"")
SetWindowLongPtr_(GadgetID(1), #GWL_EXSTYLE, 0)
SetWindowPos_(GadgetID(1), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 09:56
von Kiffi
udg hat geschrieben:Um was es mir geht, damit sich das Gadget in das Design einfügt, ist diese visuelle Darstellung:
PB-Hilfe hat geschrieben:Dieses Gadget unterstützt die SetGadgetColor() und GetGadgetColor() Befehle mit den folgenden Werten als 'FarbTyp', um den Aufklapp-Kalender einzufärben (der Eingabebereich kann nicht eingefärbt werden)
Grüße ... Peter
Re: [Frage] DateGadget()
Verfasst: 05.06.2015 13:38
von udg
Danke euch beiden. Ich habe das Datum in ein StringGadget gepackt und nun kann ich mir die Farben anpassen
CodeSnip:
Code: Alles auswählen
date.SYSTEMTIME
GetLocalTime_(@date)
StringGadget(#Releasedatum,43, 278, 100, 17, Str(date\wDay)+"/"+Str(date\wMonth)+"/"+Str(date\wYear),#PB_String_BorderLess)
SetGadgetColor(#Releasedatum, #PB_Gadget_BackColor, $0)
SetGadgetColor(#Releasedatum, #PB_Gadget_FrontColor, $9A9A9A)
SetGadgetFont(#Releasedatum, FontID(Font2))
An dieser Stelle, großen Dank an RSBasic.
@Kiffi
Ja die Help ist in Bezug auf
Date etwas verwirrend. Es bezieht sich auf den Kalender.
Ergebnis:
Vielen Dank