[ERLEDIGT] DateGadget() und EditorGadget Rahmenlos

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

[ERLEDIGT] DateGadget() und EditorGadget Rahmenlos

Beitrag 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? )
Zuletzt geändert von udg am 05.06.2015 13:52, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: [Frage] DateGadget()

Beitrag von Kiffi »

ja, anscheinend funktioniert das nur, wenn in den Compiler-Optionen 'Enable modern theme support' abgehakt ist.

Grüße ... Peter
a²+b²=mc²
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Frage] DateGadget()

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] DateGadget()

Beitrag 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
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: [Frage] DateGadget()

Beitrag von NicTheQuick »

Das 'StringGadget()' kannst du doch ganz einfach mit 'SetGadgetText()' löschen.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] DateGadget()

Beitrag 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:
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] DateGadget()

Beitrag von udg »

Ist es denn auf halbwegs einfachen Weg möglich, die Linien um ein EditorGadget zu entfernen?
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Frage] DateGadget()

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: [Frage] DateGadget()

Beitrag 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
a²+b²=mc²
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] DateGadget()

Beitrag 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
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten