Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
14-39828
novomod
2002-03-29 19:04
2002.05.13
Файл. Sulfnbk.


3-39669
Смолин
2002-04-17 17:01
2002.05.13
Добавить нада в combobox список таблиц которые в БД MSSQL


4-39906
Aric
2002-03-12 15:24
2002.05.13
Перерисовать Image


1-39790
HDD
2002-04-29 05:20
2002.05.13
Помогите


3-39678
Андрусь
2002-04-15 19:58
2002.05.13
Народ как сделать небазовый элемент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский