А вот тоже интересный код, который можно оформить в весёлую шутку, если прикрутить к таймеру, и менять системную палитру каждые секунд 20!
;kvitaliy for PB4.* 12.01.2007
;{- Enumerations
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#ButtonGadget_0
#ButtonGadget_1
EndEnumeration
;}
;}
;{ можно менять цвет конкретных элементов
; #COLOR_SCROLLBAR = 0
; #COLOR_BACKGROUND = 1
; #COLOR_ACTIVECAPTION = 2
; #COLOR_INACTIVECAPTION = 3
; #COLOR_MENU = 4
; #COLOR_WINDOW = 5
; #COLOR_WINDOWFRAME = 6
; #COLOR_MENUTEXT = 7
; #COLOR_WINDOWTEXT = 8
; #COLOR_CAPTIONTEXT = 9
; #COLOR_ACTIVEBORDER = 10
; #COLOR_INACTIVEBORDER = 11
; #COLOR_APPWORKSPACE = 12
; #COLOR_HIGHLIGHT = 13
; #COLOR_HIGHLIGHTTEXT = 14
; #COLOR_BTNFACE = 15
; #COLOR_BTNSHADOW = 16
; #COLOR_GRAYTEXT = 17
; #COLOR_BTNTEXT = 18
; #COLOR_INACTIVECAPTIONTEXT = 19 ;Text of inactive window
; #COLOR_BTNHIGHLIGHT = 20 ;3D highlight of button
;}
Global Dim SavedColors(21)
Global Dim IndexArray(21)
Global Dim NewColors(21)
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 386, 260, 275, 62, "Цвет системной палитры", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_SizeGadget)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#ButtonGadget_0, 15, 15, 95, 20, "Изменить")
ButtonGadget(#ButtonGadget_1, 150, 15, 100, 20, "Восстановить")
EndIf
EndIf
EndProcedure
OpenWindow_Window_0()
For i = 0 To 20
SavedColors(i) = GetSysColor_(i)
Next i
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #ButtonGadget_0
; Изменить цвета всех элементов на экране случайным образом
For i = 0 To 20
NewColors(i) = RGB(Random(255),Random(255),Random(255))
IndexArray(i) = i
Next i
SetSysColors_( 21, @IndexArray(0), @NewColors(0))
ElseIf EventGadget = #ButtonGadget_1
; восстановить цвет
SetSysColors_( 21, @IndexArray(0), @SavedColors(0))
EndIf
; //////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
Break
EndIf
EndSelect
ForEver
;}
; восстановить цвет перед выходом!!!
SetSysColors_( 21, @IndexArray(0), @SavedColors(0))
End