Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Subclassing OptionButton
Message
From
05/10/1998 10:48:34
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
05/10/1998 10:28:34
General information
Forum:
Visual FoxPro
Category:
Classes - VCX
Miscellaneous
Thread ID:
00143846
Message ID:
00143886
Views:
18
>>>Am trying to add an OptionGroup to my class library and want to incorporate my own properties & methods with the associated OptionButtons.
>>>
>>>However the OptionButton is not one of those available for subclassing in the Class Browser.
>>>
>>>The ButtonCount of the OptionGroup will vary each time I add my new class to a form. Will I have to create the OptionGroup class with the maximum number of Buttons forseen and then change the ButtonCount property to a lower number ? Or is there a better way ?
>>>
>>>- Werner
>>Werner,
>>You could subclass the "buttons" nonvisually.
oForm = createobject("Form")
>>with oForm
>>	.addobject("MyoptGrp","Optiongroup")
>>	with .MyoptGrp
>>		.buttoncount = 5
>>		for ix = 1 to 5
>>			.removeobject("Option"+ltrim(str(ix)))
>>			.addobject("Option"+ltrim(str(ix)),"myoption",;
>>				"Hello"+ltrim(str(ix)), ix)
>>		endfor
>>		.setall("Visible",.t.)
>>		.autosize = .t.
>>		.visible = .t.
>>	endwith
>>	.addobject("myquitter","myquit")
>>	.myquitter.visible = .t.
>>endwith
>>oForm.show
>>read events
>>
>>define class myoption as optionbutton
>>	fontname = "Arial"
>>	fontbold = .t.
>>	fontitalic = .t.
>>	autosize = .t.
>>	procedure init
>>	lparameters tcCaption, tnPos
>>		this.caption = tcCaption
>>		this.left = 1
>>		this.Top  = tnPos * (this.height + 2)
>>	endproc
>>
>>	procedure click
>>		=rand(-1)
>>		this.forecolor = rgb(int(rand()*255), ;
>>	                         int(rand()*255), ;
>>	                         int(rand()*255))
>>	endproc
>>enddefine
>>
>>define class myquit as commandbutton
>>Autosize = .T.
>>Caption="Close"
>>procedure init
>>	this.left = this.parent.width - this.width - 2
>>	this.top  = this.parent.height - this.height - 2
>>endproc
>>procedure click
>>    release all
>>	clear events
>>endproc
>>enddefine
Cetin
>
>Thanks, and I understand your suggestion, but I want to be able to repeatedly use my OptionGroup with my OptionButtons in the Form Designer. Is there a way to programatically add classes to a class library and make them a permanent part of that library ?
>
>- Werner
Yes Werner. Class libraries could be prg too. And having them during form design is nearly what builders are. A very fast and small example of the above optionbutton as a builder (called manually from commandwindow to keep it simple) :
*myoptiongroupbuild.prg
* Maybe an interface here to get buttoncount etc
aselobj(aOptionGrp)
with aOptionGrp[1]
 .buttoncount = lnButtons
 for ix = 1 to lnButtons
    .removeobject("Option"+ltrim(str(ix)))
    .addobject("Option"+ltrim(str(ix)),"myoption")
 endfor
 .autosize = .t.
endwith

define class myoption as optionbutton
* PEM code
enddefine
If you register this to builder.dbf it would be a builder also (would need 3 dummy parameters for builder.app).
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Reply
Map
View

Click here to load this message in the networking platform