Drag and Drop со спискамиDelphi , Синтаксис , Drag and DropDrag and Drop со списками
Оформил: DeeCo { This example shows how to drag&drop within a TListBox. The Demo Program also shows how to implement an autoscroll-feature. Dieses Beispiel zeigt, wie man drag & drop in einer TListBox realisiert. Im Demo-Programm wird auch eine Autoscroll-Funktion gezeigt. } procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Sender is TListBox; end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var iTemp: Integer; ptTemp: TPoint; szTemp: string; begin { change the x,y coordinates into a TPoint record } ptTemp.x := x; ptTemp.y := y; { Use a while loop instead of a for loop due to items possible being removed from listboxes this prevents an out of bounds exception } iTemp := 0; while iTemp <= TListBox(Source).Items.Count-1 do begin { look for the selected items as these are the ones we wish to move } if TListBox(Source).selected[iTemp] then begin { use a with as to make code easier to read } with Sender as TListBox do begin { need to use a temporary variable as when the item is deleted the indexing will change } szTemp := TListBox(Source).Items[iTemp]; { delete the item that is being dragged } TListBox(Source).Items.Delete(iTemp); { insert the item into the correct position in the listbox that it was dropped on } Items.Insert(itemAtPos(ptTemp, True), szTemp); end; end; Inc(iTemp); end; end; Перевод на русский язык: Это фрагмент кода Delphi, демонстрирующий реализацию функциональности drag-and-drop для компонента TListBox. Код включает в себя два процедура: ListBox1DragOver Эта процедура вызывается при перемещении курсора мыши над списком во время операции drag. Она устанавливает параметр
ListBox1DragDrop Эта процедура вызывается при завершении операции drag над списком. Она выполняет следующие действия:
В целом, этот код демонстрирует базовую реализацию функциональности drag-and-drop для компонента TListBox. Однако есть некоторые ограничения, которые необходимо учитывать:
Чтобы улучшить этот код, вы можете рассмотреть реализацию более robust drag-and-drop механизма, который обрабатывает перетаскивание одиночных элементов, а также исправить проблему autoscroll. Вы также может быть полезно добавить дополнительную обработку ошибок и журналирование для обеспечения корректного поведения программы в всех сценариях. Пример программы на языке Delphi, демонстрирующий использование функции Drag and Drop между списками элементов. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Drag and Drop ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |