В создаваемой программе вручную придется запрограммировать фактически только одно событие — нажатие на кнопку Закрасить. Чтобы создать первоначально пустую подпрограмму, вызываемую при нажатии на эту кнопку, надо просто дважды щелкнуть на ней мышкой. При этом Delphi 4 вызовет редактор, автоматически сгенерирует нужный текст и разместит курсор именно в том месте, где можно начать описание нужного алгоритма.
procedure TForml.ButtonlClick(Sender: TObject);
begin
end;
Обработчик события Нажатие на кнопку Button 1 — это обычная подпрограмма, метод класса TForm 1 (этот класс описывает главную форму Form 1). Единственный параметр Sender характеризует источник сообщения о случившемся событии. Его практически всегда можно игнорировать.
Алгоритм работы данного метода будет следующим. Первоначально надо убедиться, что длина введенной в поле Editl строки равна б символам и каждый из этих символов — шестнадцатеричная цифра. Если это не так, то выполнение обработчика надо сразу завершить (для этого предназначена стандартная процедура Паскаля Exit, мгновенно завершающая работу текущей подпрограммы).
|
|
Если же введенные данные корректны, их надо:
1. Преобразовать в промежуточную строку в формате $00хххххх, где хххххх — шесть введенных цифр.
2. Эту строку преобразовать в число, которое будет рассматриваться как цвет.
3. Установить новый цвет круга на основании полученного значения.
Содержимое поля ввода Editl хранится в виде строки в его свойстве Text. Доступ к этому свойству осуществляется с помощью конструкции Editl Text.
Длина строки определяется стандартной функцией length() со строкой в качестве параметра.
Стандартная функция Pos(), получая две строки как аргументы, проверяет, не содержится ли первая строка во второй, и если содержится, то возвращает номер начальной позиции. В противном случае Pos() возвращает ноль. Эта функция потребуется для определения, все ли символы во введенной строке допустимы.
Стандартная функция UpperCase() преобразует строку к верхнему регистру. Такое преобразование требуется, чтобы разрешить ввод значений цветов на любых регистрах.
Преобразование строки в число выполняет стандартная функция StrTolnt().
Объект Shape"! имеет свойство Brush (Кисть для фона), которое, в свою очередь, имеет вложенное свойство Color (Цвет заливки). Его и надо в конечном счете изменить. Как только это произойдет, цвет круга в окне автоматически изменится на новый.
procedure TForml.ButtonlClick(Sender: TObject);
var i: integer;
s: string;
begin
// если длина введено строки не равна 6,
// то закончить работу
if length(Editl.Text)<> 6 then exit;
// в локальную переменную s заносится строка,
// содержащая допустимые символы
s:= "0123456789ABCDEF";
// проверяется каждый символ во введенной строке
for i:= 1 to 6 do
// если очередной символ не найден в строке s, значит,
// он недопустим, и работу требуется прекратить
if pos(Uppercase(Editl.Text[i]), s) = 0 then exit;
// все нормально — в переменной s
// готовим промежуточную строку
s:= "$00"+Editl.Text;
// Устанавливаем значение цвета заливки круга равным
// числу, преобразованному из строки в переменной s
Shapel.Brush.Color:= StrToInt (s);
end;