За библиотеката VCL Borland е внедрила своя собствена версия на интерфейса Drag&Drop (в превод „плъзгане“). Този интерфейс е вътрешен - можете да изпращате и получавате всички Delphi контроли във формуляра "(с изключение на самия формуляр). Той се реализира без използване на съответните Windows API функции - те трябва да се използват при организиране на комуникация с други задачи чрез плъзгане и пускане .
Щракване ляв бутонмишката върху контролата, можем да я "плъзнем" до всеки друг елемент. От гледна точка на програмиста това означава, че в моментите на плъзгане и отпускане на клавиша се генерират определени събития, които предават цялата необходима информация - указател към плъзгания обект, текущи координати на курсора и др. Получателят на събитието е елементът на който този моменткурсорът се намира. Манипулаторът за такова събитие трябва да каже на системата дали дадената контрола приема "изпращането" или не. При отпускане на бутона над управлението на приемника се задействат още едно или две събития в зависимост от готовността на приемника.
CancelDrag Отменя текущата операция за плъзгане и пускане или плъзгане и закрепване.
Функция FindDragTarget (const Pos: TPoint ;AllowDisabled: Boolean): TControl ;
Функцията връща обект от базовия клас TControl , което се отнася до позицията на екрана с координатите, посочени от параметъра Pos. Тази функция се използва за определяне на потенциалния получател на операция плъзгане и пускане или плъзгане и закрепване. Ако не съществува контрола на прозореца за посочената позиция, тогава функцията се връщанула . Параметърът AllowDisabled определя дали деактивираните обекти ще бъдат взети под внимание.
Функция IsDragObject(Sender: TObject): Boolean;
Функцията определя дали обектът, указан в параметъра Sender, е наследник на класа TDragObject . Тази функцияможе да се използва като параметър Source в манипулаторите на събития OnDragOver и OnDockOver, за да се определи дали плъзганият обект ще бъде приет. Също така функция IsDragObjectможе да се използва като параметър Source в манипулаторите на събития OnDragDrop и OnDockDrop, за да се интерпретира правилно влаченият обект.
DragMode, свойства на DragCursor, методи BeginDrag, OnDragOver, OnDragDrop, OnEndDrag, OnStartDrag, параметър за приемане
Процесът на плъзгане на информация от един обект към друг с мишката се използва широко в Widows.Можете да местите файлове между папки, да местите самите папки и др.
Всички свойства, методи и събития, свързани с процеса на плъзгане и пускане, са дефинирани в класа TControl, който е родител на всички визуални компоненти на Delphi. Следователно те са общи за всички компоненти.
Началото на плъзгането се определя от свойството DragMode, което може да бъде зададено по време на проектиране или програмно равно на dmManual или dmAutomatic. Стойността на dmAutomatic (автоматично) определя автоматичното стартиране на процеса на плъзгане, когато потребителят щракне с бутона на мишката върху компонента. В този случай обаче събитието OnMouseDown, свързано с натискането на бутона на мишката от страна на потребителя, изобщо не възниква за този компонент.
Интерфейсът за прехвърляне и получаване на компоненти се появи отдавна. Той осигурява взаимодействие между два контрола по време на изпълнение на приложението. В този случай могат да се извършат всички необходими операции. Въпреки простотата на изпълнение и възрастта на разработката, много програмисти (особено начинаещи) смятат този механизъм за неясен и екзотичен. Използването на Drag-and-Drop обаче може да бъде много полезно и лесно за изпълнение. Сега ще проверим това.
За да работи механизмът, два контрола трябва да бъдат съответно конфигурирани. Единият трябва да бъде източникът (Source), вторият - приемникът (Target). В този случай източникът не се мести никъде, а само се регистрира като такъв в механизма.
Повярвайте ми, лесно е да се трансформирате X,Y координати, предадени в параметрите на събитията OnDragOver и OnDragDrop, в координати на формуляр.
Работете със свойствата Left и Top на компонента, върху който курсорът е поставен. Ще дам един прост пример. Поставете компонент Memo във формуляра и го задайте Подравнете свойството alTop стойност. Поставете панел върху формуляра, също така задайте свойството Align на alTop и задайте свойството Height на малка стойност, да речем 6 или 7 пиксела. Задайте DragMode на dmAutomatica и DragCursor на crVSplit. Поставете друг компонент Memo и задайте Align на alClient. Изберете двете бележки едновременно, панела и създайте общ манипулатор на събития OnDragOver, както е показано по-долу:
Функцията Drag and Drop може да помогне за подобряване на производителността на вашия iPad. Ето как можете да го използвате.
Така че можете да преместите файл от една услуга за съхранение в облак в друга, да копирате текст от Safari в приложение за редактиране на текст, за да добавите цитат или да създадете архивиранеопределени снимки в приложението за съхранение на файлове.
Как да плъзгате и пускате снимки, файлове и текст
1. Докоснете и задръжте снимката, файла или маркирания текст, който искате да плъзнете към друго приложение.
2. Плъзнете елемента към Правилно мястов това приложениеили друг, който сте отворили в Slide Over или Split View и го пуснете.
Как да плъзнете и пуснете няколко снимки или файлове наведнъж
1. Докоснете и задръжте една от снимките или файловете, които искате да плъзнете.
2. Докато плъзгате текущия елемент, докоснете друга снимка или файл, които също искате да плъзнете. Направете го отново с толкова елементи, колкото искате да преместите.
3. Плъзнете всички избрани обекти на определеното място в друго приложение, което сте отворили в Slide Over или Split View, и ги освободете.
Как да плъзнете текст от едно приложение в друго
1. Докоснете и задръжте върху частта от текста, която искате да плъзнете, за да я изберете.
2. Използвайте точки за избор, за да маркирате останалата част от текста, който искате да плъзнете.
3. Натиснете и задръжте избрания текст.
4. Плъзнете текста до приложението, където искате да го поставите, и го пуснете.
Как да промените позицията на иконите на няколко приложения наведнъж с помощта на "Плъзгане и пускане"
Докато повечето функции за плъзгане и пускане на iOS работят само на iPad, този трик всъщност работи както на iPhone, така и на iPad. Това ви позволява да организирате местоположението на приложенията на началния екран, като използвате « Плъзнете и пуснете", вместо да ги местите един по един.
1. Докоснете и задръжте иконата за приложението, което искате да преместите на началния екран.
2. Докосване допълнителни приложения, който също трябва да бъде преместен.
3. Плъзнете тези приложения до страницата или папката, където искате да бъдат, и ги пуснете.
От дълго време съществуват функции на JavaScript, които ни позволяват да създаваме интерфейси за плъзгане и пускане. Но нито една от тези реализации не е естествена за браузъра. HTML5 има свой собствен начин за създаване на интерфейси за плъзгане и пускане (с малко помощ от JavaScript). В тази статия ще ви кажем как може да се постигне това...
Поддръжка на браузър
HTML5 drag & drop понастоящем се поддържа от всички основни настолни браузъри (включително IE (дори IE 5.5 има частична поддръжка)), но не се поддържа от нито един от популярните мобилни браузъри.
Drag&Drop събития
На всеки етап от плъзгането и пускането се задействат различни събития, за да уведомят браузъра кой JavaScript код да изпълни. Списък на събитията:
- dragStart: задейства се, когато потребителят започне да плъзга елементи;
- dragEnter: задейства се, когато плъзганият елемент първо се плъзга върху целевия елемент;
- dragOver: задейства се, когато мишката се движи върху елемент, докато тече плъзгане;
- dragLeave: задейства се, ако курсорът на потребителя напусне елемента, докато плъзгате;
- drag: задейства се всеки път, когато преместим мишката, докато плъзгаме нашия елемент;
- drop: задейства се, когато се изпълни действителното drop;
- dragEnd: задейства се, когато потребителят пусне бутона на мишката, докато плъзга обект.
С всички тези слушатели на събития имате голям контрол върху това как ще работи интерфейсът.
обект за прехвърляне на данни
Тук се случва цялата магия с плъзгане и пускане. Този обект съдържа данните, подадени от операцията за плъзгане. Данните могат да се задават и извличат различни начини, най-важните от които са:
- dataTransfer.effectAllowed=стойност: връща разрешените типове действия, възможни стойности: няма, копиране, copyLink, copyMove, връзка, linkMove, преместване, всички и неинициализирани.
- dataTransfer.setData(формат, данни): Добавя конкретни данни и формат.
- dataTransfer.clearData(format): Изчиства всички данни за определен формат.
- dataTransfer.setDragImage(element, x, y): задава изображението, което искате да плъзнете, стойностите x и y показват къде трябва да бъде курсорът на мишката (0, 0 ще го позиционират горе вляво).
- data = dataTransfer.getData(format) : Както подсказва името, той връща данни за определен формат.
Пример за създаване на drag&drop
Сега ще започнем да създаваме прост пример за плъзгане и пускане. Както можете да видите, имаме два малки div и един голям, можем да плъзнем малките div в големия и дори да ги преместим обратно.
Плъзгане на обект
Първото нещо, което трябва да направим, е да създадем HTML. Правим divs възможност за плъзгане с атрибута draggable:
След като това е направено, трябва да дефинираме JavaScript функция, която ще се задейства веднага щом започнем да преместваме този елемент:
Функция dragStart(ev) ( ev.dataTransfer.effectAllowed="move"; ev.dataTransfer.setData("Текст", ev.target.getAttribute("id")); ev.dataTransfer.setDragImage(ev.target,100,100) ; върне вярно; )
В този код първо декларираме какъв тип ефект позволяваме в операцията и го настройваме да се движи. На втория ред задаваме данните, с които да работим, където текстът ще бъде Text, а стойността ще бъде ID-то на елемента, който плъзгаме. След това използваме метода setDragImage, който ще зададе какво ще плъзгаме и след това къде ще бъде курсорът по време на плъзгане и тъй като кубчетата са 200 на 200 пиксела, го поставяме в самия център. Накрая връщаме return true.
Пуснете обект
За да може даден елемент да приеме отпадане, той трябва да слуша за 3 различни събития: dragEnter, dragOver и събитието drop. Така че нека добавим това към нашия HTML5 div с голям идентификатор:
функция dragEnter(ev) ( ev.preventDefault(); return true; ) функция dragOver(ev) (ev.preventDefault(); )
В първата функция ние определяме какво трябва да се случи, когато елементът, който плъзгаме, достигне желания елемент, където трябва да се случи изпускане, в този случай ние само предотвратяваме поведението по подразбиране на браузъра. На следващо място, във функцията dragOver ние просто не позволяваме изпускане да се случи по подразбиране.
В следващата част дефинираме функция за това, когато елемент е "хвърлен" върху желаната цел:
Функция dragDrop(ev) ( var data = ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); ev.stopPropagation(); return false; )
В тази последна част първо задаваме променливата за данни, където получаваме всички налични данни текстов формати след това добавяме данни към div, където искаме да пуснем елемента.
Направете секцията за падане цел
Демото показва, че два div могат да бъдат преместени обратно на мястото им. За щастие, добавянето на друга цел за падане е много по-лесно, отколкото си мислите. Тъй като вече имаме тези функции и всичко, което трябва да направим, е да добавим слушатели на събития:
И това е всичко, което е необходимо, за да позволи на div да бъде изтеглен обратно на мястото си.
Има много приложения за плъзгане и пускане, които са изградени с използвайки JavaScriptбиблиотеки и често са по-лесни за използване. Но се надяваме, че в този HTML5 и JavaScript техника, ще видите бъдещия потенциал за решаване на вашите проблеми.
HTML плъзгане и пусканеинтерфейсите позволяват на приложенията да използват функции за плъзгане и пускане в браузърите.Потребителят може да избере влаченеелементи с мишката, плъзнете тези елементи до a с възможност за изпусканеелемент и ги пуснете, като отпуснете бутона на мишката. Полупрозрачно представяне на влаченеелементи следва показалеца по време на операцията за плъзгане.
За уеб сайтове, разширения и XUL приложения, можешперсонализирайте кои елементи могат да станат влачене, вида на обратната връзка влаченеелементи произвеждат и с възможност за изпусканеелементи.
Този преглед на HTML плъзгане и пускане включва описание на интерфейсите, основни стъпки за добавяне на поддръжка за плъзгане и пускане към приложение и обобщение на оперативната съвместимост на интерфейсите.
Плъзнете събития
събитие | На манипулатора на събития | Пожари, когато... |
---|---|---|
плъзнете | ondrag | …а влачен елемент(селекция на елемент или текст) се плъзга. |
dragend | ондрагенд | …операция на плъзгане завършва (като отпускане на бутон на мишката или натискане на клавиша Esc; вижте Завършване на плъзгане .) |
дрегер | ondragenter | …влачен елемент влиза във валидна цел за пускане. (Вижте Указване на цели за пускане .) |
dragexit | ondragexit | … елемент вече не е непосредствена цел за избор на операцията за плъзгане. |
dragleave | ondragleave | …влачен елемент оставя валидна цел за пускане. |
драконовец | ondragover | ...влачен елемент се влачи над валидна цел за пускане на всеки няколкостотин милисекунди. |
плъзгане | ondragstart | … потребителят започва да плъзга елемент. (Вижте Стартиране на операция плъзгане .) |
изпускайте | изпускайте | ...елемент е изпуснат върху валидна цел за изпускане. (Вижте Извършване на пускане.) |
Забележка:Нито събития dragstart, нито dragend се задействат при плъзгане на файл в браузъра от операционната система.
Интерфейси
Основите
Този раздел е обобщение на основните стъпки за добавяне на функционалност за плъзгане и пускане към приложение.
идентифицирайте какво е влачене
Изработване на елемент влаченеизисква добавяне на draggable атрибут и ondragstart глобален манипулатор на събития, както е показано в следния примерен код:
Този елемент може да се плъзга.
За повече информация вижте:
справете се с падането ефект
Манипулаторът за събитието drop е свободен да обработва данните за плъзгане по специфичен за приложението начин.
Обикновено приложението използва метода getData(), за да извлече елементи с плъзгане и след това да ги обработи по съответния начин. Освен това семантиката на приложението може да се различава в зависимост от стойността на
Техниките за плъзгане и пускане са се развили в продължение на много години. Не е изненадващо, че с увеличаването на броя на програмистите, разработващи плъгини с open програмен код(напр. за jQuery) старите методи са възкресени. JavaScript библиотеката е силно адаптивна и предлага много подобрения в тази ера на уеб технологиите.
В този урок ще направим скрипт, който можем да използваме за създаване на динамични правоъгълници с плъзгане и пускане на нашия уебсайт. Процесът се контролира от jQuery. Такива скриптове спестяват време, като предоставят готова функционалност! А библиотеката с плъзгане и пускане може да се използва в други проекти.
Подготвяме съдържание
Първо, ще подготвим малък уебсайт за проекта. В папката на проекта трябва да създадете две директории с забележителни имена "js"и "css"и празен файл index.html . Кодът ще бъде много прост, така че да има ясна представа за работата и да има точка за по-нататъшно развитие.
По-долу е кодът на нашия HTML файл. В глава глававключваме 3 скрипта. Основният jQuery скрипт ще бъде зареден от сървъра на Google Code. Включен е и нашия файл style.css, който съдържа основните свойства за формиране външен виднашия документ.
завлечи ме
И аз мога да бъда влачен
P.S. Можете да ме оставите навсякъде!