We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

MDI-parent caption

dr_gonzo
dr_gonzo asked
on
Medium Priority
701 Views
Last Modified: 2010-04-04
How do I get caption on and MDI-child's parent window?

I've tried
TForm(myForm.Parent).Caption
but TForm(myForm.Parent) returns nil. Why?
SHouldn't a MDI-childs parent be set to the hWnd of it's MDI-parent???
Comment
Watch Question

Commented:
TForm(myForm.Owner).Caption

Regards Jacco

Commented:
MyForm.Parent returns a Twincontrol, it does not include the information about Caption. So you cast it to TForm, this TForm.Caption is nil, it's normal.

if you want to get the mainform's caption, you needn't use Parent property. In your child form unit, you add a uses clause
to allow you directly use mainform. for example:
mainform unit name:main.pas
var
   mainform:TMainForm;
.

in your child form unit file:

.
implementation
uses main;
.

// str:=TForm(MyForm.Parent).Caption;
// change to:
   str:=mainform.caption;
.

Everything will ok!





Author

Commented:
To Jaccu:
Nop same problem the caption is by Delphi said to be ''. Read buboi's comment to see why.

To Buboi:
That's what I would have done, but I'm writing a component which need's eighter the owner's caption (if it is a non-MDI) or the owner's parent (if it is MDI) so it is impossible to use USES in this case, any other clues?

Author

Commented:
Hmm by the way. If it was a cast-problem why don't this work:

Self.Parent

It also returns nil.
Is the property I'm looking for owner?????
I'm getting more and more confused. I thought I knew Delphi quite well.
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
Yepp!

Commented:
Two other options:

1)
Application.MainForm.Caption := 'My new caption'

2)
for iForm:=0 to Screen.FormCount-1 do
  for iChild:=0 to Screen.Forms[iForm].MDIChildCount-1 do
    if Screen.Forms[iForm].MDIChildren[iChild]=Self then
      Screen.Forms[iForm].Caption:='Hallo';

Regards Jacco
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.