Удобно устроившись в среде Delphi, мы просто обязаны бороться с гиподинамией мысли и упадническими настроениями. И тут как нельзя более кстати придутся умственно-физиологические упражнения по программированию без отягощений.
Напредыдущем семинаре нам уже довелось «создать» простейшее приложение - оно само собой возникает при открытии нового проекта и состоит из «пустой» формы (на самом деле у неё есть все основные элементы стандартного окна Windows) и заготовки модуля формы. Это приложение можно запустить, и оно будет работать. Правда, на экране появится только прямоугольное окно, которое можно двигать, сворачивать, изменять его размеры и закрывать. Можно сказать, что простейшее приложение имеет свойства, совершенно необходимые любому приложению Windows, но ничего «лишнего».
Чтобы написать по-настоящему полезное приложение, нужно разместить на форме компоненты, обеспечивающие взаимодействие программы с пользователем (интерфейс), установить их свойства и написать процедуры-обработчики, которые будут выполняться при возникновении тех или иных событий в приложении (функциональная часть программы). Визуальная часть интерфейса приложения создаётся в Конструкторе формы, а его функциональная часть - в Редакторе кода.
В компьютерной литературе принято начинать программирование с создания приложения, выводящего на экран надпись Hello, world!. Мы не станем нарушать эту похвальную традицию, а только «русифицируем» сообщение. Давайте поздравим всех пользователей программы с нашим любимым праздником.
Запустите Delphiи начните новый проект.
В окне Конструктора формы появится унылая серая форма. Выкрасим её в «зимний», белый цвет. Для этого нажмите в Инспекторе объектов в строке Colorкнопочку со стрелкой. Откроется список со стандартными цветами Delphiи Windows. Слева от названия цвета в этом списке имеется и образец
Щёлкните мышкой на строке с белым цветом (clWhite) - и форма станет снежно-белой. Точно так же устанавливается цвет любого визуального компонента.
Вывести надпись на форму можно разными способами. Лучше всего воспользоваться компонентом метка TLabel, специально для этого предназначенным.
Найдите в Палитре компонентов значок Tlabel (он находится на странице Standard) и щёлкните на нём два раза. В середине формы появится этот компонент с надписью Label1. Измените в Инспекторе объектов значение свойства Captionэтого компонента на С Новым годом! (просто введите эту строку в текстовом окошке справа от названия свойства)
Поздравление получилось слишком невзрачным, поэтому щёлкните на окошечке свойства метки Font, а затем на кнопке с тремя точками. Откроется диалоговое окно выбора свойств шрифта. Размер задайте побольше, например 40 (такого значения нет в списке размеров, поэтому введите нужное значение в окошечке над списком). Выберите шрифт TimesNewRoman(или любой другой по вкусу), установите атрибут полужирный и синий цвет. Теперь надпись имеет вполне праздничный вид. Оттащите её мышкой в левый верхний угол формы и размеры формы уменьшите так, чтобы не оставалось слишком много свободного места на форме (ухватите форму за нижний правый угол и перемещайте его вверх влево).
Сохраните кнопкой
эоект на диске в новой папке NewYear и запустите программу на Панели инструментов. Программа будет скомпилирована,
и на экране появится форма с нашим приветствием:
Как видите, она мало чем отличается от той, что мы видели в окне Конструктора формы (исчезла разметочная сетка и изменилась пиктограмма). С этим окном вы можете делать всё, что можно делать с любыми окнами Windows. И это при том, что мы не написали ещё ни одной строчки кода!
Закройте приложение - оно не предназначено для долгого любования. Попробуем сделать его «прикольным». Прикол будет незатейливым: при нажатии кнопки мыши на надписи она будет заменяться другой (предлагаю взять её из «негритянских» рассказов юмориста Лукинского), а при отпускании восстанавливаться.
Выделите на форме компонент Label1 (просто щёлкните на нём мышкой) и в Инспекторе объектов перейдите на страницу Events(щёлкните на табуляторе сверху). Откроется список событий, на которые может реагировать наш компонент. Дважды щёлкните в окошке onmousedown, и в нём появится название процедуры, которая будет обрабатывать нажатие кнопки мыши на надписи:
В окне Редактора кода вы увидите заготовку для этой процедуры:
procedure TForml.LabellMouseDown(Sender: Button; Shift: TShiftState; X, Y: Integer); begin end; TObject; Button: TMouse;
Конечно, ничего из задуманного нами она делать не будет. Посему добавим ещё две строки кода:
procedure TForm1.Label1MouseDown(Sender: Button; Shift: TShiftState; X, Y: Integer); begin Label1.Font.Color:= clRed; Label1.Caption:= ’Пошёл на фиг!’ end;
В первой строке мы устанавливаем красный цвет шрифта, чтобы показать серьёзность наших намерений, во второй - задаётся суровая проза жизни.
Чтобы ввести эти строчки, наберите название компонента с точкой - Labell., подождите, пока появится список со свойствами этого компонента, выберите нужный и нажмите клавишу Enter(или дважды щёлкните на нём мышкой).
Действуя аналогично, создайте заготовку процедуры, которая будет обрабатывать отпускание кнопки мыши:
procedure TForml.LabellMouseUp(Sender: TObject; Button: TMouseBut- ton; Shift: TShiftState; X, Y: Integer); begin end;
Чтобы не переписывать весь код заново, скопируйте его в заготовку второй процедуры.
Чтобы скопировать фрагмент текста, сначала выделите его. Для этого установите мышкой курсор в начало первой строки, нажмите левую кнопку мышки и ведите её в конец последней строки. Теперь отпустите и снова нажмите левую кнопку мыши на выделенном фрагменте кода и, удерживая клавишу Ctrl, переместите курсор в нужное место. Если не нажать клавишу Ctrl, то фрагмент будет перемещён из одного места на другое.
Выделить часть текста можно и клавишами со стрелками, удерживая клавишу Shift.
Осталось слегка подредактировать текст:
procedure TForml.LabellMouseUp(Sender: TObject; Button: TMouseBut- ton; Shift: TShiftState; X, Y: Integer); begin Label1.Font.Color:= clBlue; Label1.Caption:= ’С Новым годом!’ end;
Опять запустите программу. Появится всё то же окно с банальной уже надписью. Зато теперь вы можете «поприкалываться», нажимая кнопку мыши на ней
Согласитесь, жить стало веселей. И развлекаемся мы с помощью своих же ручек! А если они у вас шаловливые, то можно заготовить на форме множество таких фраз и подсунуть их своим товарищам, близким и родственникам.
Вот только как они узнают о ваших злонамеренных кознях? Значит, их нужно подвести к необдуманным поступкам. И Delphiпредоставляет немало средств начинающим «хулиганам». Во-первых, вы можете установить для каждого визуального компонента свой собственный курсор, который будет появляться, когда мышка бегает по нему. В Инспекторе объектов откройте список доступных курсоров и выберите нужный
Он будет явно указывать, что на этом компоненте нужно нажать кнопку мыши. Впрочем, вы не должны обольщаться: не все поймут вас правильно.
Тогда переходите к более сильнодействующим средствам. В свойстве Hintметки напишите Нажми кнопку, а свойство ShowHintустановите в True
Эта подсказка появится, когда мышка замешкается на компоненте. Если и это не поможет, то оставьте свои затеи до лучших времён, когда вы изучите такие возможности Delphi, которые позволят вам подшучивать над кем угодно в самой обидной форме (если вы, конечно, так и не найдёте себе более достойных занятий). Пока же допишите пару строк кода, улучшающих действие нашей программы:
procedure TForml.LabellMouseDown(Sender: TObject; Button: TMouse-Button; Shift: TShiftState; X, Y: Integer); begin Label1.Font.Color:= clRed; Label1.Caption:= ’Пошёл на фиг!’; Label1.Hint:= ’Отпусти - больно же!’ end; procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseBut- ton; Shift: TShiftState; X, Y: Integer); begin Label1.Font.Color:= clBlue; Label1.Caption:= ’С Новым годом!’; Label1.Hint:= ’Нажми кнопку!’ end;
Lazarusтоже годится для милых розыгрышей.