• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по Delphi 7 для профессионалов

    Интерфейс присоединения Drag-and-Dock

    Эта возможность появилась в Delphi 4. Она "подсмотрена" опять-таки у разработчиков из Microsoft, внедривших плавающие панели инструментов в MS Office, Internet Explorer и другие продукты (рис. 27.2).

    Речь идет о том, что ряд элементов управления (а конкретно – потомки класса xwinControl) могут служить носителями (доками) для других элементов управления с возможностью их динамического перемещения из одного дока в другой при помощи мыши. Перетаскивать можно практически все – от статического текста до форм включительно. Пример использования техники Drag-and-Dock дает сама среда разработки Delphi – с ее помощью можно объединять на экране различные инструменты, такие как Инспектор объектов и Менеджер проекта.

    Как и в случае с технологией перетаскивания Drag-and-Drop, возможны два варианта реализации техники Drag-and-Dock: автоматический и ручной. В первом случае дело сводится к установке нужных значений для нескольких свойств, а остальную часть работы берет на себя код VCL; во втором, как следует из названия, вся работа возлагается на программиста.

    Итак, что же нужно сделать для внедрения Drag-and-Dock? В Инспекторе объектов необходимо изменить значение свойства DragKind на dkDock, a свойства DragMode – на dmAutomatic. Теперь этот элемент управления можно перетаскивать с одного носителя-дока на другой.

    Носителем других компонентов (доком) может служить потомок TwinControl. У него есть свойство Docksite, установка которого в True разрешает перенос на него других компонентов. Если при этом еще и установить свойство AutoSize в True, док будет автоматически масштабироваться в зависимости от того, что на нем находится. В принципе, этими тремя операциями исчерпывается минимальный обязательный набор.

    Иллюстрированный самоучитель по Delphi 7 для профессионалов › Стандартные технологии программирования › Интерфейс присоединения Drag-and-Dock
    Рис. 27.2. Плавающие панели инструментов

    Естественно, для программиста предусмотрены возможности контроля за этим процессом. Каждый переносимый элемент управления имеет два события, возникающие в моменты начала и конца переноса:

    type TStartDockEvent = procedure(Sender: TObject;
    var DragObject: TDragDockObject) of object;
    TEndDragEvent = procedure(Sender, Target: TObject; X, Y: Integer) of object;
    

    В первом из методов sender – это переносимый объект, a DragObject – специальный объект, создаваемый на время процесса переноса и содержащий его свойства. Во втором sender – это также переносимый объект, a Target – объект-док.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.