You didn't state your delphi version or which default monitor settings
are applied to the forms.
A project source as below works as expected for me on a multi-monitor system.
This is in Delphi 2009.
program SplashTest;
uses
Forms,
SysUtils,
MainForm in 'MainForm.pas' {Form29},
DataModule in 'DataModule.pas' {data: TDataModule},
SplashForm in 'SplashForm.pas' {frmSplash};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(Tdata, data);
frmSplash := TfrmSplash.Create(nil);
try
frmSplash.Show;
frmSplash.Update;
Application.CreateForm(TForm29, Form29);
finally
FreeAndNil(frmSplash);
end;
Application.Run;
end.
I just run a simple loop in the FormCreate to delay the launching and
allow the marquee progress bar to update on the splash. If you want
the test project I can can it to you directly.
procedure TForm29.FormCreate(Sender: TObject);
var
LCnt: Int64;
I: Integer;
begin
LCnt := 0;
for I := 1 to 99999999 do
begin
Inc(LCnt, I);
Application.ProcessMessages;
end;
Caption := IntToStr(LCnt);
end;
On Fri, Aug 14, 2009 at 1:16 AM, Alan Colburn<[email protected]> wrote:
>
> Thank you all for your responses. It looks like I need to keep experimenting
> :-)
>
>
>
> Jeremy, the actual problem is an access violation that occurs in the first
> few lines of the TCustomForm.SetWindowToMonitor method of the Forms unit.
> Depending on how I've set the default monitor property in my forms, it'll be
> either line 3958, 3960, or 3963. In each case, the program is unable to get a
> value for a Monitor.Handle property.
>
>> Date: Thu, 13 Aug 2009 11:37:11 +1000
>> Subject: Re: Unable to Get Handle On Monitor
>> From: [email protected]
>> To: [email protected]
>>
>> So what is the actual problem?
>>
>>
>> On Thu, Aug 13, 2009 at 4:31 AM, Alan Colburn<[email protected]> wrote:
>> >
>> > Hi folks --
>> >
>> > When I start my app with:
>> >
>> > Data:=TData.Create(Application);
>> > Application.Title := 'Performance Gradebook';
>> > Application.CreateForm(TfrmMain, frmMain);
>> > Application.Run;
>> >
>> > everything works fine. (Data is a DataModule.)
>> >
>> > However, when I add a splash screen I run into problems:
>> >
>> > Data:=TData.Create(Application);
>> > frmSplashScreen := TfrmSplashScreen.Create(nil);
>> > try
>> > frmSplashScreen.Show;
>> > Application.Initialize;
>> > frmSplashScreen.Update;
>> > Application.Title := 'Performance Gradebook';
>> > Application.CreateForm(TfrmMain, frmMain);
>> > frmSplashScreen.Hide;
>> > finally
>> > frmSplashScreen.Free;
>> > end;
>> > Application.Run;
>> >
>> > The problem relates specifically to users with dual monitors--see the
>> > subject line; it's in the Forms unit in the TCustomForm.SetWindowToMonitor
>> > block. I've never really used two monitors before, so I'm kind of lost in
>> > terms of what is happening. Do you have any thoughts?
>> >
>> > Thanks, as always -- Al C.
>> > _________________________________________________________________
>> > Get your vacation photos on your phone!
>> > http://windowsliveformobile.com/en-us/photos/default.aspx?&OCID=0809TL-HM
>> > _______________________________________________
>> > Delphi mailing list -> [email protected]
>> > http://lists.elists.org/cgi-bin/mailman/listinfo/delphi
>> >
>> _______________________________________________
>> Delphi mailing list -> [email protected]
>> http://lists.elists.org/cgi-bin/mailman/listinfo/delphi
>
> _________________________________________________________________
> Get your vacation photos on your phone!
> http://windowsliveformobile.com/en-us/photos/default.aspx?&OCID=0809TL-HM
> _______________________________________________
> Delphi mailing list -> [email protected]
> http://lists.elists.org/cgi-bin/mailman/listinfo/delphi
>
_______________________________________________
Delphi mailing list -> [email protected]
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi