Q&A

  • Re: OnHint(제가 원하는 답변이 아니라서..재질문)
다른 폼을 보여줄 때 다음의 코드를

해 보세요.



예)

Application.OnHint := nil;

Form2.ShowModal;

Application.OnHint := ShowHint; // ShowHint는 폼 1의 프로시져



Form2를 보이기 전에 OnHint 프로시져를 Nil값으로 만들어 줍니다.

그 뒤 Form2가 보여지고, 말씀하신대로 FormShow 이벤트에서

자신의 힌트 프로시져를 할당합니다.

Application.OnHint := ShowHint; // 이 ShowHint는 Form2의 프로시져입니다.

Form2가 닫히면 다시 Form1의 ShowHint프로시져를 할당해 주는 것입니다.



잘 생각해 보시면 왜 이렇게 해야 하는지 알수 있을 것입니다.

새로운 폼이 보여지면서 OnHint 프로시져를 자신의 프로시져로 배정한뒤

원래대로 복원을 해 주지 않기 때문입니다.



delphi 께서 말씀하시기를...

> public

> { Public declarations }

> procedure ShowHint(Sender : TObject);

> end;

> procedure TForm1.ShowHint(Sender : TObject);

> begin

> StatusBar1.Panels[0].Text := Application.Hint;

> end;

> procedure TForm1.FormCreate(Sender: TObject);

> begin

> Application.OnHint := ShowHint;

> end;

> 자꾸 같은질문을 드려서 죄송한데요...

> 위와같이 하나의 폼에서는 이상이 없는데요...또다른 폼에도 같은 같은코딩을 했을때 실행시 메인폼에서의 힌트가 다른폼의 상태바에 출력이 되거든요(디버깅과).. 그리고 두개의 폼모두 Application.OnHint := ShowHint 를 FormShow에서 코딩을 했을때 실행시 처음 메인화면에선 잘되구요.. 다른폼을 호출했을때도 잘됩니다..

> 그런데 호출한 폼을 닫았을때 메인폼에서의 힌트출력이 다른폼에서

> 출력되거든요(디버깅결과)

> 제가 원하는 답변은 여러개의 폼에서 활성화된 폼에만 힌트가 출력되는것입니다..

> 답변 부탁드립니다...

>





0  COMMENTS