MDI 에서도 스플래쉬 폼은 잘됩니다.
제가 보기엔 님께서 스플래쉬 실행방법에 조금 착오가 있는듯 싶습니다.
당연히 스플래쉬폼은 MDI의 자식폼은 아니겠죠?
그럼 다음과 같이 해보세요..
function 추가
procedure IdleProcStart( Sender: TObject; var Done: boolean );
var
elapsedTime: DWORD;
begin
Done := false;
if frmAbout <> nil then
begin
elapsedTime := GetTickCount - AboutShownTime;
if elapsedTime < 400 then
begin
frmMainForm.Enabled := False;
SetForegroundWindow( frmAbout.Handle );
end;
if (elapsedTime > 5000) or frmAbout.ReqToClose then
begin
frmAbout.Free;
frmAbout := nil;
frmMainForm.Enabled := True;
SetForegroundWindow( frmMainForm.Handle );
Screen.Cursor := crDefault;
Application.ProcessMessages;
end;
end;
end;
// 이펑션은 메인폼 대기상태 즉 실행하면서 동시에 스플래쉬 폼을 뛰우는겁니다. 위에 타임을 조절하시면 스플래쉬 폼의 떠있는 시간을 조절 하실 수 있습니다
제가 보기엔 님께서 스플래쉬 실행방법에 조금 착오가 있는듯 싶습니다.
당연히 스플래쉬폼은 MDI의 자식폼은 아니겠죠?
그럼 다음과 같이 해보세요..
function 추가
procedure IdleProcStart( Sender: TObject; var Done: boolean );
var
elapsedTime: DWORD;
begin
Done := false;
if frmAbout <> nil then
begin
elapsedTime := GetTickCount - AboutShownTime;
if elapsedTime < 400 then
begin
frmMainForm.Enabled := False;
SetForegroundWindow( frmAbout.Handle );
end;
if (elapsedTime > 5000) or frmAbout.ReqToClose then
begin
frmAbout.Free;
frmAbout := nil;
frmMainForm.Enabled := True;
SetForegroundWindow( frmMainForm.Handle );
Screen.Cursor := crDefault;
Application.ProcessMessages;
end;
end;
end;
// 이펑션은 메인폼 대기상태 즉 실행하면서 동시에 스플래쉬 폼을 뛰우는겁니다. 위에 타임을 조절하시면 스플래쉬 폼의 떠있는 시간을 조절 하실 수 있습니다
메인폼의 FormCreate 이벤에다
...
...
frmAbout := TfrmAbout.Create ( Application, False );
AboutShownTime := GetTickCount();
frmAbout.Show ;
frmAbout.Update;
..
을 넣으시면 됩니다.
그럼 도움이 되셨기를...