델파이

리스트박스(ListBox) 아이템(Item) 위, 아래로 이동 시키기

미스터몽키 2010. 12. 31. 20:48

1. 버튼 클릭을 이용해 리스트 박스의 아이템을 위, 아래로 이동시키기

// 아래로

  if lxHw305.ItemIndex < lxHw305.Items.Count -1 then

    lxHw305.Items.Exchange(lxHw305.ItemIndex, lxHw305.ItemIndex+1);


//위로

  if lxHw305.ItemIndex > 0 then

    lxHw305.Items.Exchange(lxHw305.ItemIndex, lxHw305.ItemIndex-1);



2. 마우스로 드래그 앤 드롭 하여 위, 아래로 이동 시키기

먼저 리스트박스의  DragMode 프로퍼티를 dmAutomatic 으로 설정한 후

DragDrop, DragOver 이벤트 핸들러를 다음 처럼 작성한다.


procedure TfrmHw303.lxHw305DragDrop(Sender, Source: TObject; X, Y: Integer);

var bIs: boolean;

    iIndex: Integer;

begin

  bIs:= False;

  iIndex:=lxHw305.ItemAtPos(Point(X,Y),bIs);

  lxHw305.Items.Exchange(iIndex, lxHw305.ItemIndex );

end;


procedure TfrmHw303.lxHw305DragOver(Sender, Source: TObject; X, Y: Integer;

  State: TDragState; var Accept: Boolean);

var bIs: boolean;

    iIndex: Integer;

begin

  bIs:= False;

  iIndex:=lxHw305.ItemAtPos(Point(X,Y),bIs);

  if(iIndex=lxHw305.ItemIndex)then

    Accept:=false

  else

    Accept:=true;

end;