|
안녕하세요 김진수 입니다.
1. form1 과 form2를 만들어 실험해 봤습니다.
form1의 onshow 이벤트에
form2->show(); //폼2를 보여준다.
이렇게 해봣습니다. form1이 보여지고 form2가 뒤로 숨더군요...
2. 이번엔 form1에 버튼을 넣고 다음을 onclick에 다음을 넣었습니다.
form2->Show(); //폼2를 보여준다.
이번엔 form1 위로 form2가 올라오며 활성화가 되는군요...
그럼 왜 1번의 경우 왜 form2가 안올라 올까 ??? 궁금해졌습니다... 그래서
다음을 시험해봤습니다. activeform 속성을 써서 form1과 form2 둘중 어는 폼이 진짜 활성화 되있는지
실험해봤습니다.
3. form1의 onshow 이벤트에 다음과 같이 넣었습니다.
form2->show();
Screen->ActiveForm->Color = clAqua;
결과는 form2가 clAqua로 변했습니다... (이것은 제 생각입니다... 잘못되었다면 지적해주세요);
그래서 생각해봤습니다... show 이벤트가 완료 되지 않은 상태에서 form2->Show() 를 했기때문에
form1이벤트 show가 종류 되면서 활성창을 form1으로 넘기는게 아닌가하고여 (물론 제 생각입니다.)
그래서 편법을 적용했습니다 onshow 이벤트를 통하지 않고 조건을 만족한다면 폼2를 보여 준다...
4. 타이머를 이용했습니다... 폼이 생성 완료되면 분명 타이머는 작동할것입니다.
그래서 timer1을 폼에 넣고 다음과 같이 했습니다...
inspector->enabled = true; //바로 동작
inspector->intaval = 10; //바로 되야 하니까 빠르게..
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(주절주절)
Form2->Show();
Timer1->Enabled = false;
}
이렇게 하니까 폼이 위로 뜨면서 활성화가되네요...
지금까지 허접한 실험이었습니다... 더 좋은 내용이 있다면 가르쳐 주세요 ^^;;
Jun 님이 쓰신 글 :
: 안녕하세요...
: 제일 처음 프로그램 실행시에 ini파일을 읽어 조건에 만족하면 다른 폼도 같이 띄워주는 데요...
: 다른 폼을 띄웠을 때 이 띄운 폼이 메인 폼보다 위로 올라와야 하는데 밑에 깔려서 문제입니다.
: 메인폼이 form1이고 띄울 폼이 form2라고 하면 form2->Focused()를 하고 form2->SetFocus();라고 모두 주었는데도 위로 올라오질 않네요...다른 방법이 있을까요? 답변 부탁드립니다.
:
|