Faq перетаскивание формы за ее поле


Содержание

Перемещение и изменение размера отдельных элементов управления

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

По умолчанию при создании новой формы с помощью одного из инструментов формы на вкладке Создание или при добавлении полей в форму, если она открыта в режиме макета, Access помещает надписи и другие элементы управления в направляющие с названием макеты. Макет, обозначенный оранжевым цветом сетки вокруг элементов управления, позволяет выравнивать элементы управления по горизонтали и вертикали, чтобы придать форме единообразный вид. На приведенном ниже рисунке показан макет с накоплением в форме, открытой в режиме макета.

Несмотря на то, что макеты помогают быстро создавать и изменять формы, в некоторых случаях может возникнуть необходимость перемещения и изменения размеров элементов управления независимо друг от друга. В этой статье описано, как удалить элементы управления из макетов, после чего их можно перемещать и изменять их размер, не затрагивая другие элементы управления.

Дополнительные сведения об использовании макетов можно найти в статье Автоматическое выравнивание элементов управления в форме.

В этой статье

Удаление одного или нескольких элементов управления из макета

В области навигации щелкните форму правой кнопкой мыши и выберите команду Конструктор.

Выберите элемент управления, который вы хотите удалить из макета. Чтобы выбрать несколько элементов управления, щелкайте их, удерживая клавишу SHIFT. Чтобы выделить все элементы управления в макете, щелкните поле выбора макета в левом верхнем углу макета.

Выполните одно из следующих действий:

На вкладке Упорядочить в группе Таблица нажмите кнопку Удалить макет.

Щелкните правой кнопкой мыши один из выбранных элементов управления, наведите указатель на пункт Макети выберите команду Удалить макет.

Access удалит выбранные элементы управления из макета.

Разделение одного макета на два

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

В области навигации щелкните форму правой кнопкой мыши и выберите команду Конструктор.

Удерживая нажатой клавишу SHIFT, щелкните элементы управления, которые вы хотите переместить в новый макет элемента управления.


Выполните одно из следующих действий:

На вкладке Упорядочить в группе Таблица выберите нужный тип макета для нового макета (в виде таблицы или в столбик).

Щелкните правой кнопкой мыши выбранные элементы управления, наведите указатель на пункт Макети выберите нужный тип макета для нового макета.

Access создаст новый макет элементов управления и добавит в него выбранные элементы.

Перемещение макетов

После разделения одного макета на два макеты могут перекрывать друг друга. Чтобы переместить макет, выполните указанные ниже действия.

Выберите любой элемент управления в макете.

Нажмите и удерживайте клавишу CTRL.

Перетащите макет с помощью селектора макета в левом верхнем углу макета.

Совет: Удерживая нажатой клавишу CTRL при перетаскивании макета или элемента управления, вы не допускаете вставки макета или элемента управления в другие макеты по мере перетаскивания.

Перетаскивание на обычных формах.

(4) «Назначил, до него не доходит» — из ссылки вышепо тексту:

Схема возникновения событий такая:
Как только пользователь начал перемещать курсор мыши с зажатой левой или правой кнопкой, возникает событие НачалоПеретаскивания. При входе курсора с по-прежнему зажатой кнопкой в область новой ячейки элемента управления возникает событие ПроверкаПеретаскивания. В зависимости от того, какое значение параметра Действие вернет это событие, изменяется иконка курсора. Когда пользователь наконец освобождает зажатую кнопку мыши, возникает событие Перетаскивание в приемнике и сразу после него ОкончаниеПеретаскивания в источнике.

Особенности реализации перетаскивания в формах

В 1С:Предприятии реализован механизм поддержки операций перетаскивания. С его помощью возможно осуществлять перенос данных между разными элементами управления. Например, можно переносить элементы списка справочника из одной группы в другую, переносить данные из табличного поля в поле табличного документа или перенести список выделенных файлов из проводника MS Windows в какой-либо элемент управления.

Операции перетаскивания поддерживают следующие элементы управления:


  • табличное поле;
  • поле табличного документа;
  • поле календаря;
  • поле картинки.

При операциях перетаскивания используются следующие понятия:

  • источник данных — элемент управления из которого можно перетаскивать данные;
  • — элемент управления в который можно перетаскивать данные.

Существует возможность разрешать или запрещать элементам управления предоставлять или принимать данные, т.е. быть источником или приемником данных. Для этого у элементов управления существуют следующие свойства: “Разрешить начало перетаскивания” – разрешает элементу управления предоставлять данные и “Разрешить перетаскивание” – разрешает элементу управления принимать данные. Эти свойства можно устанавливать из палитры свойств или из встроенного языка .

Последовательность событий при перетаскивании

При нажатии кнопки мыши на выделенной области элемента управления (это может быть строка, группа строк табличного поля, область поля табличного документа, дата календаря или картинка) у элемента управления – источника данных вызывается обработчик события НачалоПеретаскивания . В качестве параметров данного события передаются объект типа “ ПараметрыПеретаскивания ” и “ СтандартнаяОбработка ”. Параметр ПараметрыПеретаскивания имеет следующие свойства:

  • Значение — содержит перетаскиваемое значение, например, для табличного поля это может быть ссылка на объект, для табличного документа – область табличного документа, для календаря – дата. Можно присвоить этому свойству свое значение (например, какую-нибудь структуру), тогда это значение будет являться перетаскиваемым объектом.
  • Действие – указывает действие перетаскивания и является значением типа ДействиеПеретаскивания ( Копирование , Перемещение , Выбор или Отмена ).
  • ДопустимыеДействия – указывает допустимые действия перетаскивания и является значением типа ДопустимыеДействияПеретаскивания ( Копирование , Перемещение , КопированиеИПеремещение , H еОбрабатывать ). При помощи этого свойства можно указать какие операции возможны с данными источника данных (например, только копирование).

Параметр СтандартнаяОбработка позволяет разрешить или запретить стандартную обработку операции перетаскивания из данного элемента управления. Для события НачалоПеретаскивания стандартной обработкой является начало перетаскивания данных .

Далее, у элемента управления – приемника данных вызывается обработчик события ПроверкаПеретаскивания . Данный обработчик вызывается всякий раз, когда курсор попадает на новый объект в элементе управления – приемнике данных (например, в новую ячейку табличного поля или поля табличного документа, при попадании в новую дату в поле календаря). Набор параметров данного события зависит от элемента управления – приемника данных, но первые два параметра у всех одинаковы. Это объект типа ПараметрыПеретаскивания и СтандартнаяОбработка . Остальные параметры описывают объект под курсором. Для табличного поля это Строка и Колонка , для поля табличного документа – Область , для календаря – Дата , а для поля картинки дополнительных параметров нет. При обработке данного события можно управлять видом курсора, т.е. например указывать что перетаскивание в данный элемент управления запрещено или возможно только копирование. Для этого необходимо установить необходимое действие в свойстве Действие параметра ПараметрыПеретаскивания. Необходимо учитывать , что устанавливаемое действие перетаскивания должно быть разрешенным , т . е . не вступать в противоречие с значением свойства ДопустимыеДействия . Например, действие Копирование не вступает в противоречие со значением допустимых действий КопированиеИПеремещение , а значение Перемещение вступает в противоречие со значением допустимых действий Копирование . Параметр СтандартнаяОбработка используется для указания возможности стандартной обработки элементом управления данного события. Стандартная обработка перетаскивания зависит от типа элемента управления :

Для табличного поля проверяется возможность вставки значения, т.е. проверяется тип значения, и если он совпадает с типом отображаемых данных, то производятся стандартные действия. Стандартные действия для иерархических динамических списков – перемещение в группу, для табличных полей , отображающих наборы записей или табличные части изменение порядка строк и копирование.

Для поля табличного документа – проверка возможности вставить передаваемое значение.

Для поля картинки и календаря стандартной обработки нет.

При отпускании клавиши мыши в элементе управления – приемнике данных вызывается обработчик события Перетаскивание . Набор параметров этого события тот же, что и у события ПроверкаПеретаскивания . Параметр СтандартнаяОбработка позволяет разрешить или запретить стандартную обработку события элементом управления. Стандартные действия перетаскивания описаны выше .


Затем в элементе управления – источнике данных вызывается обработчик события ОкончаниеПеретаскивания . При обработке этого события элемент управления – приемник данных может, например, удалить перемещенные данные или очистить какие – либо переменные.

В демонстрационную конфигурацию ИТС помещен пример , показывающий основные приемы при реализации перетаскивания в формах . Описание примера см. в разделе Пример реализации перетаскивания в формах.

Faq перетаскивание формы за ее поле

Имеется форма без заголовка, т.е. передвигать нельзя. Но я нашел в инете код для возможности двигать форму за любое место. Но получилось так, многие компоненты (рисунки, панели) как-будто уходят под форуму — т.е. их видно, но действия с ними проимзвести нельзя (вроде нажатия мышью и т.п.). За них тоже можно перетаскивать форму.
Подскажите как избавиться от этого или выделить область для перемещения формы!

Смотри Help по WM_NCHITTEST

Пишешь следующий обработчик и таскаешь форму за её поле.

procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;

Если такой же обработчик повесить на панель, то будешь таскать за панель.

Faq перетаскивание формы за ее поле

Мамочки, неужели всё так сложно?

Я бы делал так:
1). Ловлю нажатие, ставлю флажок, сохраняю координаты.
2). Ловлю MouseMove, проверяю флажок и при помощи Left и Top формы шевелю её в соответствии с сохранёнными координатами.
3). Ловлю отпускание кнопки, снимаю флажок.

Я так когда-то свой Caption рисовал.

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Faq перетаскивание формы за ее поле

делаю форму (Windows.Forms) со своей панелью заголовка с «симпотными» кнопками закрытия, свертывания и развертывания. как реализовать перетаскивание, когда цепляюсь за верх формы? вверху я поставил Panel, и зацепившись за нее, пытаюсь перетаскивать форму. сделал так


но при перетаскивании сама форма не перетаскивается, а становится на место, когда кнопку мыши уже отпускаешь. как сделать чтоб она перемещалась за мышью в «реальном режиме времени» ?

делаю форму (Windows.Forms) со своей панелью заголовка с «симпотными» кнопками закрытия, свертывания и развертывания. как реализовать перетаскивание, когда цепляюсь за верх формы? вверху я поставил Panel, и зацепившись за нее, пытаюсь перетаскивать форму. сделал так

но при перетаскивании сама форма не перетаскивается, а становится на место, когда кнопку мыши уже отпускаешь. как сделать чтоб она перемещалась за мышью в «реальном режиме времени» ?

Faq перетаскивание формы за ее поле

Мамочки, неужели всё так сложно?

Я бы делал так:
1). Ловлю нажатие, ставлю флажок, сохраняю координаты.
2). Ловлю MouseMove, проверяю флажок и при помощи Left и Top формы шевелю её в соответствии с сохранёнными координатами.
3). Ловлю отпускание кнопки, снимаю флажок.

Я так когда-то свой Caption рисовал.

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

v8: Глобальное перетаскивание

Механизм перетаскивания в типовых конфигурациях используется далеко не на максимум. А ведь он значительно ускоряет работу пользователя. Автор статьи: TormozIT | Редакторы:
Последняя редакция №66 от 17.09.06 | >

Ключевые слова: Перетаскивание, Drag, Drop, ПараметрыПеретаскивания, ДействияПеретаскивания, ДопустимыеДействияПеретаскивания, ПроверкаПеретаскивания, НачалоПеретаскивания, ОкончаниеПеретаскивания

Как только я узнал о существовании перетаскивания, я очень удивился тому факту, что оно так мало используется в типовых конфигурациях. И решил я реализовать свой взгляд на эффективное использование этого механизма.

Для начала немного общих моментов о самом механизме.

Самое понятие «перетаскивание» (Drag&Drop) подразумевает интерактивную передачу значения от источника приемнику.
Событий перетаскивания всего 4:
НачалоПеретаскивания
ОкончаниеПеретаскивания
ПроверкаПеретаскивания
Перетаскивание
Для первой пары событий необходимо установить флажок в настройках элемента управления «Разрешить начало перетаскивания». Для второй пары — «Разрешить перетаскивание».
Перетаскивание реализовано для двух видов элементов управления: ТабличноеПоле и ПолеТабличногоДокумента. Для поля табличного документа есть некоторые ограничения. Во-первых, в режиме ТолькоПросмотр обрабатываются только первая пара событий, т.е. в этом случае оно не может выступать в качестве приемника. Во-вторых, начало перетаскивания может быть вызвано только для одной прямоугольной области.

У каждого типа обработчика события перетаскивания есть параметр ПараметрыПеретаскивания.
Этот параметр представляет собой структуру из 3-х элементов:
Действие
ДопустимыеДействия
Значение

Начнем с последнего параметра — Значение. Он при стандартном начале перетаскивания в разных случаях имеет различный тип. Если источником является элемент управления типа ТабличноеПоле, то значение перетаскивания будет иметь тип строки значения табличного поля в одиночном режиме выделения и тип Массив в случае множественного режима выделения, где элементами массива будут строки значения табличного поля. В случае поля табличного документа тип значения будет ТабличныйДокумент и будет содержать одну выделенную прямоугольную область.


Параметр Действие отвечает за внешний вид курсора и используется для управления типом перетаскивания. Он может принимать 4 значения:
Выбор
Копирование
Отмена
Перемещение
При перетаскивании левой кнопкой мыши по умолчанию Действие содержит Перемещение. Если пользователя дополнительно удерживает нажатой клавишу , то Действие содержит Копирование. Если претаскивание производится правой кнопкой мыши, то по умолчанию Действие содержит Выбор независимо от состояния клавиши . При этом, когда вы освободите правую кнопку мыши в приемнике, по умолчанию будет выведено всплывающее меню выбора, содержащее все доступные действия перетаскивания и его отмену.

Параметр ДопустимыеДействия предназначен для передачи приемнику допустимых типов перетаскивания и может принимать также 4, но уже других значения:
Копирование
КопированиеИПеремещение
НеОбрабатывать
Перемещение

Схема возникновения событий такая. Как только пользователь начал перемещать курсор мыши с зажатой левой или правой кнопкой, возникает событие НачалоПеретаскивания. При входе курсора с по-прежнему зажатой кнопкой в область новой ячейки элемента управления возникает событие ПроверкаПеретаскивания. В зависимости от того, какое значение параметра Действие вернет это событие, изменяется иконка курсора. Когда пользователь наконец освобождает зажатую кнопку мыши, возникает событие Перетаскивание в приемнике и сразу после него ОкончаниеПеретаскивания в источнике.

Как перетаскивать из табличного документа?

Для начала убедитесь, что для нужного поля табличного документа установлен флаг «Разрешить начало перетаскивания». Теперь выделите ОДНУ любую прямоугольную область табличного документа и подведите курсор мыши к ее любой границе так, чтобы курсор принял форму стрелки (обычного указателя). Вот только с этого момента можно перетаскивать.

Основные идеи глобального перетаскивания.

Во-первых, необходимо создать общую форму с маленьким табличным полем и сделать ее окно прикрепляем. Она будет использоваться в качестве кармана, в который и из которого пользователь будет перетаскивать значения из и в различные элементы управления.
Во-вторых, нужно создать глобальные обработчики для нужных типов событий перетаскивания. Желательно также создать соответствующие уницифированные обработчики типов событий для помещения их в модуль нужных форм.
В-третьих, нужно продумать само действие, которое будет выполняться в каждом сочетании типов источника и приемника при каждом действии перетаскивания.
В-червертых, следует придумать, как наиболее эффективно отловить событие ПриОткрытии у как можно большего количества форм конфигурации для установки разрешения начала перетаскивания.

Описание моего примера реализации

1) При открытии каждой формы, элементы которой должны выступать в роли источника перетаскивания, нужно вызывать общую процедуру ЛксПриОткрытииФормы, которая разрешит элементам формы выступать в роли источника перетаскивания. Но это относится только к случаям, когда флажок «Разрешить начало перетаскивания» не установлен хотя бы у одного из нужных элементов управления.

2) В модуль каждой формы, элементы которой должны выступать в роли приемника перетаскивания, следует поместить унифицированные обработчики событий

В событии ПриОткрытии таких форм уже обязательно нужно вызвать ЛксПриОткрытииФормы, которая кроме установки флажка «Разрешить перетаскивание» еще подключит эти обработчики для всех элементов управления формы типа ТабличноеПоле. Поле табличного документа имеет уже упомянутые ограничения, из-за которых пришлось отказаться от использования его в качестве приемника перетаскивания.

3) Перед использованием значение перетаскивания разворачивается в массив ссылок на объекты БД (в дальнейшем — массив перетаскивания). В случае если при разворачивании встречается строка таблицы значений или дерева значений (или табличной части) то она заменяется значением первой найденной колонки из массива ключевых колонок перетаскивания.

4) Если перетаскивание происходит на табличное поле, которое является списком ссылок, то происходит попытка найти в этом списке первый элемент массива перетаскивания, имеющий подходящий тип. Если в приемнике нельзя добавлять строки или не зажата клавиша , то производится попытка поиска по всем ссылочным колонкам значения табличного поля. После обнаружения ссылки курсор в табличном поле устанавливается на найденную строку. Остальные элементы массива перетаскивания игнорируются.

5) Если зажата клавиша и в табличном поле разрешено добавление строк и оно не является списком, то происходит попытка добавить каждый элемент массива перетаскивания в новую строку. Колонка для ключа перетаскивания подбирается по типу. Через дополнительный параметр можно включить проверку уникальности перед добавлением строки.

6) Форма, выполняющая роль кармана, содержит табличное поле вершины кармана, где отражается только одна ссылка, и сворачиваемое табличное поле самого кармана, которое предоставляет доступ к его полному содержимому. Карман представляет собой хранимый персональный для каждого пользователя список ссылок на объекты БД. Перетаскивать можно в и из как самого кармана так и его вершины.

Специальная реализация перетаскивания на типовую форму подбора 1С-ных конфигураций.


Сущность функционала заключается в заполении табличных полей формы подбора таким образом, чтобы они позволили увидеть показатели по ключу перетаскивания будь то ссылка-характеристика или ссылка-номенклатура. Это одно из самых приятных применений перетаскивания в глазах рядовых пользователей. Работать с типовой формой подбора станет на порядок удобнее и быстрее. Используется Книга знаний: v8: Методика переопределения и вызова обработчиков событий формы.

Механизм перетаскивания — Drag&Drop — в системе 1С:Предприятие 8.х

Доброго времени суток, уважаемые читатели блога SoftMaker.kz! В прошлый раз мы рассказали вам

о семи секретах популярности фирмы 1С.
А в этой статье будет рассматриваться механизм перетаскивания (Drag&Drop)
на примере табличного поля документа (куда осуществляется перетаскивание) и табличного поля
обработки (откуда осуществляется перетаскивание). Для начала создадим документ и обработку с табличными полями.

Предоставление данных для перетаскивания из обработки

Создадим обработку «Обработка1» форму для неё во вкладке Формы. Откроем форму и добавим новый
элемент управления формы «ТабличноеПоле1». Для поддержки механизма перетаскивания существует два
свойствва элемента управления «ТабличноеПоле1»:

  • «РазрешитьНачалоПеретаскивания»(«EnableStartDrag») — Разрешает перетаскивание данных из элемента управления
  • «РазрешитьПеретаскивание» («EnableDrag») — Разрешает перетаскивание данных в элемент управления

Эти свойства устанавливаются в палитре свойств:

Элементу управления «ТабличноеПоле1» нужно
разрешить предоставлять данные для перетаскивания, поэтому мы установим
галочку для свойства «РазрешитьНачалоПеретаскивания» («EnableStartDrag»):

Cвойство
элемента управления «ТабличноеПоле1»
«РазрешитьНачалоПеретаскивания» («EnableStartDrag») мы
оставим без изменения, так как в табличное поле обработки мы добавлять
ничего не будем.
Теперь обратим внимание на последовательность событий при
перетаскивании. Когда в
режиме «1С:Предприятие», мы выделяем кнопкой мыши
нужную нам строку в
элементе управления «ТабличноеПоле1» и начинаем
перетаскивание, вызывается обработчик события
«НачалоПеретаскивания» («DragStart»), для нашего
элемента управления «ТабличноеПоле1» обработчик
события «ТабличноеПоле1НачалоПеретаскивания».

Параметры для обработчика события
«ТабличноеПоле1НачалоПеретаскивания»:

Элемент — имеет значение

ТабличноеПоле и тип — ТабличноеПоле.

ПараметрыПеретаскивания — имеет следующие три свойства:

  • Действие
    (Action)
    – указывает действие перетаскивания
    (Копирование (Copy), Перемещение (Move), Выбор (Choice)
    или Отмена
    (Cancel)) и является значением типа ДействиеПеретаскивания
    (DragAction).
  • ДопустимыеДействия
    (AllowedActions)
    — указывает допустимые действия
    перетаскивания и является
    значением типа ДопустимыеДействияПеретаскивания
    (Копирование,
    Перемещение,
    КопированиеИПеремещение, HеОбрабатывать). При
    помощи этого
    свойства мы
    указали действие Копирование в обработчике события
    «ТабличноеПоле1НачалоПеретаскивания».
  • Значение — содержит
    ссылку на объект, в нашем случае на
    СправочникСсылка.Номенклатура с текущим значением Товар1.

СтандартнаяОбработка (StandardProcessing) — параметр, указывающий нужно
ли производить стандартную обработку перетаскивания.Для
события
«НачалоПеретаскивания» стандартная
обработка — это
начало перетаскивания данных.


Получение данных при их перетаскивании в поле табличного документа

Cоздадим документ «Документ1» и
табличную часть для него во вкладке «Данные» и форму во вкладке «Формы».
Когда мы перетаскиваем строку из элемента управления «ТабличноеПоле1» в табличную часть документа, тогда
вызывается обработчик события «ПроверкаПеретаскивания», для нашего элемента управления «ТабличноеПоле1» обработчик события
«ТабличноеПоле1ПроверкаПеретаскивания».

Параметры
для обработчика события
«ТабличноеПоле1ПроверкаПеретаскивания»:

Элемент
— имеет значение ТабличноеПоле и тип —
ТабличноеПоле.ПараметрыПеретаскивания —
имеет следующие три
свойства:

  • ДопустимыеДействия — указывает допустимые действия перетаскивания и
    является значением типа ДопустимыеДействияПеретаскивания (Копирование,
    Перемещение, КопированиеИПеремещение, HеОбрабатывать).
    При помощи этого свойства мы указали в обработчике события
    «ТабличноеПоле1ПроверкаПеретаскивания» только
    копирование, если значением перетаскиваемой строки
    является тип «СправочникСсылка.Номенклатура».
  • Действие
    указывает действие перетаскивания (Копирование, Перемещение, Выбор или
    Отмена) и является значением типа
    ДействиеПеретаскивания. Нужно
    учитывать, что свойство
    «Действие» не должно конфликтовать со свойством
    «ДопустимыеДействия», то есть, если значение
    свойства «ДопустимыеДействия» — Перемещение, а
    свойство «Действие» — Копирование, тогда действие
    не разрешено, так как приоритетным является Перемещение. Если поменять
    местами значение свойств, тогда действие разрешено. Также, Копирование
    и Перемещение не вступают в конфликт со значением
    КопированиеИПеремещение.
  • Значение — содержит ссылку на объект, в нашем случае на
    СправочникСсылка.Номенклатура с текущим значением Товар1.

СтандартнаяОбработка
— параметр, указывающий нужно
ли производить вставку передаваемого значения в поле табличного
документа.

Строка — текущая
строка табличного поля

Колонка — текущая колонка табличного поля

Как только происходит опускание
клавиши мыши в элементе управления
документа «ТабличноеПоле1», вызвается обработчик
события «Перетаскивание».

Как
видим набор
параметров у
обработчика события
«Перетаскивание» такой же как и у обработчика
события «ПроверкаПеретаскивания».
И последние в элементе управления «ТабличноеПоле1»
обработки «Обработка1» вызывается обработчик
события «ОкончаниеПеретаскивания». В
этом обработчике события вы можете сами указать какие действия вам
необходимо произвести. Это уже по вашему усмотрению.

Загрузка файлов на сервер путем перетаскивания. Часть 1

Дата публикации: 2015-06-17

От автора: достаточно часто при создании сайтов необходимо загружать на сервер различные файлы. К примеру, документы, архивы или изображения. При этом стандартный загрузчик файлов форм не совсем удобен, да и не вписывается в дизайн современных сайтов. Поэтому в данном уроке мы с Вами начнем создавать механизм загрузки файлов на сервер путем перетаскивания.

Введение

Загрузка фалов на сервер, достаточно распространенная задача в сайтостроении, и в большинстве случаев она решается путем добавления на страницу стандартного поля формы file:


Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Но использование данного поля не всегда удобно, да и его стандартный дизайн, не всегда совместим с дизайном веб-страниц. В данное время, очень популярны загрузки на сервер путем перетаскивания фалов в специально отведенную область сайта. Примером может служить сайт http://disk.yandex.ru:

В данном уроке мы с Вами начнем создавать механизм загрузки файлов на сервер путем перетаскивания, и поможет нам в этом один из виджетов библиотеки Formstone – Upload, который как раз разработан для этих целей (официальный сайт библиотеки http://formstone.it/).

Виджет Upload

Итак, на тестовой странице удаляем элемент формы file и вместо него располагаем обычный блок

Полный код тестовой страницы:

Обратите внимание, на данной странице уже подключена библиотека jQuery и ядро библиотеки Formstone. Далее подключаем виджет и его файл стилей (в файловой структуре тестовой страницы уже содержатся данные элементы).

Теперь необходимо, при помощи библиотеки jQuery выбрать блок, который служит областью приема файлов и вызвать метод upload():

Теперь давайте перейдем в браузер и посмотрим, что изменилось:

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Как Вы видите, внешний вид приемного блока изменен, теперь если перетащить файл, или несколько файлов в данный блок будет выполнена асинхронная (методом AJAX) отправка элементов на сервер. Но при этом виджет Upload не сохраняет фалы на сервере, он только собирает информацию о тех файлах которые необходимо отправить и, используя метод AJAX отправляет запрос (запрос типа POST) на сервер с необходимыми заголовками. В этом мы можем убедиться, если посмотрим консоль JavaScript:

Теперь необходимо указать некоторые настройки:

Основные настройки виджета:

action – файл на сервере, который обработает переданные данные(сохранит файл на сервере);


label – строка которая отображается в приемнике файлов;

postKey – имя поля в запросе;

maxQueue — максимальное количество одновременно отправляемых запросов;

maxSize – максимальный размер передаваемого файла;

postData — дополнительные данные, которые будут переданы POST запросом на сервер.

Теперь необходимо создать файл обработчик, который выполнит сохранение передаваемого файла.

Скрипт обработчик.

Скрипт обработчик, должен принять данные и выполнить определенные манипуляции, в нашем случае – сохранить передаваемые файлы в определенную папку сервера. Поэтому создаем новый файл obr.php и добавляем следующий код:

Как Вы видите, в данном файле я описал в самом простейшем виде скрипт сохранения файлов загруженных на сервер по протоколу HTTP POST, но для тестирования виджета вполне подойдет. В реальном же случае, перед сохранением загруженного файла, нужно было бы проверить размер и тип файла, то есть проверить разрешено ли загружать данный файл на сервер, а возможно и проверить права пользователя, то есть опять же, разрешено ли ему загружать файлы на сервер. Но это не тема данного урока, поэтому описанного кода вполне хватит.

Обратите внимание, что если к данному файлу мы обращаемся асинхронно, то весь вывод на экран, будет возвращен в качестве ответа от сервера. Поэтому если файл загружен, мы будем возвращать ‘OK’, в противном же случае — ‘ERROR’. Теперь давайте протестируем наш скрипт:

После перемещения файла в область загрузки, в консоли JavaScript мы видим, что файл был передан и в качестве ответа, была возвращена строка OK. При этом в папке uploads, появился новый сохраненный файл.

На этом данный урок завершен. Основной функционал скрипта мы с Вами реализовали и в следующем уроке мы займемся выводом на экран результатов загрузки файлов.

Всего Вам доброго и удачного кодирования.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Илон Маск рекомендует:  Золотое сечение
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL