|
저 역시 TOPMOST 기능때문에 많이 골치를 앓았는데, 저는 이 기능을 포기 했습니다. 저의 경우는 top most 기능을 토글할 수 있는 폼이 동적으로 무수히 생성 가능하도록 처리하려고 하였는데, 될 때도 있고 않될 때도 있고 하여 포기했습니다. 이는 빌더가 동적으로 생성되는 폼에 대해서는 관리를 하여 주지 않아서 그런 것으로 알고 있습니다. (별 짓 다 해 봤습니다. Windows API도 동원하고... T____T)
아, 조금 옆길로 샜네요.
메인폼 하나만 top most 하는 거라면 별 문제 없을 거라 여기며,
메인폼 위에 다른 폼이 나타나야 한다면 아래와 같이 해보세요.
Application->NormalizeTopMosts();
subForm->Show ();
Application->RestoreTopMosts();
[참고] 애고, 빌더 도움말에 있는 기능인데, 제가 테스트해 본 바로는 않되네요. 빌더의 버그인지도 모르겠네요. 하여튼 top most 기능이 문제이네요. -___________-;;
그래서, 그냥 간단한 트릭으루,
1. subForm을 보는 곳에서
Form1->FormStyle = fsNormal;
subForm->Show ();
2. subForm을 Close 할 때
void __fastcall TsubForm::FormClose (TObject *Sender, TCloseAction &Action)
{
Form1->FormStyle = fsStayOnTop;
}
뭐 이렇게 하면, subForm이 떠 있는 동안은 메인폼이 일반적인 폼으로 동작하고, subForm이 닫히면 다시 top most 폼으로 동작하겠네여.
Jun 님이 쓰신 글 :
: 안녕하세요...답변 감사합니다..
:
: 쥴리안님의 말씀대로 서브폼의 formstyle도 fsstayontop으로 주게 되면 그 속성이 메인폼이나 서브폼이나 둘 다 깨지게 됩니다.
:
: 즉 서브폼을 stayontop으로 주고 띄우게 되면 메인폼, 서브폼 둘 다 다른 창에 포커스가 갈 때 다른 창보다 아래에 있게 됩니다.
:
: 확인해 봐 주시면 감사하겠습니다.
|