Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Drag and Drop для двух компонентов TOutline

Delphi , Синтаксис , Drag and Drop

Drag and Drop для двух компонентов TOutline

Автор: Lloyd Linklater (Sysop) (Delphi Technical Support)


unit Unit1;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Grids, Outline;

type

  TForm1 = class(TForm)
    Outline1: TOutline;
    Outline2: TOutline;
    procedure OutlineDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure OutlineMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure OutlineDragOver(Sender, Source: TObject; X, Y: Integer;

      State: TDragState; var Accept: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.OutlineDragDrop(Sender, Source: TObject; X, Y: Integer);
begin

  with Sender as TOutline do
  begin
    AddChild(GetItem(x, y),
      TOutline(Source).Items[TOutline(Source).SelectedItem].Text);
  end;

end;

procedure TForm1.OutlineMouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);
begin

  if Button = mbLeft then
    with Sender as TOutline do
    begin
      if GetItem(x, y) >= 0 then
        BeginDrag(False);
    end;
end;

procedure TForm1.OutlineDragOver(Sender, Source: TObject; X, Y: Integer;

  State: TDragState; var Accept: Boolean);
begin

  if (Source is TOutline) and (TOutline(Source).GetItem(x, y) <>
    TOutline(Source).SelectedItem) then

    Accept := True
  else
    Accept := False;

end;

end.


Вот перевод текста на русский язык:

Это фрагмент кода Delphi, демонстрирующий реализацию функциональности drag-and-drop для двух компонентов TOutline в форме.

Декларация модуля Модульная декларация импортирует различные модули, включая SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Grids и Outline.

Декларация формы Декларация формы определяет компонент TForm с двумя компонентами TOutline: Outline1 и Outline2. Она также объявляет три метода:

  • OutlineDragDrop: обрабатывает событие drag-and-drop для излучений
  • OutlineMouseDown: обрабатывает событие нажатия мыши для излучений
  • OutlineDragOver: обрабатывает событие перетаскивания для излучений

Имплементация Секция реализации содержит код для трех методов.

  1. OutlineDragDrop: Этот метод вызывается, когда предмет опускается на другой излучение. Он добавляет новый дочерний узел в целевое излучение с текстом от перенесенного предмета.
  2. OutlineMouseDown: Этот метод вызывается, когда пользователь кликнул на элемент излучения. Если левая кнопка мыши была нажата, он запускает операцию перетаскивания для выбранного элемента.
  3. OutlineDragOver: Этот метод вызывается, когда элемент излучения перетаскивается над другим излучением. Он проверяет, если источник и целевое излучение различаются, а перенесенный предмет не является тем же, что и выбранный элемент в целевом излучении. Если оба условия выполняются, он устанавливает Accept в True, позволяя операции опускания.

Примечания

  • Код использует метод BeginDrag для запуска операции перетаскивания для элемента излучения.
  • Метод GetItem используется для получения индекса элемента под курсором мыши в излучении.
  • Метод AddChild используется для добавления нового дочернего узла в излучение.

Альтернативное решение Если вам нужно обрабатывать событие drop differently, например, вставляя перенесенный предмет в конкретном месте или обрабатывая ошибки, вы можете модифицировать метод OutlineDragDrop соответственно. Например:

procedure TForm1.OutlineDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
   // Вставьте перенесенный предмет на верхушку целевого излучения
  with Sender as TOutline do begin
    AddChild(nil, TOutline(Source).Items[TOutline(Source).SelectedItem].Text);
  end;
end;

В этом коде вставляется перенесенный предмет на верхушку целевого излучения вместо добавления его как дочернего узла.

В статье описывается реализация функции Drag и Drop для двух компонентов TOutline в программировании на Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Drag and Drop ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:40:44/0.0055749416351318/1