Как осуществить следующие действия с компонентом TListView:
1. Drag&Drop из одного TListView в другой.
2. Перемещение одной сторчки (TListItems) на другую позицию
3. Связать со строчкой (TListItems) объект, и(или) запись.
Заранее благодарен!
Спасибо!, А как насчёт пункта 2 и 3?
Ну, допустим, второй вопрос реализуется точно так же, как первый:
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;
Спасибо!
Может сразу контрольный в голову, для этой темы(пункт 3)?
связать с объектом определенные данные -
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;