Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[385] [답변] K670519/포커서 ??
cmart2 [ ] 2447 읽음    1997-12-21 00:41
안녕하세요. 짱굽니다.

우선 포커스(Focus)를 가지고 있는 콘트롤을 알아내기위한 방법을 알려드리죠.

음....

TWinControl중에 ActiveControl이라는 프로퍼티가 있는데, 이건 어떤 어플리케이션을

실행시킨후에 그 위에 올라가 있는 콘트롤들이 포커스될때 마다 그 값이 바뀌게 되어

있죠. 그러니까 그값을 알아내는 건 문제가 되지 않죠.

예를 하나 들어 보죠.

MDI Form을 사용하신다구 했죠?

그럼 이렇게 한번해 보죠. 폼위에 스피드 버튼을 하나 올려놓고 클릭 이벤트에 다음을

넣어 보세요.

procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
  Caption := Screen.ActiveForm.Name;
end;

그럼 스피드버튼을 누를 때 마다 현재 활성이 되어 있는 폼의 이름을 가져 올수 이죠.

이런 방법으로 하면 캡션을 가져 올수도 있고, 여러가지 활성된 자식폼에 대한 작업을

진행할 수가 있겠죠.

이때 스피드 버튼대신 컨트롤을 가지고 있는 버튼같은걸 사용해서는 안되요. 왜냐구요?

직접해 보심 알죠. ^^;

그리고 자식폼이 하나도 없을때 스피드버튼의 Enable을 꺼버릴려면

........
procedure TMainForm.FormCreate(Sender: TObject);
begin
  Screen.OnActiveFormChange := UpdateMenuItems;
end;
..........

procedure TMainForm.UpdateMenuItems(Sender: TObject);
begin
  NewButton.Enabled := MDIChildCount > 0;
  {활성을 시킬 버튼이나 메뉴를 위처럼 적어 놓으면 됩니다.}
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  Screen.OnActiveFormChange := nil;
end;

이렇게 입력을 하면 되는데.....

UpdateMenuItems프로퍼티를 선언해 주어야 겠죠...

그럼 답변이 다 된건가요?

좋은 코딩하시길...
,


+ -

관련 글 리스트
385 [답변] K670519/포커서 ?? cmart2 2447 1997/12/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.