Embedded forms - accessing procedures on parent forms

Post

Posted
Rating:
#1 (In Topic #978)
Trainee
 In some of my programs I have been using embedded forms 3 levels deep - i.e. a parent form, a child form on the parent form, and a grandchild form on the child form. For the most part this works well, but I have run into problems trying to execute a procedure on a child form (2nd level) from a grandchild form (3rd level). I'm sure it's possible, but I don't know how to do it. I keep getting an error message (15; Null object). I attach a simple example project with code of what I am trying to do. I would be grateful if somebody could have a quick look at the code and point me in the right direction.

bazzvn

Attachment
Online now: No Back to the top

Post

Posted
Rating:
#2
Guru
BruceSteers is in the usergroup ‘Guru’
It's because of this…

Code (gambas)

  1.  
  2. Public hChild As FChild
  3.  
  4. Public Sub Form_Open()
  5.  
  6.  Dim hChild As New FChild(pnlChild)
  7.  
  8.  
  9.  

Loose the Dim
By using Dim hChild you are making another new hChild variable local to Form_Open() not the public declaration so the
Public hChild As FChild never gets used so it remains to be Null , hence the error message..

try this…

Code (gambas)

  1.  
  2. Public hChild As FChild
  3.  
  4. Public Sub Form_Open()
  5.  
  6.  hChild = New FChild(pnlChild)
  7.  
  8.  
  9.  

My guess would be you already know all this but that little "Dim" slipped your attention :)
Online now: No Back to the top

Post

Posted
Rating:
#3
Trainee
 Thank you Bruce for such a simple solution.  Sadly I did not know about this, which would have saved me lots of somewhat ugly workarounds in the past. I work mainly with sqlite databases, and the reason I like embedded subforms is that they enable me to encapsulate and localize code for viewing and manipulating specific tables and records in my databases, and I find that it helps a lot in tracking bugs.
bazzvn
Online now: No Back to the top

Post

Posted
Rating:
#4
Guru
BruceSteers is in the usergroup ‘Guru’

bazzvn said

Thank you Bruce for such a simple solution.  Sadly I did not know about this, which would have saved me lots of somewhat ugly workarounds in the past. I work mainly with sqlite databases, and the reason I like embedded subforms is that they enable me to encapsulate and localize code for viewing and manipulating specific tables and records in my databases, and I find that it helps a lot in tracking bugs.
bazzvn

Much of the gambas ide is written with forms embeded in other forms.
As are many of my programs.

It sure has some huge benefits, cleaner code, easier to track code/bugs :)

And yes Dim is specifically for defining variables within a Sub or Function that are local only to that function.
The variables can have the same name as global variables.

You're welcome :)
Online now: No Back to the top
1 guest and 0 members have just viewed this.