Q&A

  • 드래그 해서 위치 변경 하기
폼이나 PageControl에서 Panel이나 image 을 드레그 해서 위치를 옮길려고 합니다.
어떻게 하는지 고수님들 한 수 부 탁 합니다.
2  COMMENTS
  • Profile
    구창민 2007.12.05 19:23
    안녕하세요..

    Panel을  런타임에 옮기시려면 아래 코드를 Panel 의 마우스다운 이벤트에 기술해주시면 되고요..

    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    const
      SC_DragMove = $F012;
    begin
      ReleaseCapture;
      Panel1.Perform(WM_SysCommand, SC_DragMove, 0);
    end;


    Image 컴포넌트 같이 핸들이 없는 컴포넌트는 다른 방법을 써야 합니다..
    아래 코드를 참고하세요..

    unit Unit1;

    interface

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

    type
      TForm1 = class(TForm)
        Image1: TImage;
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      MouseDownSpot : TPoint;
      Capturing : bool;

    implementation

    {$R *.DFM}

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
         SetCapture(longint(Image1));
         Capturing := true;
         MouseDownSpot.X := x;
         MouseDownSpot.Y := Y;
    end;

    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        ReleaseCapture;
        Capturing := false;
        Image1.Left := Image1.Left - (MouseDownSpot.x - x);
        Image1.Top := Image1.Top - (MouseDownSpot.y - y);
    end;

    procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    if Capturing then begin
       Image1.Left := Image1.Left - (MouseDownSpot.x - x);
       Image1.Top := Image1.Top - (MouseDownSpot.y - y);
    end;
    end;

    end.

    그럼..즐거운 프로그래밍 하세요..


  • Profile
    정경철 2007.12.06 20:00
    감사 합니다..
    • 유경민
      2008.09.27 09:24
      저랑 같은 사황인듯 ㅠ.ㅠ 저도 지금 죽을맛이에요 아무것도 모른상태에서 개발할려니 ㅋㅋ
    • 한상진
    • 2007.12.12 19:28
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2007.12.12 22:33
      안녕하세요. 윈도우에서 관련 API를 제공합니다. WNet으로 시작되는 API들인데요... WNetAddConne...
    • nilriri™
      2007.12.12 21:09
    • 한상진
      2007.12.13 01:09
      답변 올려주셔서 감사합니다... ㅎㅎ WNetAddConnection2를 써서 해결이 될듯해서 하고 있는데요;; WNetA...
    • ET
    • 2007.12.12 01:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깨구락지
      2007.12.12 06:56
      ASCII 코드를 참고하십시오. http://www.delphi.co.kr/ascii.html
    • 용이...
    • 2007.12.11 20:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2007.12.11 20:31
      안녕하세요.. 3초짜리 타이머를 하나 만드시고 clientsocke.Active := True; Timer.Enabled := T...
    • 김승재
    • 2007.12.11 03:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.12.11 10:24
      인디 9 버전도 멀티 CPU에서 문제 없이 동작 합니다... 아무래도 다른 부분에서 놓치신것 같습니다.. 혹...
    • 이정욱
      2007.12.11 10:17
      아래의 소스를 보니 TCPExecute에서 리스트를 처리 하셨네요. 이 이벤트는 쓰레드 안에 있기 때문에, 쓰레...
    • 주정자
      2007.12.12 10:45
      이정욱님의 답변 감사합니다.  그러나, 제가 실력이 허접인지라 혹 가능하시면 간단한 예제를 들...
    • 혀노
    • 2007.12.10 22:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2007.12.11 00:04
      group band를 한번 사용해보세요,. 음 그리고 애초에 QRCompositeReport 용도는 다중 레포트가 있는경우 ...
    • 주정자
    • 2007.12.10 06:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.12.11 10:21
      그냥 Active 만 True로 써주셔도 됩니다. 바인딩에서 뜻하는것은 해당 머쉰의 아이피가 여러개일때 그중...
    • 주정자
      2007.12.12 10:40
      11
    • 정해철
      2007.12.08 01:13
      http://www.delphi.co.kr/zboard/view.php?id=qanda&page=1&sn1=&divpage=13&sn=off&ss=on&sc=on&select_ar...
    • 정경철
      2007.12.08 05:25
      혹시 이것을 말하는지 모르겠습니다. 델파이에 ChartPreview(AForm, AChart) 가 있습니다. 도움말을 참고...
    • 박종철
      2007.12.10 18:12
      먼저 관심갖고 답변해 주셔서 감사합니다. 혹시나 저같은 고민을 하신 분들이 계실까봐 부족하지만 저...
    • 박종삼
    • 2007.12.07 23:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2007.12.08 00:07
      PSendBuff가 아마도 레코드형일것 같구요... 그중 sdBuff가 PChar나 Pointer형일것 같네요... 위 사항이...
    • 박종삼
      2007.12.08 23:50
    • 박종철
    • 2007.12.06 23:45
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Guest
      2007.12.07 01:08
      Chart1.Width := FormTest.Width / 2; <-- 이부분입니다. Chart1.Width 는 정수형인데 FormTest.Wi...
    • 박종철
      2007.12.07 01:32
      감사합니다. 알려주신 방법대로 div로 연산을 하니 일단 컴파일 할 때에는 오류메세지 없이 잘 넘어갑...
    • Crazy™
      2007.12.07 02:05
      div / 2 대신 trunc(FormTest.Width / 2) 로 해보시고 그래도 에러나시면 FormCreate대신 FormActive 이...
    • 박종철
      2007.12.07 17:59
      답변 주신 분들께 감사드립니다. FormActivate, Create, Resize 이벤트 어디에서도 계속 에러가 나서 ...
    • 정경철
    • 2007.12.06 19:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2007.12.06 22:51
      안녕하세요.. http://www.delphi.co.kr/zboard/view.php?id=qanda&page=1&sn1=&divpage=13&sn=off&ss=on...
    • 정경철
      2007.12.07 08:38
      위 링크 되어 있는 소스를 테스트 해 보면 모니터2에 표시됩니다. 버튼 같은것으로 폼을 열어 을때는정상...
    • 구창민
      2007.12.07 20:26
      음.. 테스트 해볼 방법이 없어 답변드리기가 곤란한데, 아래 코드에서 모니터2에 보여질 특정폼만 Left ...
    • 정경철
      2007.12.08 05:17
      위 소스대로 했습니다. 그런데 버튼으로 했을때에는 잘 됩니다. 그런데 메인폼이 열리때 하면 메인폼과 ...
    • 모영철
      2008.01.31 01:25
      Font의 캐릭터셋을 ShiftJIS 해주시면 됩니다.
    • Guest
      2007.12.06 02:30
      Group slices 를 사용해보세요. Style : Below % Value : 5 Label : 기타 이렇게 설정하면 전체에...
    • 박종철
      2007.12.06 17:32
      감사합니다~ 델파이 TChart에서는 어쩔수 없는 부분인가 봅니다. ^^;; 알려주신 방법으로 진행하려구요...
    • 코앤
    • 2007.12.05 19:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정경철
    • 2007.12.05 17:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2007.12.05 19:23
      안녕하세요.. Panel을  런타임에 옮기시려면 아래 코드를 Panel 의 마우스다운 이벤트에 기술...
    • 정경철
      2007.12.06 20:00
      감사 합니다..