Условие
Самостоятельно создать калькулятор с окном для картинки. При этом после подсчета результата в окне должна появляться одна картинка, если результат четное число, и другая картинка , если результат число нечетное. Написать комментарии к командам процедур и предъявить программу с комментариями преподавателю.
Внешний вид формы с кнопками может быть, например, такой.
Занятия 2
На выполнение занятий 2 отводится 4ч.
Тема: Создание учетной карточки для студенческого отдела кадров
Введение
Открыть Word и в свою папку для заданий по дисциплине записать задание и рабочий файл с проектом программы.
Задание 1
1. Разработать интерфейс и программу "Учетная карточка студента".
Учетная карточка должна содержать:
- Реквизит с буквой алфавита по фамилии студента (вверху слева)
- Заголовок - Учетная карточка студента – стиль 1 с выравниванием по центру
- Далее выравнивание по левому краю метки и рядом окна для ввода
- Фамилия
- Имя
- Отчество
- Год рождения
- Год поступления
- Группа
- Адрес
- Дата заполнения
- Одно поле для фотографий - паспортная фотография и художественная фотография.
- Две кнопки для вызова той или другой фотографии в указанное поле.
Сохранить форму в отдельной папке, вложенной в папку с именем группы.
2. Все свойства указанных позиций посмотреть в "инспекторе объектов" и переписать в таблицу, созданную в файле Word.
3. Предъявить интерфейс преподавателю и, после коллективного согласования студентами группы, скорректировать интерфейс формы для единообразия.
4. Каждому студенту заполнить все поля карточки ( в адресе номер дома и квартиры при желании можно указать вымышленные), включая фотографии (можно дополнить позже). Заполненную карточку сохранить под отдельным именем проекта (в отдельной папке).
Задание 2
1. Дополнить программу из предыдущего задания так, чтобы смена фотографий осуществлялась попеременно по клику на одной и той же кнопке.
2. Рассмотреть свойства опций AutoSize и Stretch, используемых для изменения формата изображений, и описать методику их использования в своем рабочем Word-файле.
3. Освоить методику использования изображений – увеличить количество вызываемых изображений, поменять цвет фона, варианты выравнивания и т.п. Сохранить результаты работы.
4.
Подсказки
Для вызова той или иной фотографии или картинки, необходимо предварительно иметь их, например, в формате bmp в своей папке.
Для программирования кнопки Button1 необходимо два раза кликнуть на ней левой клавишей мыши. В результате активизируется окно текста программы с заготовкой процедуры Button1Click, которая будет обрабатывать событие клика на кнопке Button1:
procedure TForml.Button1Click(Sender: Tobject);
begin
end;
В заготовку необходимо вставить текст программы реакции на это событие. Процедура однократного переключения будет, например, иметь такой вид:
procedure TForml.ButtonlClick(Sender: TObject);
begin
Image1. Visible:= False; {Портретная фотография становится видимой)
Image2.Visible:= True; {Художественная фотография становится невидимой)
end;
С помощью данной процедуры свойство видимости для объекта Image1 включаем, а это же свойство для объекта Image2 выключаем.
Вариант многократного переключения можно организовать с помощью двух кнопок. Для второй кнопки действия будут противоположные.
Обратить внимание на использование составных имен типа Image1.Visible, в которых название объекта от его свойства отделяется точкой. Такие составные имена дают доступ к значению конкретного свойства некоторого объекта.
Для многократного переключения фотографий (рисунков), необходимо менять свойства видимости рисунка на противоположные внутри процедуры по условию if .
Т.е. до задания свойств видимости рисунка, эти свойства проверяются и, в зависимости от их истинности или ложности, задаются противоположные значения.
Для отработки можно поменять первоначальный цвет поля рисунка, вставить еще один рисунок и т.п.
Занятие 3. Контрольное
На выполнение занятия 3 отводится 4ч.
Задание
1. Разработать программу калькулятора. Для тех, кто не очень свободно читает листинг, рекомендуется сначала составить блок-схему алгоритма в соответствии с заданием и с учетом приведенного упрощенного листинга.
2. Снабдить программу необходимыми комментариями.
3. Подготовиться к ответам на вопросы, содержащиеся в листинге примера.
4. Объяснить, почему не будет работать программа, если приведенный ниже листинг скопировать и поместить в разрабатываемый модуль.
Листинг
unit calc_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton; // 1. как это получается?
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
ButtonPlus: TButton;
ButtonMinus: TButton;
ButtonEnter: TButton;
ButtonC: TButton;
Button0: TButton;
ButtonZ: TButton;
procedure Edit1Change(Sender: TObject; var Key:Char);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button0Click(Sender: TObject);
procedure ButtonZClick(Sender: TObject);
procedure ButtonCClick(Sender: TObject);
procedure ButtonPlusClick(Sender: TObject);
procedure ButtonMinusClick(Sender: TObject);
procedure ButtonEnterClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; // 2. что это означает?
Implementation // 3. что это такое?
{$R *.dfm}
var
accum: real; // это что?
oper: integer; // это что?;
f: integer;
{ f = 0 признак ожидания ввода чего? f = 1 соответственно чего? }
procedure TForm1.Button0Click(Sender: TObject);
begin
if f = 0 //
then begin
Edit1.Text := '0'; // 4. что такое Edit1 и Edit1.Text (и точка)?
f := 1;
end
else
if Edit1.Text <> '0' // это позволяет не выводить 0 в начале числа, но
// 5. поясните как это делается?
then Edit1.Text := Edit1.Text + '0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin // 6. поясните, что делает эта процедура?
if f = 0
then begin
Edit1.Text := '1';
f := 1;
end
else Edit1.Text := Edit1.Text + '1'; // 7. что делает эта операция?
end;
procedure TForm1.Button2Click(Sender: TObject); // ?
begin
if (f = 0)
then begin
Edit1.Text := '2';
f := 1;
end
else Edit1.Text := Edit1.Text + '2';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '3';
f := 1;
end
else Edit1.Text := Edit1.Text + '3';
end;
procedure TForm1.Button4Click(Sender: TObject); // ?
begin
if f = 0 then
begin
Edit1.Text := '4';
f := 1;
end
else Edit1.Text := Edit1.Text + '4';
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if (f = 0)
then begin
Edit1.Text := '5';
f := 1;
end
else Edit1.Text := Edit1.Text + '5';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '6';
f := 1;
end
else Edit1.Text := Edit1.Text + '6';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '7';
f := 1;
end
else Edit1.Text := Edit1.Text + '7';
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '8';
f := 1;
end
else Edit1.Text := Edit1.Text + '8';
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '9';
f := 1;
end
else Edit1.Text := Edit1.Text + '9';
end;
procedure TForm1.ButtonZClick(Sender: TObject); // 8. что делает эта процедура?
begin
if Edit1.Text = '0' then
begin
Edit1.Text := '0,';
f := 1;
end;
if Pos(',',Edit1.Text) = 0 then // 9. что делает эта операция?
Edit1.Text := Edit1.Text + ',';
end;
procedure DoOper; // что делает процедура?
var
numb: real; //10. это число на индикаторе, поясните //что означает эта строка?
begin
// 11. accum что содержит?
// 12. oper – это что?
// 13 а где находится операнд?.
numb := StrToFloat(Form1.Edit1.Text);
case oper of
0: accum := numb;
1: accum := accum + numb;
2: accum := accum - numb;
end;
Form1.Edit1.Text := FloatToStr(accum); // 14. что делает эта операция?
end;
procedure TForm1.ButtonPlusClick(Sender: TObject); // что делает процедура?
{ Подсказка: надо выполнить предыдущую операцию, вывести результат на индикатор, запомнить текущую операцию и установить режим ожидания первой цифры нового числа}
begin
if f = 0
then oper := 1
else begin // Подсказка: на индикаторе есть число
DoOper; // 15. что делает эта операция?
oper :=1; // 16. что делает эта операция?
f:=0;
end;
end;
procedure TForm1.ButtonMinusClick(Sender: TObject); // что делает процедура?
begin
if f = 0
then oper := 2
else begin
DoOper; // 17. что делает эта операция?
oper :=2; // 18. что делает эта операция?
f:=0;
end;
end;
// кнопка "="
procedure TForm1.ButtonEnterClick(Sender: TObject); // 19. что делает эта процедура?
begin
if f = 0
then oper := 0
else begin
DoOper; // 20. это что?
oper :=0;
f:=0;
end;
end;
// 21 кнопка "с" - что делает?
procedure TForm1.ButtonCClick(Sender: TObject);
begin
Edit1.Text := '0';
accum := 0;
oper := 0;
f := 0;
end;
procedure TForm1.Edit1Change(Sender: TObject; var Key:Char);
// 22. что делает эта процедура?
begin
Key := Chr(0);
end;
procedure TForm1.FormCreate(Sender: TObject); // 23. что делает эта процедура?
begin
oper := 0;
end;
end.
Рекомендация
Дать указание студентам по завершению упражнения в Word вставить табличку, поместить в нее ответы на все указанные вопросы и предъявить их преподавателю.
Занятия 4 .