|

UNDER CONTROL
Xakep, номер #038, стр. 038-058-1
Системная палитра под контролем продвинутых перцев
Horrific aka Фленов Михаил (smirnandr@mail.ru) www.cydsoft.com/vr-online
С каждым выпуском рубрики "кодинг" мои примеры усложняются и становятся все извращеннее. Только я остаюсь неизменным, каждый раз показывая, как можно приколоться над ближним. Меня некоторые спрашивают, почему я не учу чему-нибудь толковому? Хорошо, что спрашивают только некоторые, большинству все нравится. Отвечаю: толковому учат везде, а я рассказываю то, о чем большинство старается умалчивать. Как говорит библия: "Обмани ближнего своего, ибо ближний обманет тебя и возрадуется (Супер новый завет Dr.Klouniz Mix)" :).
НУ, К ЧЕРТУ!!!
Сегодня я покажу тебе, как можно поиздеваться над системной палитрой и осуществить анимацию лампочек на клавиатуре. Так что не богохульствуй, а запусти Delphi во имя отца, сына и святого Винни-Пуха.
Для издевательств нам понадобятся две кнопки и два таймера. На первой кнопке (Button1) напиши "Анимация палитры". На второй кнопке (button2) напишем "Анимация кнопок".
Можешь расположить свое хозяйство (в смысле кнопки и таймеры), как твоей душе угодно. Мою форму можешь увидеть на рисунке 1.
Главное - у обоих таймеров установи свойство Enabled в false, чтобы по умолчанию они были отключены. По нажатию кнопок мы будем их включать.
Теперь, сын мой :), для первого таймера установи свойство Interval в 5000. По этому таймеру будет меняться палитра, которая происходит достаточно долго (1-3 секунды, в зависимости от количества открытых прог). По второму таймеру будем анимировать лампочки на клаве, поэтому тут свойство Interval установим в 100.
СИСТЕМНАЯ ПАЛИТРА
Начнем мы с системной палитры. Для изменения какого-нибудь системного цвета есть функция SetSysColors. У нее всего три параметра:
1. Сколько цветов мы хотим изменить.
2. Номера цветов в системной палитре для изменения.
3. Новые значения цветов.
Допустим, что ты хочешь поменять пятый цвет на красный. В этом случае нужно написать вот такой код:
SetSysColors(1, 5, clRed);
Но это слишком сложно, поэтому мы упростим пример. По нажатию первой кнопки "Анимация палитры" запустим первый таймер:
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
Теперь создадим обработчик события, когда срабатывает таймер (для этого просто дважды щелкни по нему). Здесь мы напишем листинг 1. В этом листинге как раз и находится код смены палитры.
БОГ В ПОМОЩЬ!!!
Если бог не помог тебе разобраться с листингом 1, то это придется сделать мне. После объявления имени процедуры и перед ее началом (там, где мы всегда объявляем переменные) я объявил несколько констант. Константы - те же самые переменные, только их значения нельзя изменять, в каком виде объявил, так и останется. Обе константы объявлены как массивы. Массив - это просто набор каких-то данных, следующий друг за другом. Массив в Delphi обозначается как array. Чтобы объявить переменную или константу типа массива нужно описать ее следующим образом:
r: array [длина массива] of тип данных;
Как определяется длина массива? Очень просто, это даже похоже на геометрическое определение. Например, тебе нужен массив из 12 значений. Длина такого массива может быть [0..11] или [1..12]. В квадратных скобках ты должен поставить начальное значение массива и конечное, а между ними две точки.
Содержание Вперед на стр. 038-058-2
|