Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Решение. Тема: Интерфейс Drag&DropСтр 1 из 2Следующая ⇒
ЛАБОРАТОРНАЯ РАБОТА №1 Тема: Интерфейс Drag& Drop Задание 1 Пусть имеется 8 коробочек и 8 фигур. Фигуры отличаются друг от друга формой (круг или квадрат), цветом (белый или черный) и размером (большой или маленький). Каждая коробочка может содержать фигуру только определенного типа (форма, размер, цвет). Напишите приложения для размещения фигур в коробочки. Решение Создайте новый проект. Сохраните новое приложение в папке Drag& Drop_1 — файл модуля под именем Main.pas, файл проекта — DragDrop_l.dpr. 1 й этап. Визуальное проектирование Для реализации данной игры воспользуемся 8 компонентами типа TShape (это будут фигуры) и 8 компонентами типа TLabel (это коробочки). Установите значения свойств формы следующим образом: Для именования компонентов введем следующие обозначения: · по размеру — В (big, большой) или S (small, маленький), · по цвету — В (black, черный) или W (white, белый), · по форме — S (square, квадрат) или С (circle, круг). У компонентов типа TShape добавим окончание shp. Таким образом, имя компонента, изображающего большой черный квадрат, будет BBSshp. А у белого маленького круга — SWCshp. Используя эти обозначения, измените свойства Name компонентов Shape. Рисунок 1 Компоненты класса TLabel назовем по такой же схеме, изменим только окончание на lbl. То есть, если коробочка предназначена для большого черного круга, название будет ВВСlbl. Измените свойства Name компонентов Label в соответствии с введенной схемой обозначения. У всех компонентов Label установите свойство AutoSize в значение False, свойство Transparent — свойство True (чтобы компоненты, помещенные на них, были видны), значения свойств Caption в соответствии с рис. 1. Свойство DragMode компонентов Shape установите в значение dmAutomatic. Для проверки правильности выбора коробочки (компонента типа TLabel) для компонента типа TShape воспользуемся свойством Hint. Значения свойства Hint задайте в соответствии с названием компонента, но без окончания (shp или lbl). Например, у компонента SWSshp оно будет равно SWS, причем оно будет совпадать со значением свойства для компонента SWSlbl. 2-й этап. Создание программного кода Создайте обработчик события OnDragOver для компонента BWSlbl. Чтобы определить, можно ли положить фигуру в коробочку, необходимо сравнить значения свойства Hint перетаскиваемого объекта и объекта-приёмника. Если эти значения равны, то коробочка подходит, и соответственно Accept должно быть равно True, иначе объект сбросить нельзя и Accept принимает значение False: Для остальных компонентов Label необходимо создать аналогичные обработчики события OnDragOver: в инспекторе объектов для всех компонентов Label в событии OnDragOver создайте ссылку на обработчик события TDrag_Dropfrm.BWSLbl DragOver. Примечание. Если необходимо, чтобы при обработке события OnDragOver происходили какие-либо изменения с перетаскиваемым объектом, то желательно проверять его принадлежность к соответствующему классу (операция is), иначе могут возникнуть ошибки из-за несоответствия типов. Эксперимент. Сохраните проект. Запустите проект и убедитесь, что при перетаскивании фигур только над коробочкой, соответствующей фигуре, курсор имеет форму стрелки с прямоугольником, а во всех остальных случаях — стрелки с перечеркнутым кругом. Если в обработчике события OnDragOver значение параметра Accept было равно True и Вы попытались сбросить объект, то возникает событие OnDragDrop у компонента, на который объект был сброшен. Таким образом, если фигуру можно положить в коробочку и вы отпускаете клавишу мыши, то произойдет событие OnDragDrop. При этом необходимо изменить местоположение фигуры — она должна находиться в коробочке. Для этого нужно задать новые значения свойства Left и Тор у перетаскиваемого компонента. Они будут зависеть от значений соответствующих свойств компонента-приемника. Подумайте, что нужно изменить в этом коде, чтобы фигуры размещались правильно. Для остальных компонентов принадлежащих классу Tlabel, установите ссылки на обработчик данного события. Эксперимент. Сохраните проект. Запустите проект и убедитесь, что в результате операции Drag& Drop фигура «сбрасывается» внутрь коробочки (т. е. соответствующего компонента Label). После завершения перетаскивания (вне зависимости от того, приняты данные или нет) для перетаскиваемого объекта возникает событие OnDragEnd. При удачном перемещении фигуры будем очищать заголовок компонента-приемника: Для всех остальных компонентов TShape сделайте ссылки на обработчик данного события. Эксперимент. Сохраните проект. Убедитесь, что после «сбрасывания» фигуры надпись в соответствующем компоненте Label исчезает.
|