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


1
Практическая работа «Технология Drag-and-Drop»
1. Создать новый проект.
2. На форму добавить компонент Image с закладки Additional. В свойстве Picture компонента
Image нажать на троеточие и выбрать нужный рисунок. При необходимости растянуть
компонент, чтобы был виден весь рисунок.
3. Добавить нужное количество компонентов StaticText. Настроить свойства этого компонента:
Color = clBtnHighlight (белый фон), BorderStyle = sbsSingle (компонент в рамке),Caption =”
(нет текста в компоненте), AutoSize=false, Alignment= taCenter (текст в компоненте по
центру), DragMode= dmAutomatic (свойство отвечающие за автоматическое
перетаскивание компонента). Все компоненты должны иметь одинаковые размеры,
совпадающие с картинкой.
4. Добавить нужное количество компонентов Label. Настроить свойства этого компонента:
Transparent = true (прозрачный фон в компоненте), Caption =” (нет текста в компоненте),
AutoSize=false, WordWrap =true, Alignment= taCenter и Layout= tlCenter (текст в
компоненте по центру). Все компоненты должны иметь одинаковые размеры, совпадающие с
картинкой. Компоненты расположить в прямоугольниках на картинке. Имя компонента
настроить так, чтобы было понятно, что этот компонент обозначает, т.е. если компонент
отвечает за шрифт, то его имя Name = labFont.
5. Добавить кнопку Далее, по щелчку которой открывается вторая форма.
6. Добавить кнопку Очистить, щелчок по которой очищает поле с ответами. Для того в событиях
этого компонента щелкнуть по событию OnClick и написать следующий код:
labFont->Caption="";
2
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;
}
7. В одном из компонентов 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
8. В одном из компонентов Label в событие DragOver написать следующий код:
void __fastcall TfrmVopros1::labFontDragOver(TObject *Sender, TObject *Source, int X, int Y,
TDragState State, bool &Accept)
{
Accept=true; // разрешить принимать компонент, который перетаскивается
}
Во всех остальных компонентах Label в событие DragOver сослаться на компонент для
которого написан код, т.е. в нашем случае на labFont
9. Проверка на правильный ввод ответов осуществляется в последней форме путем
накапливания правильных ответов и в зависимости от количества правильных ответов
выводиться оценка.