Обработка нажатия кнопки
В создаваемой программе вручную придется запрограммировать фактически только одно событие — нажатие на кнопку Закрасить. Чтобы создать первоначально пустую подпрограмму, вызываемую при нажатии на эту кнопку, надо просто дважды щелкнуть на ней мышкой. При этом 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;
Запуск программы
Программа запускается нажатием на клавишу F9. Так как Delphi 4 — это компилирующая система, сначала автоматически выполнится компиляция и только потом программа запустится. Задавая различные строки (FFOFFF, abcdef, 987654 и т. п.), можно наглядно увидеть соответствующие им цвета (рис. 20.3).
Рис 20.3. Программа закраски в работе
20.9. Пример на Си++. Рисование графиков
Система C++Builder по своей структуре практически ничем не отличается от системы Delphi, только программа в ней составляется на языке Си++. Поэтому с принципами визуального проектирования можно познакомиться в предыдущем разделе.
Постановка задачи
Некоторая подпрограмма задает зависимость значения функции от аргумента. Надо нарисовать в окне график, показывающий эту зависимость.
Принципы рисования в C++Builder
Перерисовывать экран в Windows приходится по самым разным причинам. Например, окно было закрыто другими приложениями, свернуто или оказалось временно заслоненным своими вспомогательными окнами. При этом перерисовывать приходится или все содержимое, или только часть. Программа, созданная с помощью C++Builder, сама определяет, что и когда ей надо перерисовать, и все элементы управления тоже это «понимают». Особое требование к организации перерисовки возникает, только когда программист напрямую использует функции рисования. Все эти функции в таком случае надо размещать в обработчике события OnPaint, которое вызывается автоматически.
Дата добавления: 2016-09-26; просмотров: 1962;