Практическая работа «Технология Drag-and-Drop»

- Создать новый проект.
- На форму добавить компонент Image с закладки Additional. В свойстве Picture компонента Image нажать на троеточие и выбрать нужный
рисунок. При необходимости растянуть компонент, чтобы был виден весь
рисунок.
- Добавить нужное количество компонентов StaticText.
Настроить свойства этого компонента: Color = clBtnHighlight (белый
фон), BorderStyle = sbsSingle (компонент
в рамке),Caption =” ”(нет текста в компоненте), AutoSize=false, Alignment= taCenter
(текст в компоненте
по центру), DragMode= dmAutomatic (свойство отвечающие за автоматическое
перетаскивание компонента).
Все компоненты должны иметь одинаковые размеры, совпадающие с картинкой.
- Добавить нужное количество компонентов Label.
Настроить свойства этого компонента: Transparent = true (прозрачный
фон в компоненте), Caption =” ”(нет текста в компоненте), AutoSize=false, WordWrap =true, Alignment= taCenter и Layout= tlCenter
(текст в компоненте
по центру). Все компоненты должны иметь одинаковые размеры,
совпадающие с картинкой. Компоненты расположить в прямоугольниках на
картинке. Имя компонента настроить так, чтобы было понятно, что этот
компонент обозначает, т.е. если компонент отвечает за шрифт, то его имя Name = labFont.
- Добавить кнопку Далее, по щелчку
которой открывается вторая форма.
- Добавить кнопку Очистить, щелчок по которой
очищает поле с ответами. Для того в событиях этого компонента щелкнуть по
событию OnClick и написать следующий код:
labFont->Caption="";
void __fastcall
TfrmVopros1::BitBtn2Click(TObject *Sender)
{
labInterval->Caption="";
// убрать надпись из
компонента Label отвечающего за интервал
labNachertanie->Caption="";
labSize->Caption="";
labSpisok->Caption="";
labStil->Caption="";
labViravnivanie->Caption="";
stextFont->Visible=true; // сделать видимым компонент StaticText отвечающего
за шрифт
stextInterval->Visible=true;
stextNachertanie->Visible=true;
stextSize->Visible=true;
stextSpisok->Visible=true;
stextStil->Visible=true;
stextViravnivanie->Visible=true;
}
- В одном из компонентов Label в
событие DragDrop написать следующий код:
void __fastcall TfrmVopros1::labFontDragDrop(TObject *Sender, TObject
*Source, int X, int Y)
{
TLabel *S = (TLabel *)Source; // компонент StaticText, который перетаскивается в данный момент
((TLabel*)Sender)->Caption=S->Caption; //
компонент Label, в который помещается перетаскиваемый компонент
// StaticText, принимает надпись компонента StaticText
S->Visible=false; // компонент StaticText, который перетаскивается в данный момент,
//становиться
невидимым
}
Во
всех остальных компонентах Label в событие DragDrop
сослаться на компонент для которого написан код, т.е. в нашем случае на labFont
- В одном из компонентов Label в
событие DragOver написать следующий код:
void
__fastcall TfrmVopros1::labFontDragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
Accept=true; //
разрешить принимать компонент, который перетаскивается
}
Во
всех остальных компонентах Label в событие DragOver
сослаться на компонент для которого написан код, т.е. в нашем случае на labFont
- Проверка на
правильный ввод ответов осуществляется в последней форме путем
накапливания правильных ответов и в зависимости от количества правильных
ответов выводиться оценка.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.