Форум: "KOL";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизDrag n Drop в ListBox Найти похожие ветки
← →
Elec3C © (2007-12-09 20:12) [0]Можете привести пример Drag"n"Drop(перемещение элемента) в ListBox.
← →
Compiler (2007-12-09 21:54) [1]
procedure TForm1.ListBox1DropFiles(Sender: PControl;
const FileList: KOL_String; const Pt: TPoint);
var
s:string;
begin
s:=FileList;
while Pos(#13,s)<>0 do
listbox1.Add( Parse(s,#13));
listbox1.Add(FileList)
end;
← →
Elec3C © (2007-12-10 00:54) [2]Мне нужно перемещение итемов в листбоксе, а не добавление пути файла.
← →
ANTPro © (2007-12-10 01:37) [3]http://www.kolnmck.ru/files/demo/demotvnlvdrag.7z
http://www.kolnmck.ru/files/demo/dnd.7z
---
Должно помочь, хоть и не ListBox :)
← →
Elec3C © (2007-12-10 16:52) [4]
> ANTPro ©
Так эт у меня есть, но всё же...если не трудно - напишите.
← →
Sapersky (2007-12-10 18:41) [5]Есть такой (несколько кривоватый) вариант. Используется в OnMessage. Требуется 2 переменные:
ListDragSrc : Integer = -1; ListDragDst : Integer = -1;
Type
TDragDropRes = (drNone, drDrag, drDrop, drDropSucc);
function LBoxDragDrop(LBox : PControl; Const Msg : TMSG;
Var DragSrcIndex, DragDstIndex : Integer): TDragDropRes;
Var i : Integer;
s : String;
cur : PChar;
begin
Result := drNone;
Case Msg.message of
WM_MOUSEMOVE : If ((Msg.wParam and MK_LBUTTON) <> 0) then begin
Result := drDrag;
If (DragSrcIndex = -1) then DragSrcIndex := LBox.CurIndex else begin
i := LBox.Perform(LB_ITEMFROMPOINT, 0, Msg.lParam);
If (i <> DragDstIndex) and (i < LBox.Count) then begin
If (i <> -1) and (i <> DragSrcIndex) then cur := IDC_HAND
else cur := IDC_ARROW;
LBox.Cursor := LoadCursor( 0, cur );
DragDstIndex := i;
end;
end;
end;
WM_LBUTTONUP : begin
Result := drDrop;
i := DragDstIndex;
If (i <> -1) and (i <> DragSrcIndex) then begin
LBox.Cursor := LoadCursor( 0, IDC_ARROW );
s := LBox.Items[DragSrcIndex];
LBox.Delete(DragSrcIndex);
LBox.Insert(i, s);
LBox.CurIndex := i;
Result := drDropSucc;
end;
DragDstIndex := -1;
DragSrcIndex := -1;
end;
end;
end;
← →
Elec3C © (2007-12-10 19:17) [6]Спасибо. А в чём заключается кривость?
← →
Sapersky (2007-12-10 20:44) [7]Н-ну, кривость скорее идеологическая - никакой инкапсуляции, отдельно какая-то функция и какие-то переменные валяются... для встраивания в новый проект нужно хоть пару строчек, но написать.
Впрочем, в demotvnlvdrag ещё хуже, автор про встраиваемость вообще не думал.
← →
Elec3C © (2007-12-10 23:46) [8]
> Sapersky
Да и так всё прекрасно работает))
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c