::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 21:44:22, Hit : 4266, Vote : 1209
 ListBox의 item을 mouse로 이동시키기

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

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
  // 해당 ListBox 안에서의 Drag & Drop
  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;

end.






371   [일반/컴포넌트] RichEdit 에서 문자(열)를 찾아 글자속성 바꾸기  김영대 2003/03/06 4658 1210
370   [일반/컴포넌트] StringGrid의 Column의 크기(width) 자동 조절  김영대 2003/03/04 6605 1210
369   [일반/컴포넌트] ListView 의 column header 오른쪽에 이미지 넣기  김영대 2003/03/07 4937 1209
368   [일반/컴포넌트] 마우스커서를 특정위치로 이동시키기  김영대 2003/03/05 5732 1209
  [일반/컴포넌트] ListBox의 item을 mouse로 이동시키기  김영대 2003/03/04 4266 1209
366   [일반/컴포넌트] 이미지를 마우스로 drag시 테두리 효과를 주면서 이동 시키기  김영대 2003/03/31 5347 1208
365   [윈도우즈 API] KeyDown의 Beep음을 없애자...  김영대 2003/03/06 4547 1208
364   [멀티미디어] wave파일 연주  김영대 2003/03/04 4149 1208
363   [윈도우즈 API] 내 프로그램의 화면을 가리는 프로그램 리스트  김영대 2004/07/24 4527 1207
362   [시스템] 프로세서를 생성시켜보자!  김영대 2003/03/06 4523 1207
361   [일반/컴포넌트] 콤포넌트를 Redraw할때 깜박임을 방지하려면...  김영대 2003/03/05 4678 1207
360   [윈도우즈 API] Taskbar 의 특정 위치에 popup 메뉴 띄우기  김영대 2004/07/24 4573 1206
359   [윈도우즈 API] 외부 프로그램의 크기를 내 프로그램에서 변경하기  김영대 2003/03/07 4563 1206
358   [윈도우즈 API] 스크린 세이버 실행하기  김영대 2003/03/05 4304 1206
357   [일반/컴포넌트] thread-safe Queue 구현  김영대 2003/08/18 6008 1205
356   [윈도우즈 API] 레지스트리가 변경된 사실을 알리려면...  김영대 2003/03/06 4459 1205
355   [일반/컴포넌트] 다이얼로그 박스가 이미 떠있는지 검사하기  김영대 2004/10/16 4463 1204
354   [데이터베이스] how to get records from Oracle StoredProcedure  김영대 2003/03/07 4471 1204
353   [윈도우즈 API] window의 maximize, minimize 알아내기  김영대 2003/03/07 4598 1204
352   [윈도우즈 API] 스크린 세이버 비밀번호 알아내기  김영대 2003/03/07 4874 1203
351   [시스템] PC 스피커 울리기(Sound, NoSound)  김영대 2003/03/07 4409 1203
350   [일반/컴포넌트] ComboBox 가 dropped 상태인지 검사  김영대 2003/03/04 4051 1203
349   [네트웍/인터넷] LAN 에 접속했는지 검사하기  김영대 2003/03/07 4457 1202
348   [시스템] PC에 설치된 DirectX 버전 읽기  김영대 2003/03/07 3890 1202
347   [윈도우즈 API] keyboard, mouse 메시지 무시(skip) 하기  김영대 2003/03/07 4338 1200
346   [COM/OLE] TWebBrowser 순차 네비게이션 예제  김영대 2004/10/01 5231 1199
345   [일반/컴포넌트] 서식(format) 주기  김영대 2003/03/05 4474 1199
344   [윈도우즈 API] 아이콘 변경 화면 띄우기  김영대 2004/08/26 4447 1198
343   [네트웍/인터넷] 윈도우즈 네트워크로 메시지 보내기  김영대 2003/03/30 5280 1198
342   [시스템] 파일의 소유자와 도메인 구하기  김영대 2004/08/04 4292 1197
341   [알고리즘] String Hash 함수  김영대 2004/09/17 4508 1196
340   [일반/컴포넌트] 벽에 들러붙는 자석폼 만들기  김영대 2004/08/06 4735 1196
339   [일반/컴포넌트] ASCII printing  김영대 2003/03/06 4940 1196
338   [시스템] Redirecting DOS Application Output  김영대 2003/03/06 4423 1196
337   [데이터베이스] DataSet의 현재 레코드 복사하여 붙여넣기(?)  김영대 2003/03/05 5207 1196
336   [일반/컴포넌트] Algorithm to sort a TStringGrid #2  김영대 2003/03/07 4744 1195
335   [데이터베이스] Query한 결과를 수정하기...  김영대 2003/03/07 4861 1195
334   [윈도우즈 API] 네트워크 환경의 "컴퓨터 찾아보기" 화면 띄우기  김영대 2003/04/01 5133 1194
333   [알고리즘] String ELF Hash 함수  김영대 2004/09/17 4646 1193
332   [시스템] CPU 종류 구하기  김영대 2003/03/07 4761 1193

[이전 10개] [1]..[11][12][13][14][15] 16 [17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2021 Zeroboard / skin by zero