Q&A

  • Drag&drop되는 object의 위치 추적
안녕하세요.

델파이 초보입니다.

애플리케이션 실행간에 object( button이나 panel 등 )을

마우스로 move시키는 방법과 이동되는 object의

위치(x,y좌표)를 추적/ 표시 하고 싶거든요.

많은 분들의 도움 부탁드립니다.

더운날씨에 건강 조심하시고 안녕히 계세요. ^^

1  COMMENTS
  • Profile
    김영대 1999.08.10 20:52
    귀염뎅이 께서 말씀하시기를...

    > 안녕하세요.

    > 델파이 초보입니다.

    > 애플리케이션 실행간에 object( button이나 panel 등 )을

    > 마우스로 move시키는 방법과 이동되는 object의

    > 위치(x,y좌표)를 추적/ 표시 하고 싶거든요.

    > 많은 분들의 도움 부탁드립니다.

    > 더운날씨에 건강 조심하시고 안녕히 계세요. ^^



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ExtCtrls;



    type

    TForm1 = class(TForm)

    Panel1: TPanel;

    L_Left: TLabel;

    L_Top: TLabel;

    L_Width: TLabel;

    L_Height: TLabel;

    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

    Y: Integer);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    const

    SC_DRAGMOVE = $F012;

    SC_RIGHT_BOTTOM = $F008;

    SC_LEFT_BOTTOM = $F007;

    SC_BOTTOM = $F006;

    SC_RIGHT_TOP = $F005;

    SC_LEFT_TOP = $F004;

    SC_TOP = $F003;

    SC_LEFT = $F001;

    SC_RIGHT = $F002;



    var

    Form1: TForm1;

    SC_COMMAND: Word;



    implementation

    {$R *.DFM}



    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    ReleaseCapture;



    with Panel1 do

    begin

    if x < 5 then

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNWSE;

    SC_COMMAND := SC_LEFT_TOP;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNESW;

    SC_COMMAND := SC_LEFT_BOTTOM;

    end

    else

    begin

    Panel1.Cursor := crSizeWE;

    SC_COMMAND := SC_LEFT;

    end;

    end

    else if x > width-5 then

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNESW;

    SC_COMMAND := SC_RIGHT_TOP;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNWSE;

    SC_COMMAND := SC_RIGHT_BOTTOM;

    end

    else

    begin

    Panel1.Cursor := crSizeWE;

    SC_COMMAND := SC_RIGHT;

    end;

    end

    else

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNS;

    SC_COMMAND := SC_TOP;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNS;

    SC_COMMAND := SC_BOTTOM;

    end

    else

    begin

    Panel1.Cursor := crDefault;

    SC_COMMAND := SC_DRAGMOVE;

    end;

    end;

    end;



    Panel1.Perform(WM_SysCommand, SC_Command, 0);

    end;



    procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

    Y: Integer);

    begin

    with Panel1 do

    begin

    if x < 5 then

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNWSE;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNESW;

    end

    else

    begin

    Panel1.Cursor := crSizeWE;

    end;

    end

    else if x > width-5 then

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNESW;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNWSE;

    end

    else

    begin

    Panel1.Cursor := crSizeWE;

    end;

    end

    else

    begin

    if y < 5 then

    begin

    Panel1.Cursor := crSizeNS;

    end

    else if y > height-5 then

    begin

    Panel1.Cursor := crSizeNS;

    end

    else

    begin

    Panel1.Cursor := crDefault;

    end;

    end;



    // 위치와 크기 표시

    L_Left.Caption := IntToStr(Left);

    L_Top.Caption := IntToStr(Top);

    L_Width.Caption := IntToStr(Width);

    L_Height.Caption := IntToStr(Height);

    end;

    end;



    end.





    • 안치봉
      1999.08.10 19:56
      for i := 0 to ControlCount - 1 do begin if Controls[i] is TLabel then TLabel(Controls[i]).V...
    • 김영대
      1999.08.10 20:58
      좋은 소스를 공개해 주셔서 감사합니다 하시는일 잘 되시길 바랍니다
    • 발도제
      1999.08.10 21:50
      김영대 께서 말씀하시기를... > 좋은 소스를 공개해 주셔서 감사합니다 > 하시는일 잘 되시길 바랍니다 ...
    • 오세웅
    • 1999.08.10 19:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.08.10 22:40
      오세웅 께서 말씀하시기를... > 안녕하세요 > 타이틀바 없는 폼의 이동에 대해서는 이곳에서 찾을 > 수 ...
    • 이현철
    • 1999.08.10 18:04
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 고구마
      1999.08.10 19:22
      이현철 께서 말씀하시기를... > 안녕하세요. > 메모의 내용을 스트링 배열에다 저장한후 나중에 다시 불...
    • 이현철
      1999.08.10 20:29
      네. 답변 감사합니다. 전 메모에 있는 내용을 스트링 배열에 저장하고. 그걸 DB에 저장했거든요. 나중에 ...
    • 고구마
      1999.08.10 23:42
      이현철 께서 말씀하시기를... > 네. 답변 감사합니다. > 전 메모에 있는 내용을 스트링 배열에 저장하고....
    • 구창민
      1999.08.10 22:15
      이현철 께서 말씀하시기를... > 네. 답변 감사합니다. > 전 메모에 있는 내용을 스트링 배열에 저장하고....
    • 박대석
    • 1999.08.10 17:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.08.10 21:03
      박대석 께서 말씀하시기를... > cad file을 델파이에서 display할 수 있는 방법이 없는지요 아래 사이...
    • 제임스딘
      1999.08.10 19:01
      임명숙 께서 말씀하시기를... > Query로 table을 핸들링해보고자 하는 초짭니다. > Query로 입력을 해보...
    • 이지만
    • 1999.08.10 07:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김종호
      1999.08.12 04:26
      이지만 께서 말씀하시기를... > Delphi 에서 ListBOX 에 시스템에 탑재된 미디어(Floopy, HARD, CDROM.......
    • 김정완
      1999.08.10 11:52
      이지만 께서 말씀하시기를... > Delphi 에서 ListBOX 에 시스템에 탑재된 미디어(Floopy, HARD, CDROM.......
    • 이광주
    • 1999.08.10 06:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.08.10 21:02
      이광주 께서 말씀하시기를... > tracert에서 나오는 데이터값들을 델에서 사용하고 싶습니다. > 데이터 ...
    • 김영대
      1999.08.10 20:52
      귀염뎅이 께서 말씀하시기를... > 안녕하세요. > 델파이 초보입니다. > 애플리케이션 실행간에 object( ...
    • 김영대
      1999.08.10 20:56
      안갑철 께서 말씀하시기를... > 델파이 프로그램에서 사용자ID와 비밀번호를 입력받은후 > 해당 입력값을...
    • sunhee
      1999.08.10 03:53
      처음 프로그램 돌아갈 때 winexe("a.exe a1 a2", SW_SHOWNORMAL)이런 식으로 적어주시면 됩니다. 그...
    • 김여정
    • 1999.08.10 03:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      1999.08.10 08:11
      안녕하세요..조복기입니다.. 제가 이해가 잘 안가긴 하지만요 조건도 유동적이고 결과필드들도 유동...
    • 이용일
    • 1999.08.10 03:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 문보석
      1999.08.10 19:31
      이용일 께서 말씀하시기를... > 또 질문이군요..^^; > 캡션바없는 폼이 있는데요. > 이 폼 안에 Memo컴...
    • 이용일
      1999.08.11 03:03
      문보석 께서 말씀하시기를... > 저는 씨빌더 사용자라 파스칼프로그램은 잘 모르겠구요...물론 거의 비슷...
    • 안치봉
      1999.08.10 03:20
      글쎄요. 두가지중에 하나는 포기를 하시죠.. 아니면 3번을 택하시던지 (자세한건 나이렉스의 팁란에서 캡...
    • 이용일
    • 1999.08.10 02:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • sunhee
      1999.08.10 03:37
      메뉴중에서요 팁모아쪽에 김영대님쪽것을 찾아보면 있습니다. 파일 찾기 검색하면 될거 같네요. 이용일...
    • 박면구
    • 1999.08.10 02:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김정완
      1999.08.10 10:50
      박면구 께서 말씀하시기를... > TComboBox를 상속받아서 > TComDouble 이라는 콤포넌트를 만드려고 합니...