On Jun 4, 2006, at 2:45 PM, FreeFL wrote:
| 4/06/06 ~ 6:02 -0700 :
| CV,
| " Re: Same code, different frame ? "
It's important to recognize that the benefits of window
subclassing (and interfaces) are limited with respect to the
functionality that you've listed. Methods can be declared in the
superclass and will be inherited by the subclass windows. Controls
are not inherited. However, existing controls can be configured by
methods declared in the superclass and implemented(overridden) by
code in the subclassed windows. Frame properties aren't settable
in code so I doubt that subclassing is a help in that regard.
But you can experiment with subclassing windows to determine what
may or may not be useful for you: Create a new class, say
SuperWindow, and set it's superclass to Window in the Properties
pane. For demonstration, add a property to SuperWindow, say
MyProperty as integer = 500, and a method, GetMyProperty as
integer which returns MyProperty. Set Window1's superclass to
SuperWindow in the properties pane and add a pushbutton to
Window1. In the pushbutton put: Msgbox str(self.GetMyProperty).
Then run and click the button.
And you can do things like this for any window whose super is
SuperWindow:
...
If Window(i) IsA SuperWindow then
SuperWindow(Window(i).Top = 50 // window class members are available
msgbox str(SuperWindow.GetMyProperty)
...
Thank you for these explanations.
Two more questions :
- when I create the property, if I write in the dialog "myproperty
as integer = 500" it closes nicely on enterkey but does not
compile. Is your example to be understood as a shortcut for first
creating property, then giving it a value somewhere else, or is
this syntax correct in the definition dialog ? I run RB555 on a
mac, and maybe the syntax you show is correct in RB200x but not in
RB555 ?
- your example :
SuperWindow(Window(i).Top = 50
seems to need another parenthesis. Should it not be :
SuperWindow(Window(i)).Top = 50
In 5.5, just add a property MyProperty as integer, then initialize it
in the code editor. The way I wrote it was just email 'shorthand',
but in 200x you can do:
dim MyProperty as integer = 500 for local variables in the code
editor, and the property declaration pane also has fields for
initializing as part of the declaration. Yes, you are correct about
adding the missing parenthesis.
Best regards,
Jack
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>