Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

ListBox и перетаскивание елементов   Найти похожие ветки 

 
Sound ©   (2002-04-29 10:44) [0]

Есть компонент ListBox в котором содержатся некое количество Items"ов. Как сделать так что бы пользователь мог менять местами эти Итемсы (перетаскивать их курсором мышки)?


 
Alx2 ©   (2002-04-29 10:47) [1]

см. в Help тему Drag and Drop


 
Игорь Шевченко ©   (2002-04-29 10:48) [2]

День добрый,


unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ListBox1DragOver(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.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
ListBox1.BeginDrag({not (Button = mbLeft)}false);
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source = ListBox1 then
with ListBox1,ListBox1.Items do
Move(ItemIndex, ItemAtPos(Point(X, Y), True));
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=Source = ListBox1;
end;

end.


С уважением,



 
Alx2 ©   (2002-04-29 11:08) [3]

Еще вариант (с использованием поля Tag):
ListBox1.DragMode должно быть dmAutomatic.


Procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
Var
idx: Integer;
S : String;
Begin
If Sender = ListBox1 Then
Begin
idx := ListBox1.ItemAtPos(Point(X, Y), True);
If idx > -1 Then
ListBox1.Items.Move(ListBox1.Tag,idx);
End;
End;

Procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; Var Accept: Boolean);
Var idx: Integer;
Begin
Accept := (Sender = ListBox1) And (ListBox1.Tag < ListBox1.Items.Count);
idx := ListBox1.ItemAtPos(Point(X, Y), True);
Accept := Accept And (idx > -1);
If Accept Then
ListBox1.ItemIndex := idx;
End;

Procedure TForm1.ListBox1StartDrag(Sender: TObject;
Var DragObject: TDragObject);
Begin
If Sender = ListBox1 Then
ListBox1.Tag := ListBox1.ItemIndex;
End;




Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-39738
Демон
2002-04-27 17:29
2002.05.13
На счет того как растянуть и перетащить


6-39814
Aleksey_K
2002-03-01 16:24
2002.05.13
SMTP


1-39712
Siliks
2002-04-25 02:17
2002.05.13
Добавление компонентов - NEED HELP!!!


1-39715
Satrap
2002-04-27 10:13
2002.05.13
Палитра компонентов


3-39676
борисыч
2002-04-18 07:50
2002.05.13
Есть подозрение, что многопоточность BDE, IBX - миф.