Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

Drag&Drop 


Лана Розанова   (2002-03-24 09:35) [0]

Дайте пожалуйста код, чтобы из одного ListBox перенести строку в другой и наоборот.



mukha   (2002-03-24 09:54) [1]

Могу сбросить пример перемещения строк из одного списка в другой как с помощью нажатия клавиш так и перетаскиванием с помощью мыши. Код большой. Ответ через форум.



MBo   (2002-03-24 10:06) [2]

из 2 в первый (для 2 DragMode dmAutomatic)

это необязательно
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source=ListBox2;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
//можно проверять Source
if ListBox1.Items.IndexOf(Temp)<0 then begin
ListBox1.items.add(Temp);
Temp:="";
end;
end;

procedure TForm1.ListBox2StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
Temp:=Listbox2.Items[Listbox2.ItemIndex];
end;



mukha   (2002-03-24 11:22) [3]

На форме два списка и две кнопки btnLeft и btnRight. Перемещение выбранных элементов списка выполняется как нажатием кнопок так и перетаскиванием с помощью мыши.

procedure TForm1.FormCreate(Sender: TObject);
begin
//отключаем сортировку
ListBox1.Sorted:=false;
ListBox2.Sorted:=false;
//включаем множественный выбор
ListBox1.MultiSelect:=true;
ListBox2.MultiSelect:=true;
//разрешаем выбор клавиатурой
ListBox1.ExtendedSelect:=true;
ListBox2.ExtendedSelect:=true;
//заполняем первый список
ListBox1.Clear;
ListBox1.Items.Add("Первый");
ListBox1.Items.Add("Второй");
ListBox1.Items.Add("Третий");
ListBox1.Items.Add("Четвёртый");
ListBox1.Items.Add("Пятый");
//чистим второй список
ListBox2.Clear;
//разрешаем автоматическое перемещ. мышью
ListBox1.DragMode:=dmAutomatic;
ListBox2.DragMode:=dmAutomatic;
end;

procedure TForm1.btnRightClick(Sender: TObject);
var i:integer;
begin //перенос элементов во второй список
for i:=ListBox1.Items.Count-1 downto 0 do
if ListBox1.Selected[i] then
begin
ListBox2.Items.Add(ListBox1.Items[i]);
ListBox1.Items.Delete(i);
end;
end;

procedure TForm1.btnLeftClick(Sender: TObject);
var i:integer;
begin //перенос элементов в первый список
for i:=ListBox2.Items.Count-1 downto 0 do
if ListBox2.Selected[i] then
begin
ListBox1.Items.Add(ListBox2.Items[i]);
ListBox2.Items.Delete(i);
end;
end;

procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin //запрещение или разр. перемещения мышью во второй список
if Source= ListBox1 then Accept:=true else Accept:=false;
end;

procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin //перемещ. элемента во второй список
//после отпускания кнопки мыши
with Source as TListBox do
begin
ListBox2.Items.Add(Items[ItemIndex]);
Items.Delete(ItemIndex);
end;
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin //запрещение или разр. перемещения мышью в первый список
if Source= ListBox2 then Accept:=true else Accept:=false;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin //перемещ. элемента в первый список
//после отпускания кнопки мыши
with Source as TListBox do
begin
ListBox1.Items.Add(Items[ItemIndex]);
Items.Delete(ItemIndex);
end;
end;




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.022 c
1-9526            Лана Розанова         2002-03-23 18:30  2002.04.04  
ListBox


3-9383            Sregnic               2002-03-12 12:43  2002.04.04  
Странность при соединении таблиц.


3-9401            Sewix                 2002-03-12 16:39  2002.04.04  
Работа с TDBGrid


3-9407            s                     2002-03-13 10:32  2002.04.04  
Необходим совет


1-9536            DRUG                  2002-03-14 06:10  2002.04.04  
Проблема с формой