Seite 1 von 1

CreatePopupMenu() Farbig

Verfasst: 14.11.2009 17:21
von Tsuki-Namida
Hallo,
ist es möglich das man die Hintergrundfarbe eines Popupmenüs zu ändern?
Ich habe leider nichts in der Hilfe finden können....
wenn es nicht möglich sein sollte ist es zwar schade aber kein Beinbruch....

Re: CreatePopupMenu() Farbig

Verfasst: 14.11.2009 17:57
von RSBasic
http://www.rsbasic.de/index.php?option= ... &Itemid=59

Unter XP funktioniert das problemlos.
Unter Win7 zwar auch, aber er färbt wie ich sehe nicht komplett ein.

Re: CreatePopupMenu() Farbig

Verfasst: 14.11.2009 18:47
von X360 Andy
Für die die das mit Windows 7 sehen wollen ...
Bild

Re: CreatePopupMenu() Farbig

Verfasst: 14.11.2009 18:56
von Kaeru Gaman
ganz ehrlich, ich würde das so oder so einfach lassen.
das Farbschema ist nun mal Sache des Users, außer man bietet eine stilvoll komplett geskinnte Anwendung an, wie z.B. Winamp.

Aber einfach nur an einer handvoll Farben rumpfuschen, das passt vielleicht zu deinem Farbschema,
aber beim Kunden kanns aussehen wie
Bild
Augenkrebs

Re: CreatePopupMenu() Farbig

Verfasst: 14.11.2009 19:02
von Tsuki-Namida
Hmmm es funktioniert fast super :) Danke

Ich habe den Code kopiert und mit Erfolg getestet.
Als ich es in mein Projekt eingebaut habe ging es nicht mehr.... Ich habe alles überprüft und kein Fehler gefunden...

Als ich einen Code Ausschnitt zum Testen vorbereitet habe um ihn hier zu testen ging es plötzlich mit der Hintergrundfarbe
das Einzige was ich an den Test Code geändert habe habe ich nur das Menü was ich für ein Systrayicon gedacht habe auf das Fenster gelegt.

hier ist der umgebaute Test Code wo es funktioniert.... Die anfragen, die ich im eigentlichen Quelltext genutzt habe habe ich auskommentiert und für den Test Geändert...

Code: Alles auswählen

Enumeration
  #SettingWindow
  #ServerList
  #ListAdd
  #ListEdit
  #ListInfo
  #ListRemov
  #ListPrio
  #ListZeit
  #ListOff
  #ListOn
  #ListTimeout
  #ListOK
  #SystrayIcon
  #SysPopup
EndEnumeration

#MIM_BACKGROUND=2

Structure MENUINFO
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.l
  dwContextHelpID.l
  dwMenuData.l
EndStructure

MI.MENUINFO\cbSize=SizeOf(MENUINFO)
hBrush=CreateSolidBrush_(RGB($CE,$DE,$F3))
MI\hbrBack=hBrush
MI\fMask=#MIM_BACKGROUND


Procedure.s Setting(String$)
  ;Dummy Procedure zum Testen
EndProcedure

  If Val(Setting("SettingFentserX")) = 0 Or Val(Setting("SettingFentserY")) = 0
    OpenWindow(#SettingWindow,0,0,500,450,"Init Server",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
  Else
    OpenWindow(#SettingWindow,Val(Setting("SettingFensterX")),Val(Setting("SettingFensterY")),500,450,"Init Server",#PB_Window_MinimizeGadget)
  EndIf
  If CreateGadgetList(WindowID(#SettingWindow))
    ListIconGadget(#ServerList,5,39,490,250,"Name",170,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
      AddGadgetColumn(#ServerList,1,"Adresse/IP",170)
      AddGadgetColumn(#ServerList,2,"Port",50)
      AddGadgetColumn(#ServerList,3,"Server",45)
      AddGadgetColumn(#ServerList,4,"Status",50)
    ButtonGadget(#ListAdd,5,5,100,24,"Hinzufügen")
    ButtonGadget(#ListEdit,105,5,100,24,"Bearbeiten")
    ButtonGadget(#ListInfo,205,5,100,24,"Information")
    ButtonGadget(#ListRemov,395,5,100,24,"Löschen")   
    Frame3DGadget(#PB_Any,0,295,250,156,"Aktualisierungs Einstellung")
    TextGadget(#PB_Any,5,310,235,52,"Je häufiger der Status der Eingetragenen Server überprüft wird, um so mehr wird der Processeor belastet. Also vorsichtig verwenden!")
    TextGadget(#PB_Any,15,370,40,18,"Priorität:")
    ComboBoxGadget(#ListPrio,57,369,110,20)
      AddGadgetItem(#ListPrio,-1,"Höher als Normal")
      AddGadgetItem(#ListPrio,-1,"Normal")
      AddGadgetItem(#ListPrio,-1,"Nidrig")
      AddGadgetItem(#ListPrio,-1,"Sehr Nidrig")
      SetGadgetText(#ListPrio,Setting("Priorität"))
    TextGadget(#PB_Any,15,393,60,18,"Zeitabstand:")
    StringGadget(#ListZeit,77,392,30,20,Setting("Zeit"),#PB_String_Numeric)
    TextGadget(#PB_Any,109,393,30,18,"Min")
    Frame3DGadget(#PB_Any,248,295,240,70,"Benachrichtigung")
    CheckBoxGadget(#ListOff,265,322,13,13,"")
      TextGadget(#PB_Any,280,320,80,18,"Server Offline")
      SetGadgetState(#ListOff,Val(Setting("OfflineMSG")))
    CheckBoxGadget(#ListOn,265,342,13,13,"")
      TextGadget(#PB_Any,280,340,80,18,"Server Online")
      SetGadgetState(#ListOn,Val(Setting("OnlineMSG")))
    TextGadget(#PB_Any,360,320,120,18,"Benarichtigung Timeout:")
    StringGadget(#ListTimeout,360,340,30,20,Setting("Timeout"),#PB_String_Numeric)
    TextGadget(#PB_Any,395,342,25,18,"Sec.")
    TextGadget(#PB_Any,255,375,240,26,"Hinzugefügte oder Bearbeitete Server werden automatisch gespeichert.")
    ButtonGadget(#ListOK,395,421,100,24,"Speichern",Image1)
;     InfLesen()
;     ListeAktualisieren()
    AddSysTrayIcon(#SystrayIcon,WindowID(#SettingWindow),LoadImage(0,Icon$))
    SysTrayIconToolTip(#SystrayIcon,"Init Server")
    CreatePopupMenu(#SysPopup)
      MenuItem(1,"Einstellung Ein-/Aus-Blenden")
      MenuItem(2,"Alle Server Sofort Überprüfen")
      MenuItem(3,"Info")
      MenuItem(4,"Beenden")
  Else
    MessageRequester("Fehler","Es ist ein Fehleraufgetreten beim öffnen des Einstellungsfenster! Bitte Starten Sie die Anwendung Neu.")
    End
  EndIf
;   ServerTest(0)
  
  SetMenuInfo_(MenuID(#SysPopup),MI)
  SetMenuInfo_(GetSubMenu_(MenuID(#SysPopup),5),MI)
  
  Repeat
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()

    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If Hinde = 0
              HideWindow(#SettingWindow,1)
              Hinde = 1
            ElseIf Hinde = 1
              HideWindow(#SettingWindow,0)
              Hinde = 0
            EndIf
          Case 2
            
          Case 3
            
          Case 4
            End
        EndSelect
      Case #PB_Event_CloseWindow
        Quit = 1
    EndSelect

    If Event = #PB_Event_Gadget
      If GadgetID = #ListAdd
        DisableWindow(#SettingWindow,1)
;         AddServerWindow("","",0,"",0)
      ElseIf GadgetID = #ListEdit
        If GetGadgetState(#ServerList) <> -1
;           EditServer(GetGadgetText(#ServerList))
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListInfo
        If GetGadgetState(#ServerList) <> -1
          DisableWindow(#SettingWindow,1)
;           ServerInfo(GetGadgetText(#ServerList))
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListRemov
        If GetGadgetState(#ServerList) <> -1
          If MessageRequester("Frage","Möchten Sie wirklich den Server "+Chr(34)+GetGadgetText(#ServerList)+Chr(34)+" Löschen?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
;             DelServer(GetGadgetText(#ServerList))
          EndIf
        Else
          MessageRequester("Fehler","Bitte wählen Sie einen Server aus.")
        EndIf
      ElseIf GadgetID = #ListOK
;         SaveServer()
;         SaveSetting()
      EndIf
    ElseIf GetAsyncKeyState_(#VK_RBUTTON) ;Event = #PB_Event_SysTray; And GetAsyncKeyState_(#VK_RBUTTON)
      DisplayPopupMenu(#SysPopup, WindowID(#SettingWindow))
    ElseIf Event = #PB_Event_CloseWindow
      HideWindow(#SettingWindow,1)
      Hinde = 1
    EndIf
  ForEver