Показать сообщение отдельно
Старый 12.01.2007, 23:07   #13
kvitaliy
Оператор ЭВМ
 
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений
(для 5 пользователей)
Re: Dark side of Programming

А вот тоже интересный код, который можно оформить в весёлую шутку, если прикрутить к таймеру, и менять системную палитру каждые секунд 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
(Offline)
 
Ответить с цитированием