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

Вниз

Drag&Drop в ListBoxe   Найти похожие ветки 

 
Славик   (2002-07-07 23:28) [0]

Доброго времени суток, мастера! Требуется помощь: как можно менять местами строки в ListBoxe. Знаю, что надо при помощи Drag&Drop, но не получается. Когда тяну строку на новое положение, она просто копируется и переносится вниз списка.
Заранее благодарю за помощь!


 
MBo ©   (2002-07-08 06:09) [1]

Раздел Статьи


 
Славик   (2002-07-08 10:29) [2]

Можно по подробней, о какой статье речь?


 
Andrey007   (2002-07-08 11:23) [3]

http://delphi.mastak.ru/articles/dragndrop/index.html


 
Славик   (2002-07-08 12:55) [4]

Всё равно не получается: по прежнему при переносе строчка ставится на последнее место. За линк спасибо, всё сделал как там указано, но в принципе ничего не изменилось. Может кто ещё подскажет, в чём дело?


 
Skier ©   (2002-07-08 12:58) [5]

>Славик
Покажи-ка свой код.


 
Славик   (2002-07-08 13:05) [6]

unit Unit1;

interface

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

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Panel1: TPanel;
Element: TListBox;
Memo1: TMemo;
GroupBox3: TGroupBox;
Layouts: TListBox;
Speichern: TButton;
Loeschen: TButton;
Beenden: TButton;
CheckBox1: TCheckBox;
FontDialog1: TFontDialog;
procedure FormCreate(Sender: TObject);
procedure BeendenClick(Sender: TObject);
procedure ElementClick(Sender: TObject);
procedure LayoutsClick(Sender: TObject);
procedure LoeschenClick(Sender: TObject);
procedure LayoutsDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure LayoutsDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure eigenschaften(Sender: String);
end;

var
Form1: TForm1;
ElemName: String;
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;

end;

//////////////////////////////////////////////////////

procedure TForm1.BeendenClick(Sender: TObject);
begin
Form2.Show;
end;

//////////////////////////////////////////////////////

procedure TForm1.ElementClick(Sender: TObject);
begin
Memo1.Clear;
Layouts.Selected[Layouts.ItemIndex]:= false; //Markierung l


 
Славик   (2002-07-08 13:11) [7]

Забыл прокоментировать: Еlement(это ListBox1), а Layouts(это ListBox2)


 
Eugene Lachinov ©   (2002-07-08 13:28) [8]

Нужно строчки местами менять в ListBoxе или перемещать из одного в другой ?


 
Skier ©   (2002-07-08 13:31) [9]

>Славик


procedure TForm1.LayoutsDragDrop(Sender, Source: TObject; X, Y: Integer);
var
s: string;
begin
if Source = Layouts then //в if и в else одно и тоже !
begin
//Layouts.Items.Add(Layouts.Items[Layouts.ItemIndex]);
s := Layouts.Items[Layouts.ItemIndex];
Layouts.Items.Delete(Layouts.ItemIndex);
Layouts.Items.Insert(Layouts.ItemAtPos(Point(X, Y), False),
s);
end
else
begin
s := Layouts.Items[Layouts.ItemIndex];
Layouts.Items.Delete(Layouts.ItemIndex);
Layouts.Items.Insert(Layouts.ItemAtPos(Point(X, Y), False),
s);
end;
end;


 
Славик   (2002-07-08 13:33) [10]

Мне надо, чтобы строчки менялись местами.


 
Славик   (2002-07-08 13:40) [11]

Ребята, спасибочки за помощь, теперь всё работает!!!


 
Skier ©   (2002-07-08 13:45) [12]

>Славик
А где был баг ?


 
Славик   (2002-07-08 14:31) [13]

>Skier
Ты ведь сам натолкнул меня на мою ошибку! Проверки у меня не првильно стояли. Мне надо было просто поменять местами if и else проверки. А так как Source у меня может быть только один (Layouts), правильный ответ получился такой:

procedure TForm1.LayoutsDragDrop(Sender, Source: TObject; X, Y: Integer);
var
s: string;
begin
s := Layouts.Items[Layouts.ItemIndex];
Layouts.Items.Delete(Layouts.ItemIndex);
Layouts.Items.Insert(Layouts.ItemAtPos(Point(X, Y), False), s);
end;



 
Skier ©   (2002-07-08 14:34) [14]

>Славик
Рад что помог !
Просто хотел уточнить помогло, то что я накрапал или нет...



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
1-58207
Socol
2002-07-05 03:30
2002.07.18
Удаление символов в тексте)))


1-58184
Cherepovets
2002-07-05 11:06
2002.07.18
Я все по тому же вопросу.


14-58303
Sergey13
2002-06-21 11:32
2002.07.18
Предложение по организации форума


3-57948
Teas
2002-06-25 23:27
2002.07.18
Помогите пожалуйста начинающему


1-58169
Valeris
2002-07-05 11:32
2002.07.18
Цвет кнопки