[Gambas-user] Creating a new form instance in code + and Case

Benoît Minisini gambas at ...1...
Thu Sep 1 23:34:52 CEST 2011


> Hi benoit.
> 
> In the code tree one of my forms, for arguments sake, my work cover form is
> called  FWorkCover (note the capitalisation)
> 
> 
> I've a subroutine, pivotal to my clinical program where I add new instances
> of forms onto my main workspace workspace, using this sort of logic:
> 
> 
> Public sub Add_Page(pagename as string)
> 
> 
> 	Dim Form_Workcover as FWorkcover (note the C not capitalised as I'd typed
> it wrongly)
> 
> 	Select case pagename
> 
> 	case "workcover"
> 		  Form_Workcover = new FWorkcover (some_container)
> 
> 	End select
> 
> end
> 
> ie when i did the original Dim Form_Workcover I'd typed Fworkcover (no caps
> for the C in workcover,  instead of FWorkCover which is the name in the
> code tree. This didn't seem to affect anything at all.
> 
> 
> In another part of my program I had occasion to test which form was active 
> on the workspace tab, and, according to its name, activate or inactivate
> buttons for new, print,preview etc like as follows. I'd assumed, that as
> in the code tree the form was FWorkCover, that was the name I'd be testing
> for (not realising that I'd not capped the 'C' of FWorkcover in the other
> routine.
> 
> For Each page In WorkspaceEditor.Windows
>       If page = WorkspaceEditor.ActiveWindow Then
>               For Each hctrl In page.VBoxEditor.Children
>                  If hctrl Is Form Then
> 
>                Select Case hctrl.Name
> 			Case "FWorkCover"
> 				'activate appropriate buttons etc
>               End Select
> 
> I kept on getting inconsistant results and when I checked it out, I noticed
> that hctrl.name here was "FWorkcover"
> 
> when i went back and corrected the original name, it was then FWorkCover
> and worked.
> 
> So the question is how come it is possible to create a new instance of a
> form, when not using the exactly capitalised name fo the original form?
> 
> Hope that makes sense
> 
> Regards
> 
> Richard
> 

The first time a class name is encountered by the compiler specifies which 
name the class will have in the interpreter, and how the interpreter will 
memorize it. 

And for Form objects, it implies the value of the Name property.

So the interpreter will take the name from the first loaded class that uses 
"FWorkCover" or any case variant. I guess this is "FWorkcover" in your case. 
Then this name will be used during the entire life of the program.

Regards,

-- 
Benoît Minisini




More information about the User mailing list