![]() |
![]() ![]() ![]() ![]() |
|
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 прямо в свой смартфон. Подпишитесь на наш :: Главная :: Drag and Drop ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||