Текст программы
После того как будет создана форма программы, можно приступить к кодированию (набору текста). Сначала надо внести дополнения в объявление формы (листинг 10.1) – объявить массив компонентов RadioButton, функцию обработки события click на кнопке выбора ответа и функции, обеспечивающие отображение и удаление вопроса.
Следует обратить внимание на то, что объявление массива компонентов RadioButton (указателей на компоненты) только устанавливает факт существования компонентов, сами же компоненты будут созданы в начале работы программы. Делает это конструктор формы. Он же задает функции обработки события click для компонентов массива. Другой важный момент, на который следует обратить внимание, это объявление функций swowVopros и EraseVopros как методов объекта Form1. Это сделано для того, чтобы обеспечить этим функциям прямой доступ к компонентам формы.
Текст модуля главной формы приведен в листинге 10.2.
Листинг 10.1. Программа тестирования (заголовочный файл).
#ifndef tester_H #define tester_H #include <Classes.hpp> #include <Controls.hpp> #include <StdCTRLs.hpp> #include <Forms.hpp> #include <ExtCTRLs.hpp> #include <Dialogs.hpp> #include <Graphics.hpp> // вопрос struct TVopros { AnsiString Vopr; // вопрос AnsiString Img; // иллюстрация (имя BMP-файла) AnsiString Otv[4]; // варианты ответа int nOtv; // кол-во вариантов ответа int rOtv; // номер правильного ответа }; // форма class TForml: public TForm { published: // IDE-managed Components TLabel *Labell; // информационное сообщение, вопрос Tlmage *Imagel; // иллюстрация к вопросу TButton *Buttonl; // кнопка OK / Дальше void__fastcall FormActivate(TObject *Sender); void __fastcall ButtonlClick(TObject *Sender); private: TRadioButton *RadioButton[4]; // варианты ответа – кнопки выбора void __fastcall RadioButtonClick(TObject *Sender); // щелчок на // кнопке выбора ответа void __fastcall ShowVopros(TVopros v); // выводит вопрос void __fastcall EraseVopros(void); // удаляет вопрос public: __fastcall TForml (TCornponent* Owner); }; extern PACKAGE TForml *Forml; #endif