Q&A

  • listbox에 있는 항목들을 마우스로 위치 옮기기
안녕하세요..

델피를 사랑하는 델피 초보입니다.

제목그대로 입니다.

리스트박스에 있는 항목들을 마우스로 위치를 옮기려구 하는데...

무슨 이벤트를 써야 합니까?

또 코딩은 어떻게 해야 되는지도 좀 가르쳐 주세요...

그럼 이만 즐거운 하루 되세용...^^;

2  COMMENTS
  • Profile
    이진우 2000.09.27 00:55
    초초보 wrote:

    > 안녕하세요..

    > 델피를 사랑하는 델피 초보입니다.

    > 제목그대로 입니다.

    > 리스트박스에 있는 항목들을 마우스로 위치를 옮기려구 하는데...

    > 무슨 이벤트를 써야 합니까?

    > 또 코딩은 어떻게 해야 되는지도 좀 가르쳐 주세요...

    > 그럼 이만 즐거운 하루 되세용...^^;



    다음과 같이 해보세여~

    테스트결과 잘 됩니다!

    그럼 20000



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    ListBox1.DragMode := dmAutomatic;

    end;



    procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;

    State: TDragState; var Accept: Boolean);

    begin

    Accept := (Source = ListBox1);

    end;



    procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

    var

    Value: Integer;

    begin

    if Sender = ListBox1 then

    begin

    // drop 된 곳의 item의 index를 구하기 위해

    // 화면좌표 (X, Y) 에 해당하는 실제 Item의 index를 구한다

    Value := ListBox1.ItemAtPos(Point(x,y), True);



    if Value = -1 then

    begin

    ListBox1.Items.Add(ListBox1.Items[ListBox1.ItemIndex]);

    ListBox1.Items.Delete(ListBox1.ItemIndex);

    end

    else

    begin

    // drop된 곳의 위에 선택된(dop의 대상)을 넣는다

    // {+ 1} 는 넣는 위치를 아래에 둘때 사용한다

    ListBox1.Items.Insert(Value {+ 1}, ListBox1.Items[ListBox1.ItemIndex]);

    // 원본은 삭제한다

    ListBox1.Items.Delete(ListBox1.ItemIndex);

    end;

    end;

    end;

  • Profile
    초초보 2000.09.27 01:50
    이진우 wrote:

    > 초초보 wrote:

    > > 안녕하세요..

    > > 델피를 사랑하는 델피 초보입니다.

    > > 제목그대로 입니다.

    > > 리스트박스에 있는 항목들을 마우스로 위치를 옮기려구 하는데...

    > > 무슨 이벤트를 써야 합니까?

    > > 또 코딩은 어떻게 해야 되는지도 좀 가르쳐 주세요...

    > > 그럼 이만 즐거운 하루 되세용...^^;

    >

    > 다음과 같이 해보세여~

    > 테스트결과 잘 됩니다!

    > 그럼 20000

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > ListBox1.DragMode := dmAutomatic;

    > end;

    >

    > procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;

    > State: TDragState; var Accept: Boolean);

    > begin

    > Accept := (Source = ListBox1);

    > end;

    >

    > procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

    > var

    > Value: Integer;

    > begin

    > if Sender = ListBox1 then

    > begin

    > // drop 된 곳의 item의 index를 구하기 위해

    > // 화면좌표 (X, Y) 에 해당하는 실제 Item의 index를 구한다

    > Value := ListBox1.ItemAtPos(Point(x,y), True);

    >

    > if Value = -1 then

    > begin

    > ListBox1.Items.Add(ListBox1.Items[ListBox1.ItemIndex]);

    > ListBox1.Items.Delete(ListBox1.ItemIndex);

    > end

    > else

    > begin

    > // drop된 곳의 위에 선택된(dop의 대상)을 넣는다

    > // {+ 1} 는 넣는 위치를 아래에 둘때 사용한다

    > ListBox1.Items.Insert(Value {+ 1}, ListBox1.Items[ListBox1.ItemIndex]);

    > // 원본은 삭제한다

    > ListBox1.Items.Delete(ListBox1.ItemIndex);

    > end;

    > end;

    > end;