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:

Bild

Danke für Eure Hilfe :allright:


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 :allright:

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:
Bild

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:
Bild

Vielen Dank