Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Работа с Tlistview

Автор: #$# PaVeL #$# 19.03.2006 12:46

Как осуществить следующие действия с компонентом TListView:
1. Drag&Drop из одного TListView в другой.
2. Перемещение одной сторчки (TListItems) на другую позицию
3. Связать со строчкой (TListItems) объект, и(или) запись.


Заранее благодарен!

Автор: volvo 19.03.2006 16:45

Цитата
1. Drag&Drop из одного TListView в другой.

Смотри DRKB -> VCL -> "Перетаскивание объектов, Drag and Drop, Docking" -> "Примеры использования Drag and Drop для различных визуальных компонентов"
В том числе рассматриваются и TListView

Автор: #$# PaVeL #$# 19.03.2006 17:02

Спасибо!, А как насчёт пункта 2 и 3?

Автор: volvo 19.03.2006 17:18

Ну, допустим, второй вопрос реализуется точно так же, как первый:

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
Node, SelNode: TTreeNode;
begin
Node := TreeView1.GetNodeAt(x, y);
Accept := (Sender = Source) and (Node <> nil);
if not Accept then
Exit;
SelNode := Treeview1.Selected;
while (Node.Parent <> nil) and (Node <> SelNode) do
begin
Node := Node.Parent;
if Node = SelNode then
Accept := False;
end;
end;

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
Node, SelNode: TTreeNode;
begin
Node := TreeView1.GetNodeAt(X, Y);
if Node = nil then
Exit;
SelNode := TreeView1.Selected;
SelNode.MoveTo(Node, naAddChild);
end;

Я сейчас попробовал - переносит и ветки и отдельные Item-ы в другое место этого же TListView как и положено...

Автор: #$# PaVeL #$# 19.03.2006 17:26

Спасибо! good.gif
Может сразу контрольный в голову, для этой темы(пункт 3)? mega_chok.gif lol.gif

Автор: Гость 15.11.2006 4:47

связать с объектом определенные данные -

var
__filename:integer; //это номер строки в tstringlist
Lit: TListItem;


Lit:= AppsList.Items.Add;
Lit.Data:= pointer(__filename);


и потом использовать:

procedure TForm1.AppsListDblClick(Sender: TObject);
begin
if AppsList.Selected = nil then EXIT;

ShellExecute(0,
nil,
pchar(
ExeList.Strings[ integer(AppsList.Selected.Data) ]
),
nil,
nil,
sw_restore);

end;