Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
폼 2개의 연동
안녕하십니까..델파이로 어떠한 프로그램을 개발중인데여
한 가지 해결이 안되는 것이 있어서 이렇게 질문을 드립니다.
간단할 것 같기도 한데 제가 머리가 안좋아서리...ㅡ.ㅡ;
폼이 2개가 있을때 한 폼을 마우스로 끌어 이동하면 다른 폼도 따라서 움직이게 하는 것입니다. 부디 방법을 가르쳐 주십시여.,....
3
COMMENTS
최용일
•
2000.04.07 07:36
안녕하세요. 최용일입니다.
폼이 이동할때에는 WM_MOVING 메세지와 WM_MOVE메세지가 발생합니다.
이걸 이용하시면 간단히 구현되는데요. 하지만 윈엠프처럼 하실려면
여러가지 추가 작업을 하셔야 겠네요. 일단은 간단한 방법이니까 올립니다.
type
TForm1 = class(TForm)
private
// 폼 사이의 간격을 저장하는 변수
LengthOfFormSide: TPoint;
// WM_MOVE메세지에 반응하는 이벤트 메세지 핸들러
Procedure OnMove(Var Msg:TMessage); Message WM_MOVE;
// WM_MOVING메세지에 반응하는 이벤트 메세지 핸들러
Procedure OnMoving(Var Msg:TMessage); Message WM_MOVING;
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
{ TForm1 }
procedure TForm1.OnMove(var Msg: TMessage);
begin
If Assigned(Form2) then // 폼2가 활성화 되어있어야 겠죠..
begin
Form2.Top := Top + LengthOfFormSide.X ;
Form2.Left := Left + LengthOfFormSide.Y ;
end;
end;
procedure TForm1.OnMoving(var Msg: TMessage);
// 폼이 움직이기 시작할 때 폼사이의 간격을 저장합니다.
begin
LengthOfFormSide.X := Form2.Top - Top;
LengthOfFormSide.Y := Form2.Left - Left;
end;
end.
KJB wrote:
> 안녕하십니까..델파이로 어떠한 프로그램을 개발중인데여
> 한 가지 해결이 안되는 것이 있어서 이렇게 질문을 드립니다.
> 간단할 것 같기도 한데 제가 머리가 안좋아서리...ㅡ.ㅡ;
> 폼이 2개가 있을때 한 폼을 마우스로 끌어 이동하면 다른 폼도 따라서 움직이게 하는 것입니다. 부디 방법을 가르쳐 주십시여.,....
>
>
0
0
삭제
수정
댓글
조규춘
•
2000.04.07 03:17
아래에 있는 내용은 예전에 최용일 님이 답변한 것을 복사해서 붙여 놓은 것입니다.
이거 하시면 될꺼여요!
역시 최용일님은 고수여요~! 히~! 힘내셔요 최용일님.. 오늘일 잊어버리시고..
꼭! 꼭! wrote:
> 초보라 도움이 필요합니다.
> 두개의 폼을 동시에 움직이기 위해 다음과 같은 프로시져를 사용했어요.
> procedure onmove(var msg : tmessage); message wm_move;
> 첫번째 폼에서 버튼을 클릭하면 두번째 폼이 나오고 첫번째 폼의 제목 표시줄을
> 가지고 움직이면 두번째 폼이 따라다니게요...
>
> 근데 폼의 제목 표시줄을 모두 없애고 (borderstyle = bsNone)
> 이미지를 맨 위에다 갖다 놓아서 제목 표시줄 대신 사용하려고 하는데
> 두개의 폼을 어떻게 동시에 움직이죠?
> 마우스로 이미지를 가지고 움직여야 하는데 방법을 잘 모르겠어요.
> 꼼짝을 하지 않는군요.
> 자세하게 설명 좀 해주세요.
WM_NCHITTEST 메세지에 반응하는 메소드를 서브클래싱해서 사용하시면 됩니다.
즉, 마우스포인터의 위치를 검사해서 그곳이 이미지내이라면 메세지구조체의
Result값에 htCaption을 넣어주시면 됩니다. 말하자면 이미지에서의 드래그를
캡션바에서의 드래그로 속이는 것입니다.
아래는 간단한 예제입니다.
type
TForm1 = class(TForm)
Image1: TImage;
public
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
end;
...
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
var
P: TPoint;
ImageRect: TRect;
begin
// 마우스 좌표를 구합니다.
P := Point(Msg.XPos, Msg.YPos);
// 마우스 좌표를 클라이언트 좌표로 바꿉니다.
P := ScreenToClient(P);
ImageRect := Rect(Image1.Left, Image1.Top, Image1.left +Image1.Width,
Image1.top+ Image1.Height);
// 마우스 포인터가 이미지 내에 있다면
if PtInRect(ImageRect, P) then
Msg.Result := htcaption // 캡션바에서 일어난 일인 것처럼 폼을 속인다.
else
inherited;
end;
end.
0
0
삭제
수정
댓글
KJB
•
2000.04.07 07:21
저랑 같은 질문을 하신 분이 계셨군여...
여기 자료가 너무 많아서 제목으로 찾으려 했더니 찾을 수가 없었습니다.
저으 불찰입니다...ㅡ.ㅡ;
어째듯 조규춘님께도 감사드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
모영찬
2000.04.07 04:39
0
COMMENTS
/
0
LIKES
키보드의 오른쪽컨트롤키는 keydown에서 어떻게 처리할 수 있는지요???
이수정
•
2000.04.07 04:16
6
COMMENTS
/
0
LIKES
uses 에서 파일 에러 나는거 왜 이렇죠???
최용일
•
2000.04.07 04:35
이수정
•
2000.04.07 05:24
최용일
•
2000.04.07 06:49
이수정
•
2000.04.07 13:18
이수정
•
2000.04.07 18:17
최용일
•
2000.04.07 18:40
사노테
2000.04.07 03:36
0
COMMENTS
/
0
LIKES
델파이에 적합한 MSAccess(MDB) 연결방법은?
손영숙
•
2000.04.07 03:17
1
COMMENTS
/
0
LIKES
레지스트리에 Write한 값을 Flush하는 방법?
TeamX
•
2000.04.07 04:41
LazyWrite, CloseKey 를 적절히 사용하면 되지 않을까요?. 손영숙 wrote: > var > Reg : TRegistr...
박수연
•
2000.04.07 02:55
3
COMMENTS
/
0
LIKES
nil 이랑 cafree랑 친한가요?
이정욱
•
2000.04.07 03:39
만약 폼을 동적으로 생성하셨다면... 그냥 nil로 주시면 안됩니다. 꼭 action := caFree를 해주세요. ni...
박수연
•
2000.04.07 22:34
감사합니다. 근데, cafree한 다음에 nil로 마무리하는 것이 꼭 필요한가요? cafree만 해도 되는데? 거듭 ...
조규춘
•
2000.04.07 03:29
좋은 답변이 될지 모르것지만 cafree에 관하여 한번 적어보도록 하것습니다. 관련된 내용을 적어 보겠습...
답답이
•
2000.04.07 02:53
1
COMMENTS
/
0
LIKES
[재질문]activeX form에서 특정 URL에서 image 불러오기
TeamX
•
2000.04.07 04:45
우선은... 1.LoadFromFile 의 의미를 잘 생각하셔야 할것 같습니다. 2.ActiveX 폼내에 TIamge 에 원격...
KJB
•
2000.04.07 02:37
3
COMMENTS
/
0
LIKES
폼 2개의 연동
안녕하십니까..델파이로 어떠한 프로그램을 개발중인데여 한 가지 해결이 안되는 것이 있어서 이렇게 질문을 드립니다. 간단할 것 같기도 한데 제가 머리가 안좋아서리...ㅡ.ㅡ; 폼이 2개가 있을때 한 폼을 마우스로 끌어 이동하면 다른 ...
최용일
•
2000.04.07 07:36
안녕하세요. 최용일입니다. 폼이 이동할때에는 WM_MOVING 메세지와 WM_MOVE메세지가 발생합니다. 이...
조규춘
•
2000.04.07 03:17
아래에 있는 내용은 예전에 최용일 님이 답변한 것을 복사해서 붙여 놓은 것입니다. 이거 하시면 될꺼여요...
KJB
•
2000.04.07 07:21
저랑 같은 질문을 하신 분이 계셨군여... 여기 자료가 너무 많아서 제목으로 찾으려 했더니 찾을 수가 없...
이수정
•
2000.04.07 01:37
2
COMMENTS
/
0
LIKES
컴포넌트 등록시 나는 에러때문에요.. 부탁드립니다.
최용일
•
2000.04.07 02:00
안녕하세요. 이수정님... 자료실에다 답변해 드렸습니다. 참조하시고 안되시면 질문하세요. ^^ 이...
이수정
•
2000.04.07 02:50
dclusr50 파일내용과, 에러 메시지 입니다.. (자료실에 올렸는데.. 지워질까봐 여기도 올립니다.) pa...
하수
•
2000.04.07 01:32
1
COMMENTS
/
0
LIKES
에디트 박스에서 ...
조규춘
•
2000.04.07 01:59
하수 wrote: > 부탁.. > > 예로 > edit.text가 a1일때 > a 만을 선택할려면 어떻게 해야되는지 > 전...
강동길
2000.04.07 01:32
0
COMMENTS
/
0
LIKES
table의 edit에 관한 질문입니다.
delphi boy
•
2000.04.07 01:29
1
COMMENTS
/
0
LIKES
퀵레포트 문제입니다. 사랑하는 고수님들 제발가르쳐주길..
See
•
2000.04.07 01:40
delphi boy wrote: > 퀵레포트에 페이지 헤더,디테일,페이지 푸더벤드를 각각 놓았습니다. > 페이지 헤더...
이훈
•
2000.04.07 01:17
1
COMMENTS
/
0
LIKES
help me(html문서에 있는 data를 db에 올리는 방법)
화랑
•
2000.04.07 19:25
안냐세요.. 화랑입니다.. 일단 몇개의 에러가 보이네요.. 먼저 HTML에서 Form의 Method를 Get으로 ...
최 소 영
•
2000.04.07 01:00
2
COMMENTS
/
0
LIKES
메모리맵핑방법을 사용해서 메모리를 공유하는방법에
최용일
•
2000.04.07 05:45
안녕하세요. 최용일입니다. 데이타가 여러개일지라도 하나의 맵핑파일을 열어서 오프셋만 바꾸어서 사용...
최 소 영
•
2000.04.07 22:52
> 데이타가 여러개일지라도 하나의 맵핑파일을 열어서 오프셋만 바꾸어서 사용하시면 > > 될것같은데...
canvas
•
2000.04.07 00:58
1
COMMENTS
/
0
LIKES
TImage.canvas에 그리기에서 애러....
TeamX
•
2000.04.07 04:51
이게 아닐까요... Image1.Picture.Bitmap.Canvas.FillRect(... canvas wrote: > . > . > Imag...
황남철
•
2000.04.07 00:55
1
COMMENTS
/
0
LIKES
퀵 리포트
김영숙
•
2000.04.07 02:01
private Count : Integer; // 변수 선언... ...... implementation {$R *....
nambada
•
2000.04.07 00:53
1
COMMENTS
/
0
LIKES
스트링그리드에서
이선규
•
2000.04.11 03:09
nambada wrote: > 스트링그리드의 어떤 특정 칼럼에 콤보박스를 띄울려고 합니다. > 행의 수가 지정되어 ...
최은정
2000.04.07 00:48
0
COMMENTS
/
0
LIKES
DBGrid 에서 check 할수 있는 필드만들기????
답답이
2000.04.07 00:38
0
COMMENTS
/
0
LIKES
activeX form에서 특정 URL에서 image file 불러오기?
이빈
•
2000.04.07 02:52
1
COMMENTS
/
0
LIKES
꼭 좀 도와주세요...부탁합니다.
TeamX
•
2000.04.07 04:55
MS사의 홈페이지에 가면 asf 엔코더와 디코더가 있는걸로 압니다. 이빈 wrote: > 미디어플레이어에 보...
가가멜
•
2000.04.06 23:48
3
COMMENTS
/
0
LIKES
[부탁]누가 델파이로 만든 퍼즐게임 없나요?
최용일
•
2000.04.07 02:05
안녕하세요. 최용일입니다. 제게 지뢰찾기 델파이 소스가 있는데 보내드리죠. Marco Cantù란 ...
조규춘
•
2000.04.06 23:55
가가멜 wrote: > 누가 델파이로 만든 퍼즐게임 가지고 있으신 분 없어요? > 그 소스를 이용해서 퍼즐게임...
김영숙
•
2000.04.07 02:04
조규춘 wrote: > 가가멜 wrote: > > 누가 델파이로 만든 퍼즐게임 가지고 있으신 분 없어요? > > 그 소...
KJB
2000/04/07 02:37
Views
283
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
폼이 이동할때에는 WM_MOVING 메세지와 WM_MOVE메세지가 발생합니다.
이걸 이용하시면 간단히 구현되는데요. 하지만 윈엠프처럼 하실려면
여러가지 추가 작업을 하셔야 겠네요. 일단은 간단한 방법이니까 올립니다.
type
TForm1 = class(TForm)
private
// 폼 사이의 간격을 저장하는 변수
LengthOfFormSide: TPoint;
// WM_MOVE메세지에 반응하는 이벤트 메세지 핸들러
Procedure OnMove(Var Msg:TMessage); Message WM_MOVE;
// WM_MOVING메세지에 반응하는 이벤트 메세지 핸들러
Procedure OnMoving(Var Msg:TMessage); Message WM_MOVING;
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
{ TForm1 }
procedure TForm1.OnMove(var Msg: TMessage);
begin
If Assigned(Form2) then // 폼2가 활성화 되어있어야 겠죠..
begin
Form2.Top := Top + LengthOfFormSide.X ;
Form2.Left := Left + LengthOfFormSide.Y ;
end;
end;
procedure TForm1.OnMoving(var Msg: TMessage);
// 폼이 움직이기 시작할 때 폼사이의 간격을 저장합니다.
begin
LengthOfFormSide.X := Form2.Top - Top;
LengthOfFormSide.Y := Form2.Left - Left;
end;
end.
KJB wrote:
> 안녕하십니까..델파이로 어떠한 프로그램을 개발중인데여
> 한 가지 해결이 안되는 것이 있어서 이렇게 질문을 드립니다.
> 간단할 것 같기도 한데 제가 머리가 안좋아서리...ㅡ.ㅡ;
> 폼이 2개가 있을때 한 폼을 마우스로 끌어 이동하면 다른 폼도 따라서 움직이게 하는 것입니다. 부디 방법을 가르쳐 주십시여.,....
>
>