On 5/21/10 7:19 AM, John wrote:
> On Friday 21 May 2010 06:31:19 am Paul McNett wrote:
>> The form defined by firstForm.cdxml needs to derive from dabo.ui.dFormMain,
>> and not dabo.ui.dForm.
>>
>>> I put the following code in the afterInitAll of the firstForm:
>>>        frm=dabo.ui.createForm("c:\Projects\UTerv\ui\secondForm.cdxml",
>>> ...self.Application.MainForm)
>>>        frm.show()
>>
>> It would be equivalent to say:
>>
>> frm = dabo.ui.createForm("c:\Projects\UTerv\ui\secondForm.cdxml", self)
>
> Paul now I'm confused.  As I read this thread the poster has added
> "MDI = True" to the first form or calling form.  It is my understanding that
> adding MDI will force the first form to derive from "dabo.ui.dFormMain".
> Maybe this has not been done?

Setting dabo.settings.MDI to True changes dForm to derive from wx.MDIChildFrame 
and 
dFormMain to derive from wx.MDIParentFrame. That is all it does. It *does not* 
make 
Application.MainForm derive from dFormMain.

For MDI to work in Dabo, you need to satisfy all these things:

+ dabo.settings.MDI = True

+ parent form needs to derive from dabo.ui.dFormMain

+ child forms need to derive from dabo.ui.dForm

It actually isn't required for Application.MainForm to refer to the dFormMain 
instance, but I can't see why it wouldn't in all normal cases.

> Therefore, the posters code to start the second form is correct in my mind.
> Am I wrong?

It was fine. I was just pointing out that 'self' and 
'self.Application.MainForm' are 
the same object in this case.

> It could be that the issue is - he has added objects/controls to the first
> form. I would think it could cause issues.

I don't think adding objects to dFormMain in an MDI context would work very 
well.

> Added thought - the ClassDesigner does not provide an easy way to set the MDI
> property.  Maybe the opening screen could provide a "MDI Form" or some such
> description.

All that is needed, beyond making the child frames instantiate in a dFormMain 
instance, is to set dabo.settings.MDI = True, before the forms instantiate.

This would likely go in the bootstrap code (the main .py file) before the 
application 
was even instantiated:

import dabo
dabo.settings.MDI = True

app = dabo.dApp(...)
...


Not sure how to make that a class designer setting, since the class designer 
edits 
individual classes, not applications as a whole.

Paul

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/[email protected]

Reply via email to