다른 폼을 보여줄 때 다음의 코드를
해 보세요.
예)
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에서 코딩을 했을때 실행시 처음 메인화면에선 잘되구요.. 다른폼을 호출했을때도 잘됩니다..
> 그런데 호출한 폼을 닫았을때 메인폼에서의 힌트출력이 다른폼에서
> 출력되거든요(디버깅결과)
> 제가 원하는 답변은 여러개의 폼에서 활성화된 폼에만 힌트가 출력되는것입니다..
> 답변 부탁드립니다...
>