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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.007 c
1-58170
Alibaba
2002-07-05 18:23
2002.07.18
Ширина Caption.


1-58222
Goblinus
2002-07-07 15:50
2002.07.18
Шрифты


1-58181
star
2002-07-05 13:12
2002.07.18
Как плавно прорисовать форму ?


1-58033
V.V.Putin
2002-07-07 11:21
2002.07.18
PorgressBar в StatusBar е


1-58155
star77
2002-07-04 20:26
2002.07.18
Дата в строку





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский