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

  • Рис. 3.25

  • Порядок работы : Запустить C++ Builder Поместить на форму следующие компоненты, расположенные на закладках Win3.1 и Standard

  • DirectoryListBox

  • Edit1

  • Button1 , Button2 , Button3 , Button4

  • DriveComboBox

  • Lable1

  • Lable3

  • Lable5

  • Lable7

  • Text

  • DriveComboBox; На какой закладке палитры компонентов находятся компоненты: DriveComboBox, DirectoryListBox, FileListBox

  • Add ListBox1ItemsAdd("Roman") Примердля ListBox'а. Для вставки строки в определенное место служит метод Insert


    Скачать 0.59 Mb.
    НазваниеAdd ListBox1ItemsAdd("Roman") Примердля ListBox'а. Для вставки строки в определенное место служит метод Insert
    Дата09.02.2022
    Размер0.59 Mb.
    Формат файлаdocx
    Имя файлаC.docx
    ТипУрок
    #356179
    страница14 из 17
    1   ...   9   10   11   12   13   14   15   16   17

    Подключение файла ресурсов


    Листинг 3.9. Баннер (baner.h, baner_.cpp).

    // baner.h

    class TForml: public TForm

    { published:

    TTimer *Timerl;

    void__fastcall FormCreate(TObject *Sender);

    void __fastcall TimerITimer(TObject *Sender);

    private:

    Graphics::TBitmap *baner; // баннер

    TRect kadr; // кадр баннера

    TRect scr; // область воспроизведения баннера

    int w, h; // размер кадра

    int с; // номер воспроизводимого кадра

    public:

    _fastcall TForml(TComponent* Owner);

    };

    // baner_.cpp

    #define FBANER "borland.bmp" // баннер

    #define NKADR 4 // количество кадров в баннере

    void__fastcall TForml::FormCreate(TObject *Sender)

    {

    baner = new Graphics::TBitmap();

    baner › LoadFromFile(FBANER); // загрузить баннер

    h = baner › Height;

    w = baner › Width / NKADR;

    scr = Rect(10.10.10+w,10+h); // положение и размер области

    // воспроизведения баннера kadr = Rect(0.0,w,h);

    // положение и размер первого кадра

    //в баннере

    }

    // обработка события OnTimer

    void__fastcall TForml:rTimerlTimer(TObject *Sender)

    {

    // вывести кадр баннера

    Canvas › CopyRect(scr,baner › Canvas,kadr);

    // подготовиться к воспроизведению следующего кадра

    if (с < NKADR)

    {

    // воспроизводимый в данный момент

    // кадр – не последний

    с++;

    kadr.Left += w;

    kadr.Right += w;

    }

    else

    {

    с = 0;

    kadr.Left = 0;

    kadr.Right = w;

    }

    }

    Основную работу в программе выполняет функция обработки события onTimer, которая выделяет из битового образа Baner очередной кадр и выводит его на поверхность формы. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 3.25), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра.


    Рис. 3.25. Метод CopyRect копирует в область Rect1 поверхности Canvas1 область Rect2 с поверхности Canvas2

    Лабораторная работа

    Тема: Чтение информации из файла

    Цели:

    1. Научиться помещать компоненты на форму.

    2. Научиться изменять свойства компонентов

    3. Научиться работать с файлами (открывать, читать из них информацию), закрывать

    4. Понять написание кода.


    Порядок работы:

    1. Запустить C++ Builder

    2. Поместить на форму следующие компоненты, расположенные на закладках Win3.1 и Standard:

          • DriveComboBox с помощью него создаётся выпадающий список в котором отображаются названия всех носителей присутствующих в системе. С помощью него мы будем осуществлять переход от одного диска к другому;

          • DirectoryListBox с помощью него будет отображаться дерево каталогов выбранного диска;

          • FileListBox с помощью него отображается список файлов выбранной директории;

          • Edit1 (для отображения пути к выбранному файлу) и Edit2 (для отображения результата);

          • Lable1, Lable2Lable3Lable4Lable6Lable7 (для отображения комментариев);

          • Button1Button2, Button3, Button4;





    1. Настроить свойства используемых компонентов

          • Выделить компонент DriveComboBox и открыть закладку Properties инспектора объектов. Открыть список в свойстве DirList и выбрать в нём компонент DirectoryList1, теперь в нём будут отображаться каталоги с выбранного диска;

          • Выделить компонент DirectoryListBox щёлкнув по нему левой кнопкой мыши и в свойстве FileList выбрать компонент FileListBox1 из выпадающего списка;

          • Изменить свойства Caption в элементе Lable1соответственно на «Выбрать диск»;

          • Изменить свойства Caption в элементе Lable2 соответственно на «Выбрать директорий»;

          • Изменить свойства Caption в элементе Lable3 соответственно на «Выбрать файл»;

          • Изменить свойства Caption в элементе Lable4 соответственно на «Нажать на кнопку «Установить»;

          • Изменить свойства Caption в элементе Lable5 соответственно на «Полученный путь к файлу»;

          • Изменить свойства Caption в элементе Lable6 соответственно на «Открыть файл»;

          • Изменить свойства Caption в элементе Lable7 соответственно на «Результат»;

          • Изменить свойства Caption в элементах Button1Button2Button3 и Button4 на «Установить», «Открыть», «Результат» и «Выход» соответственно;

          • Убрать в свойстве Text элементов Edit1 и Edit2 содержимое.

    2. Приступить к обработке событий.

          • Начать с нажатия кнопки «Установить» на форме Form1. Прежде всего активизировать кнопку, с которой будем работать. Затем перейти в инспектор объектов и активизировать страницу событий (Events). На ней можно обнаружить список всех возможных событий для активного компонента (в данном случае кнопки). Нас интересует событие OnClick, возникающее при нажатии кнопки. Чтобы определить обработчик этого события, необходимо сделать двойной щелчок мыши в поле значения. Появится окно редактора кода с заготовкой для нашего обработчика, в котором необходимо написать код
            Edit1-Text=FileListBox1-FileName;

          • Написать следующий код для обработки события при нажатии на кнопку «Открыть»:

    if((F=fopen(Edit1-Text.c_str(),"rt"))==NULL) // проверка открытия файла

    {

    ShowMessage ("Файл не удаётся открыть");

    return;

    }

    else ShowMessage ("Файл открыт");

    // Чтение информации из файла

    for (i=0;i

    for (j=0;j

    // Оператор чтения целой переменной из файла

    // и помещение ёё в соответствующую переменную массива

    fscanf(F,"%d",&Mint[i][j]); // &Mint[i][j] - Указатель на массив

    // После того как закончили чтение из файла его необходимо закрыть

    fclose(F);

          • Написать следующий код для обработки события при нажатии на кнопку «Результат»:

    int A; // переменная для результата

    A=0;

    for (i=0;i

    for (j=0;j

    A=A+Mint[i][j];

    Edit2-Text=IntToStr(A);


          • Написать следующий код для обработки события при нажатии на кнопку «Выход»: Close();

    1. В модуле Unit1.cpp добавить директиву препроцессора файл «stdio.h» используя оператор #include "stdio.h";

    2. Поместить в начало программы описания файла, массива и переменных для цикла;

    3. Создать текстовый файл с данными, разделёнными между собой пробелами



    1. Выполнить команду Run/Ran;

    2. Выбрать диск, выбрать директорий, выбрать файл, нажать на кнопку «Установить», нажать на кнопку «Открыть», нажать на кнопку «Результат», посмотреть результат и нажать на кнопку «Выход».

    Листинг

    Модуль Unit1.cpp

    //---------------------------------------------------------------------------
    #include

    #pragma hdrstop

    #include "stdio.h"

    #include "Unit1.h"

    //---------------------------------------------------------------------------

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TForm1 *Form1;

    FILE*F; // описание файла

    int Mint[3][3]; // описание массива

    int i,j; // описание переменных для циклов

    //---------------------------------------------------------------------------

    __fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    {

    }

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)

    {

    Close();

    }

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    // Помещение выбранного пути в Edit1 для использования в операторе

    //открытия файла

    Edit1-Text=FileListBox1-FileName;

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button2Click(TObject *Sender)

    {

    if((F=fopen(Edit1-Text.c_str(),"rt"))==NULL) // проверка открытия файла

    {

    ShowMessage ("Файл не удаётся открыть");

    return;

    }

    else ShowMessage ("Файл открыт");

    // Чтение информации из файла

    for (i=0;i

    for (j=0;j

    // Оператор чтения целой переменной из файла и помещение ёё в соответствующую переменную массива

    fscanf(F,"%d",&Mint[i][j]); // &Mint[i][j] - Указатель на массив

    // После того как закончили чтение из файла его необходимо закрыть

    fclose(F);

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button3Click(TObject *Sender)

    {

    int A; // переменная для результата

    A=0;

    for (i=0;i

    for (j=0;j

    A=A+Mint[i][j];

    Edit2-Text=IntToStr(A);

    }

    //---------------------------------------------------------------------------
    Unit1.h

    //---------------------------------------------------------------------------

    #ifndef Unit1H

    #define Unit1H

    //---------------------------------------------------------------------------

    #include

    #include

    #include

    #include

    #include

    //---------------------------------------------------------------------------

    class TForm1 : public TForm

    {

    __published: // IDE-managed Components

    TDriveComboBox *DriveComboBox1;

    TDirectoryListBox *DirectoryListBox1;

    TFileListBox *FileListBox1;

    TLabel *Label1;

    TLabel *Label2;

    TLabel *Label3;

    TLabel *Label4;

    TEdit *Edit1;

    TButton *Button1;

    TLabel *Label5;

    TLabel *Label6;

    TButton *Button2;

    TEdit *Edit2;

    TLabel *Label7;

    TButton *Button3;

    TButton *Button4;

    void __fastcall Button4Click(TObject *Sender);

    void __fastcall Button1Click(TObject *Sender);

    void __fastcall Button2Click(TObject *Sender);

    void __fastcall Button3Click(TObject *Sender);

    private: // User declarations

    public: // User declarations

    __fastcall TForm1(TComponent* Owner);

    };

    //---------------------------------------------------------------------------

    extern PACKAGE TForm1 *Form1;

    //---------------------------------------------------------------------------

    #endif
    Содержание отчёта

    1. Постановка задачи.

    2. Результаты отладки

    3. Текст программы и результат её выполнения.


    Контрольные вопросы:

    1. Для чего используется компонент DriveComboBox;

    2. На какой закладке палитры компонентов находятся компоненты: DriveComboBox, DirectoryListBox, FileListBox

    3. Какие операторы в языке С++Builder используются для открытия файла


    1   ...   9   10   11   12   13   14   15   16   17


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