Главная страница
Навигация по странице:

  • Ход работы: Задание 1.

  • Вывод

  • Ход работы: Задание 1 .

  • Ход работы: Задание.

  • Цель

  • Ход работы: Задание 1: Калькулятор со свободным вводом

  • Задание 2: Расчет платежной ведомости.

  • Отчёт по ООП. Воронеж 2019 Практическая работа 1 Тема практической работы Файл проекта. Структура и Назначение


    Скачать 0.96 Mb.
    НазваниеВоронеж 2019 Практическая работа 1 Тема практической работы Файл проекта. Структура и Назначение
    АнкорОтчёт по ООП
    Дата11.01.2022
    Размер0.96 Mb.
    Формат файлаdoc
    Имя файлаОтчёт по ООП.doc
    ТипПрактическая работа
    #328375
    страница4 из 4
    1   2   3   4
    Тема: Использование многострочного редактора TEdit, TMaskEdit.

    Цель: Научится использовать многострочные редакторы

    Ход работы:

    Задание 1.Создадим маленький пример, который проиллюстрирует работу с компонентом TMaskEdit.



    Рис.52
    Задание 2. Улучшите программу, чтобы можно было вводить номер телефона и имя владельца.


    Рис.53 Рис.54
    Листинг:

    var

    Form1: TForm1;

    TickCounter: LongInt;

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    TickCounter:=0;

    Edit1.Text:='0.0';

    end;

    procedure TForm1.BitBtn1Click(Sender: TObject);

    begin

    if Timer1.Enabled then

    begin

    Timer1.Enabled:=False;

    BitBtn1.Caption:='&Старт';

    Timer1.Enabled:=False;

    BitBtn1.Caption:='&Старт';

    end

    else

    begin

    timer1.Enabled:=true;

    BitBtn1.Caption:='&Стоп';

    end;

    end;

    procedure TForm1.BitBtn2Click(Sender: TObject);

    begin

    TickCounter:=0;

    Edit1.Text:='0.0';

    end;

    procedure TForm1.Timer1Timer(Sender: TObject);

    var seconds:Real;

    s:string;

    begin

    TickCounter:=TickCounter+1;

    Seconds:=TickCounter/10;

    Str(Seconds: 10:1, S);

    Edit1.Text:=S;

    end;

    end.
    Вывод: Научились использовать многострочные редакторы

    Практическая работа №19

    Тема: Использование многострочного редактора TMemo.

    Цель:научится использовать многострочный редактор TMemo.

    Ход работы:

    Задание 1. Напишем программу, которая будет выполнять простые функции текстового редактора.



    Рис. 55



    Рис. 56

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    MainMemo: TMemo;

    ClearButton: TButton;

    procedure ClearButtonClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ClearButtonClick(Sender: TObject);

    begin

    MainMemo.Lines.Clear;

    end;

    end.
    Задание 2. Усложните пример, добавив возможность сохранения введённого текста и загрузки его обратно.



    Рис. 57



    Рис. 58



    Рис. 59

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    MainMemo: TMemo;

    ClearButton: TButton;

    procedure ClearButtonClick(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure FormShow(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ClearButtonClick(Sender: TObject);

    begin

    MainMemo.Clear;

    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    MainMemo.Lines.SaveToFile('memo.txt');

    end;

    procedure TForm1.FormShow(Sender: TObject);

    begin

    if FileExists('memo.txt') then

    MainMemo.Lines.LoadFromFile('memo.txt');

    end;

    end.


    Задание 3. Напишите пример, который будет получать доступ к строкам.



    Рис. 60

    Рис. 61 Рис. 62

    Рис. 63 . Рис.64
    Листинг:
    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    ClearButton: TButton;

    AddButton: TButton;

    DelButton: TButton;

    ChangeButton: TButton;

    MainMemo: TMemo;

    procedure ClearButtonClick(Sender: TObject);

    procedure AddButtonClick(Sender: TObject);

    procedure DelButtonClick(Sender: TObject);

    procedure ChangeButtonClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ClearButtonClick(Sender: TObject);

    begin

    MainMemo.Lines.Clear;

    end;

    procedure TForm1.AddButtonClick(Sender: TObject);

    begin

    MainMemo.Lines.Add(' Новая строка');

    end;

    procedure TForm1.DelButtonClick(Sender: TObject);

    begin

    if MainMemo.Lines.Count<>0 then

    MainMemo.Lines.Delete(MainMemo.CaretPos.Y);

    end;

    procedure TForm1.ChangeButtonClick(Sender: TObject);

    begin

    MainMemo.Lines.Strings[MainMemo.CaretPos.Y]:='Horrific';

    MainMemo.Lines.Strings[0]:='Текст изменён';

    end;

    end.

    Задание 4. создать программу, в которой содержимое текстового файла SYM переписывается в текстовый файл DYM без пробелов.


    Рис. 65


    Рис. 66

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    Label1: TLabel;

    Memo1: TMemo;

    procedure Memo1KeyPress(Sender: TObject; var Key: Char);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

    var

    f, g: TextFile;

    x: Char;

    s: String;

    begin

    if Key=#13 then

    begin

    s:='';

    AssignFile(f,'D:\sym.txt'); // Правильно укажите

    // директорию, в которой хотите создать файл
    Rewrite(f);

    write(f,Memo1.Text); // Запись данных из Memo1 в текстовый файл SYM.txt

    CloseFile(f);

    Label1.caption:= 'Содержимое файла DYM:';

    Memo1.Clear;

    AssignFile(g,'D:\dym.txt');

    rewrite(g);

    reset(f);

    while not eof(f) do // Cодержимое файла SYM переписывается в файл DYM без пробелов

    begin

    read(f,x);

    if x<>#32 then write(g,x);

    end;

    CloseFile(g);

    CloseFile(f);

    reset(g);

    while not eof(g) do // Переменной S присваивается содержимое файла DYM

    begin

    read(g,x);

    s:=s+x;

    end;

    Memo1.Lines.Add(s); // Вывод содержимого файла DYM в окно Memo1

    CloseFile(g);

    end;

    end;

    end.
    Вывод: Янаучился использовать многострочный редактор TMemo.

    Практическая работа №20

    Тема: Использование многострочного редактора TRichEdit.

    Цель:написать программу с использованием многострочного редактора TRichEdit.

    Ход работы:

    Задание.Напишите программу с использованием компонента TRichEdit. Где буквы и слова введённого текста будут раскрашиваться разными цветами.

    Рис. 67


    Рис. 68

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, ComCtrls;

    type

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    SaveDialog1: TSaveDialog;

    Memo1: TMemo;

    RichEdit1: TRichEdit;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Memo1.Lines.SaveToFile('1.TXT'); //сохранение в 1.txt

    If SaveDialog1.Execute then

    begin

    RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);

    End;

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    RichEdit1.Clear;

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    RichEdit1.SelStart:=0;

    RichEdit1.SelLength:=5;

    RichEdit1.SelAttributes.Color:=clRed;

    RichEdit1.SelStart:=6;

    RichEdit1.SelLength:=3;

    RichEdit1.SelAttributes.Color:=clGreen;

    RichEdit1.SelStart:=10;

    RichEdit1.SelLength:=7;

    RichEdit1.SelAttributes.Color:=clBlue;

    end;

    end.
    Вывод: Я написал программу с использованием многострочного редактора TRichEdit.


    Практическая работа№21

    Тема: Кнопки: основные свойства, методы, пример использования.

    Цель:Изучить виды и свойства кнопок в Delphi.

    Ход работы:

    Задание 1. Напишем маленькую программу с использованием кнопки. Для этого создай новое приложение.


    Рис. 69

    Задание 2. Усложним наш пример и поймаем событие, когда нажимается кнопка.


    Рис. 70

    Задание 3. Напишем программу, у которой будет только одна кнопка. При наведении на неё мышкой, кнопка будет убегать.


    Рис. 71


    Рис. 72

    Задание 4. Разместите на форме несколько компонентов RadioButton. Запустите программу и попробуйте пощёлкать.



    Рис. 73

    Листинг:

    procedure TForm1.MyFirstButtonMouseMove(Sender: TObject;

    Shift: TShiftState; X, Y: Integer);

    var

    index:integer;

    begin

    index:=random(4);

    case index of

    0: MyFirstButton.Left:=MyFirstButton.Left+MyFirstButton.Width;

    1: MyFirstButton.Left:=MyFirstButton.Left-MyFirstButton.Width;

    2: MyFirstButton.Top:=MyFirstButton.Top+MyFirstButton.Height;

    3: MyFirstButton.Top:=MyFirstButton.Top-MyFirstButton.Height;

    end;

    if MyFirstButton.Left<0 then

    MyFirstButton.Left:=0;

    if (MyFirstButton.Left+MyFirstButton.Width)>Form1.Width then

    MyFirstButton.Left:=Form1.Width-MyFirstButton.Width;

    if MyFirstButton.Top<0 then

    MyFirstButton.Top:=0;

    if (MyFirstButton.Top+MyFirstButton.Height)>Form1.Height then

    end;

    begin

    Form2.ShowModal;

    if Form2.ModalResult=mrOk then

    Application.MessageBox('Вы нажали кнопку OK', 'Вы нажали');

    if Form2.ModalResult=mrCancel then

    Application.MessageBox('Вы нажали кнопку Cancel', 'Вы нажали');

    if Form2.ModalResult=mrAbort then

    Application.MessageBox('Вы нажали кнопку Abort', 'Вы нажали');

    end;
    Вывод: Я изучил виды и свойства кнопок в Delphi.

    Практическая работа №22

    Тема: Работа с проектом в Delphi.

    Цель: узнать, что такое фрейм, научится с ним работать.

    Ход работы:

    Задание 1: Калькулятор со свободным вводом

    Разработаем аналог калькулятора, который будет выполнять 4 основные операции с числами.


    Рис. 74

    Рис. 75

    Рис. 76


    Рис. 77.

    Рис. 78

    Рис. 79
    Листинг:
    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, Buttons;

    type

    TForm1 = class(TForm)

    EditOperand1: TEdit;

    EditOperand2: TEdit;

    EditResult: TEdit;

    CloseBitBtn: TBitBtn;

    AddBtn: TSpeedButton;

    SubBtn: TSpeedButton;

    MulBtn: TSpeedButton;

    DivideBtn: TSpeedButton;

    ModBtn: TSpeedButton;

    DivBtn: TSpeedButton;

    ClearBtn: TSpeedButton;

    LabelOperator: TLabel;

    LabelResult: TLabel;

    procedure AddBtnClick(Sender: TObject);

    procedure SubBtnClick(Sender: TObject);

    procedure MulBtnClick(Sender: TObject);

    procedure DivideBtnClick(Sender: TObject);

    procedure ClearBtnClick(Sender: TObject);

    procedure ModBtnClick(Sender: TObject);

    procedure DivBtnClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Result: Integer;

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.AddBtnClick(Sender: TObject);

    begin

    Result:= StrToInt(EditOperand1.Text)+

    StrToInt(EditOperand2.Text);

    EditResult.Text:=IntToStr(Result);

    LabelOperator.Caption:=AddBtn.Caption;

    LabelResult.Caption:='=';

    end;

    procedure TForm1.SubBtnClick(Sender: TObject);

    begin

    Result:= StrToInt(EditOperand1.Text)-

    StrToInt(EditOperand2.Text);

    EditResult.Text:=IntToStr(Result);

    LabelOperator.Caption:=SubBtn.Caption;

    LabelResult.Caption:='=';

    end;

    procedure TForm1.MulBtnClick(Sender: TObject);

    begin

    Result:= StrToInt(EditOperand1.Text)*

    StrToInt(EditOperand2.Text);

    EditResult.Text:=IntToStr(Result);

    LabelOperator.Caption:=MulBtn.Caption;

    LabelResult.Caption:='=';

    end;

    procedure TForm1.DivideBtnClick(Sender: TObject);

    var Result: Real;

    begin

    Result:= StrToInt(EditOperand1.Text)/

    StrToInt(EditOperand2.Text);

    EditResult.Text:=FloatToStr(Result);

    LabelOperator.Caption:=DivideBtn.Caption;

    LabelResult.Caption:='=';

    end;

    procedure TForm1.ClearBtnClick(Sender: TObject);

    begin

    EditOperand1.Text:='';

    EditOperand2.Text:='';

    EditResult.Text:='';

    LabelOperator.Caption:='?';

    LabelResult.Caption:='?';

    end;

    procedure TForm1.ModBtnClick(Sender: TObject);

    var Result:Integer;

    begin

    Result:= StrToInt(EditOperand1.Text) mod

    StrToInt(EditOperand2.Text);

    EditResult.Text:=FloatToStr(Result);

    LabelOperator.Caption:=ModBtn.Caption;

    LabelResult.Caption:='=';

    end;

    procedure TForm1.DivBtnClick(Sender: TObject);

    var Result: Real;

    begin

    Result:= StrToInt(EditOperand1.Text) div

    StrToInt(EditOperand2.Text);

    EditResult.Text:=FloatToStr(Result);

    LabelOperator.Caption:=DivBtn.Caption;

    LabelResult.Caption:='=';

    end;

    end.

    Задание 2: Расчет платежной ведомости. Напишите программу для расчета платежной ведомости.

    Рис. 80

    Листинг:
    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    procedure Edit1Change(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Edit1Change(Sender: TObject);

    var Hours, rate, overtime, result:Real;

    begin

    if Edit1.Text<>''then

    Hours:=StrToInt(Edit1.Text) //получаем содержимое строки из окна

    //редактирования Edit1 и преобразуем его в

    //удобную для вычислений величину типа Real

    else

    Hours:=0;

    //вычисляем сверхурочные часы, если они есть

    if Hours>37.5 then Overtime:=Hours-37.5

    else

    Overtime:=0;

    //преобразовываем содержимое окна Edit2 в //Real

    if Edit2.Text<>''then

    Rate:=StrToFloat(Edit2.Text)

    else

    Rate:=0;

    //вычисляем результат, преобразуем его

    //обратно в текстовую строку и отображаем

    //его в окне редактирования Edit3. Используем

    //стандартную подпрограмму FloatToStrF для

    //форматирования строки результата в виде

    //денежной суммы

    Result:=Hours*Rate+0.5*Overtime*Rate;

    Edit3.Text:=FloatToStrF(Result,ffCurrency,10,2);

    end;

    end.
    Вывод: Я узнал, что такое фрейм, научится с ним работать.

    Практическая работа № 23

    Тема: Создание таблиц. Таблицы: заполнение и редактирование.

    Цель:изучить свойства компонента TStringGrid. Написать программу с использованием массивов.

    Ход работы:

    Задание: создать программу для определения вектора , где А-квадратная матрица размерностью NxN, а Y,B–одномерные массивы размерностью N. Элементы вектора Y определяются по формуле .


    Рис. 81


    Рис. 82

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, Buttons;

    type

    TForm1 = class(TForm)

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    StringGrid3: TStringGrid;

    Edit1: TEdit;

    Label1: TLabel;

    Button1: TButton;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure FormActivate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    const

    Nmax=10; // Максимальная размерность массива

    Type

    Mas1 = array[1..Nmax] of extended; {Объявление типа одномерного массива вещественных чисел размерностью Nmax}

    Mas2 = array[1..Nmax,1..Nmax] of extended; {Объявление типа двумерного массива вещественных чисел размерностью Nmax*Nmax}

    Var

    Form1: TForm1;

    A : Mas2; // Объявление двумерного массива

    B,Y : Mas1; // Объявление одномерных массивов

    N,i,j : integer;

    implementation

    {$R *.dfm}

    procedure TForm1.FormActivate(Sender: TObject);

    {Процедура подготовки к началу работы}

    begin

    N:=3; // Задание размерности массива

    Edit1.Text:=IntToStr(N); // Вывод значения N в Edit1

    {Задание числа строк и столбцов в таблицах}

    StringGrid1.ColCount:=N+1;

    StringGrid1.RowCount:=N+1;

    StringGrid2.RowCount:=N+1;

    StringGrid3.RowCount:=N+1;

    {Ввод в левую верхнюю ячейку таблицы названия массива}

    StringGrid1.Cells[0,0]:='Массив A:';

    StringGrid2.Cells[0,0]:='Массив B:';

    StringGrid3.Cells[0,0]:='Массив Y:';

    {Заполнение верхнего и левого столбцов поясняющими подписями}

    for i:=1 to N do

    begin

    StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

    StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

    end;

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    {Процедура изменения размерности массива}

    begin

    try

    N:=StrToInt(Edit1.Text);

    except

    ShowMessage('Ошибочная запись числа '+Edit1.Text);

    Edit1.SetFocus;

    Exit;

    end;

    {Задание числа строк и столбцов в таблицах}

    StringGrid1.ColCount:=N+1;

    StringGrid1.RowCount:=N+1;

    StringGrid2.RowCount:=N+1;

    StringGrid3.RowCount:=N+1;

    {Заполнение верхнего и левого столбцов поясняющими подписями}

    for i:=1 to N do

    begin

    StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

    StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

    end;

    end;

    procedure TForm1.BitBtn1Click(Sender: TObject);

    {Процедура расчета вектора Y}

    var

    s: extended;

    begin

    {Заполнение массива А элементами из таблицы StringGrid1}

    for i:=1 to N do

    for j:=1 to N do

    begin

    if StringGrid1.Cells[j,i]=' ' then

    begin

    ShowMessage('Ошибка заполнения массива А');

    Exit;

    end;

    try

    A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

    except

    ShowMessage('Ошибочная запись числа '+StringGrid1.Cells[j,i]);

    Exit;

    end;

    end;

    {Заполнение массива B элементами из таблицы StringGrid2}

    for i:=1 to N do

    begin

    if StringGrid2.Cells[0,i]=' ' then

    begin

    ShowMessage('Ошибка заполнения массива В!');

    Exit;

    end;

    try

    B[i]:=StrToFloat(StringGrid2.Cells[0,i]);

    except

    ShowMessage('Ошибочная запись числа '+StringGrid2.Cells[0,i]);

    Exit;

    end;

    end;

    {Умножение массива А на массив В}

    for i:=1 to N do

    begin

    s:=0;

    for j:=1 to N do

    s:=s+A[i,j]*B[i];

    Y[i]:=s;

    {Вывод результата в таблицу StringGrid3}

    StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);

    end;

    end;

    procedure TForm1.BitBtn2Click(Sender: TObject);

    begin

    {Очищение всех ячеек таблиц перед очередным прогоном программы}

    for i:=1 to N do

    begin

    StringGrid2.Cells[0,i]:=' ';

    StringGrid3.Cells[0,i]:=' ';

    for j:=1 to N do

    StringGrid1.Cells[j,i]:=' ';

    end;

    end; end.

    Вывод: Я изучил свойства компонента TStringGrid. Написать программу с использованием массивов.

    Практическая работа №24

    Тема: Класс TPen. Класс TBrush.

    Цель: научится использовать классы TPen, TBrush.

    Ход работы:

    Задание 1. Рассмотрим пример рисования на поверхности формы с использованием свойства Canvas.


    Рис. 83

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs;

    type

    TForm1 = class(TForm)

    procedure FormResize(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormResize(Sender: TObject);

    var w,h,wm,hm:integer;

    begin

    form1.Refresh;

    wm:=form1.ClientWidth; w:=wm div 8;

    hm:=form1.ClientHeight; h:=hm div 10;

    //небо

    with form1.Canvas do begin

    brush.Color:=clBlue;

    brush.Style:=bsDiagCross;

    pen.color:=clblue;

    rectangle(0,0,wm,h);

    //трава

    brush.Color:=clGreen;

    brush.Style:=bsHorizontal;

    pen.color:=clGreen;

    rectangle(0,hm-h,wm,hm);

    //солнце

    brush.Color:=clYellow;

    brush.Style:=bsSolid;

    pen.color:=clYellow;

    ellipse(w,2*h,2*w,2*h+w);

    //домик

    brush.Color:=clGray;

    brush.Style:=bsSolid;

    pen.color:=clMaroon;

    rectangle(2*w,hm-5*h,6*w,hm-h);

    polygon([point(2*w,hm-5*h),point(4*w,hm-7*h),

    point(6*w,hm-5*h),point(2*w,hm-5*h)]);

    brush.Color:=clwhite;

    brush.Style:=bsSolid;

    pen.color:=clMaroon;

    rectangle(3*w,hm-4*h,5*w,hm-2*h);

    end;

    end;

    end.
    Задание 2. Нарисуем мигающий светофор. Поставьте на форму кнопку BitBtn и компонент PaintBox (п.к System). Опишем процедуру на событие OnPaint компоненты PaintBox:


    Рис. 84

    Листинг:

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, Buttons, ExtCtrls;

    type

    TForm1 = class(TForm)

    PaintBox1: TPaintBox;

    BitBtn1: TBitBtn;

    procedure FormPaint(Sender: TObject);

    procedure PaintBox1Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormPaint(Sender: TObject);

    begin

    begin

    with canvas do begin

    pen.Color:=clBlack;

    brush.color:=clblack;

    rectangle(50,30,150,250);

    pen.color:=clgray;

    brush.color:=clgray;

    rectangle(90,250,110,330);

    pen.color:=clmaroon;

    brush.color:=clmaroon;

    ellipse(70,40,130,100);

    pen.Color:=clolive;

    brush.color:=clolive;

    ellipse(70,110,130,170);

    pen.Color:=clbackground;

    brush.color:=clbackground;

    ellipse(70,180,130,240);

    end;

    end;

    end;

    procedure TForm1.PaintBox1Click(Sender: TObject);

    begin

    begin

    with canvas do begin

    pen.Color:=clBlack;

    brush.color:=clblack;

    rectangle(50,30,150,250);

    pen.color:=clgray;

    brush.color:=clgray;

    rectangle(90,250,110,330);

    pen.color:=clmaroon;

    brush.color:=clmaroon;

    ellipse(70,40,130,100);

    pen.Color:=clolive;

    brush.color:=clolive;

    ellipse(70,110,130,170);

    pen.Color:=clbackground;

    brush.color:=clbackground;

    ellipse(70,180,130,240);

    end;

    end;

    end;

    procedure TForm1.BitBtn1Click(Sender: TObject);

    begin

    begin

    with canvas do begin

    pen.Color:=clred;

    brush.Color:=clred;

    ellipse(70,40,130,100);

    sleep(500);

    pen.Color:=clmaroon;

    brush.Color:=clmaroon;

    ellipse(70,40,130,100);

    pen.Color:=clYellow;

    brush.Color:=clYellow;

    ellipse(70,110,130,170);

    sleep(500);

    pen.Color:=clolive;

    brush.Color:=clolive;

    ellipse(70,110,130,170);

    pen.Color:=cllime;

    brush.Color:=cllime;

    ellipse(70,180,130,240);

    sleep(500);

    pen.Color:=clbackground;

    brush.Color:=clbackground;

    ellipse(70,180,130,240);

    pen.Color:=clYellow;

    brush.Color:=clYellow;

    ellipse(70,110,130,170);

    sleep(500);

    pen.Color:=clolive;

    brush.Color:=clolive;

    ellipse(70,110,130,170);

    pen.Color:=clred;

    brush.Color:=clred;

    ellipse(70,40,130,100);

    sleep(500);

    pen.Color:=clmaroon;

    brush.Color:=clmaroon;

    ellipse(70,40,130,100);

    end;

    end;

    end;

    end.
    Вывод: Я научился использовать классы TPen, TBrush.

    Практическая работа №25

    Тема: Создание редакторов свойств.

    Цель: Создать редактор свойств.
    Ход работы.

    Задание: Редактор Компонент.




    Рис. 85



    Рис86

    Вывод: Я создал редактор свойств.
    1   2   3   4


    написать администратору сайта