Difference between revisions of "TRadioGroup"
From Free Pascal wiki
Jump to navigationJump to searchm |
(→Small example: language) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{TRadioGroup}} | |
− | + | A '''TRadioGroup''' [[image:tradiogroup.png]] is a group of related but mutually exclusive [[TRadioButton]]s, requiring the user to select one of a set of alternatives. It's like a [[TGroupBox]] with integrated [[TRadioButton|TRadioButtons]]. | |
+ | ==Usage== | ||
+ | To use a TRadioGroup on a [[TForm|form]], you can simply select it on the [[Standard tab]] of the [[Component Palette]] and place it by clicking on the form. | ||
+ | ===Small example=== | ||
+ | Geometric figures should be drawn randomly and depending on the TRadioGroups to the form. The first RadioGroup determines the shape, the second RadioGroup detrmines the number. | ||
+ | * create a new application and place two TRadioGroups on your form | ||
+ | * change in the Object Inspector the [[Property|property]] ''Name'' of ''RadioGroup1'' to ''rgShape'', also ''RadioGroup2'' to ''rgCount'' | ||
+ | * change identical ''Caption'' of ''rgShape'' to ''Shape'' and that of ''rgCount'' to ''Count'' | ||
+ | * add the RadioButtons for ''rgShape'': | ||
+ | ** in the Object Inspector select the property ''Items'' of ''rgShape'' | ||
+ | ** click on the button [...], the character chain editor opens | ||
+ | ** write among each other ''Lines Rectangles Ellipses'' and complete the entry with the button ''OK'' | ||
+ | * add identical the RadioButtons for ''rgCount'' (written among each other): ''1 5 10 20 50 100'' | ||
+ | * set the first RadioButton as the ''currently selected'', by setting the property ''ItemIndex'' of ''rgShape'' and ''rgCount'' from ''-1'' to ''0'' | ||
+ | * create the ''OnClick'' event handler of ''rgShape'' by double clicking ''rgShape'' | ||
+ | * also use these event handler for ''rgCount'': | ||
+ | ** in the Object Inspector select ''rgCount'' | ||
+ | ** now select the tab ''Events'' in the Object Inspector | ||
+ | ** go to the ''OnClick'' event and select in the adjacent ComboBox ''rgShapeClick'' | ||
+ | * whenever ''rgShape'' or ''rgCount'' is clicked, the form should be redrawn, therefore write following code in the event handler: | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | procedure TForm1.rgShapeClick(Sender: TObject); | ||
+ | begin | ||
+ | Repaint; | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | * whenever the form is redrawn, the shapes should be drawn: | ||
+ | ** in the Object Inspector select ''Form1'' | ||
+ | ** select the tab ''Events'' | ||
+ | ** click on the button [...] next to the event ''OnPaint'' | ||
+ | ** the handler is created, enter the following code: | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | procedure TForm1.FormPaint(Sender: TObject); | ||
+ | var | ||
+ | i: Integer; | ||
+ | begin | ||
+ | if TryStrToInt(rgCount.Items[rgCount.ItemIndex], i) then | ||
+ | for i:=1 to i do begin | ||
+ | Canvas.Pen.Color:=Random($1000000); | ||
+ | Canvas.Brush.Color:=Random($1000000); | ||
+ | case rgShape.Items[rgShape.ItemIndex] of | ||
+ | 'Lines': Canvas.Line(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight)); | ||
+ | 'Rectangles': Canvas.Rectangle(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight)); | ||
+ | 'Ellipses': Canvas.Ellipse(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight)); | ||
+ | end; | ||
+ | end; | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | * start your program, it could look like: | ||
+ | [[image:ExampleTRadioGroup.png]] | ||
+ | ==See also== | ||
+ | * [[doc:lcl/extctrls/tradiogroup.html|TRadioGroup doc]] | ||
+ | * [[TRadioButton]] | ||
+ | * [[TGroupBox]] | ||
− | |||
− | |||
− | |||
− | |||
{{LCL Components}} | {{LCL Components}} | ||
− | |||
− | |||
− |
Latest revision as of 22:33, 17 April 2022
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
日本語 (ja) │
русский (ru) │
A TRadioGroup is a group of related but mutually exclusive TRadioButtons, requiring the user to select one of a set of alternatives. It's like a TGroupBox with integrated TRadioButtons.
Usage
To use a TRadioGroup on a form, you can simply select it on the Standard tab of the Component Palette and place it by clicking on the form.
Small example
Geometric figures should be drawn randomly and depending on the TRadioGroups to the form. The first RadioGroup determines the shape, the second RadioGroup detrmines the number.
- create a new application and place two TRadioGroups on your form
- change in the Object Inspector the property Name of RadioGroup1 to rgShape, also RadioGroup2 to rgCount
- change identical Caption of rgShape to Shape and that of rgCount to Count
- add the RadioButtons for rgShape:
- in the Object Inspector select the property Items of rgShape
- click on the button [...], the character chain editor opens
- write among each other Lines Rectangles Ellipses and complete the entry with the button OK
- add identical the RadioButtons for rgCount (written among each other): 1 5 10 20 50 100
- set the first RadioButton as the currently selected, by setting the property ItemIndex of rgShape and rgCount from -1 to 0
- create the OnClick event handler of rgShape by double clicking rgShape
- also use these event handler for rgCount:
- in the Object Inspector select rgCount
- now select the tab Events in the Object Inspector
- go to the OnClick event and select in the adjacent ComboBox rgShapeClick
- whenever rgShape or rgCount is clicked, the form should be redrawn, therefore write following code in the event handler:
procedure TForm1.rgShapeClick(Sender: TObject);
begin
Repaint;
end;
- whenever the form is redrawn, the shapes should be drawn:
- in the Object Inspector select Form1
- select the tab Events
- click on the button [...] next to the event OnPaint
- the handler is created, enter the following code:
procedure TForm1.FormPaint(Sender: TObject);
var
i: Integer;
begin
if TryStrToInt(rgCount.Items[rgCount.ItemIndex], i) then
for i:=1 to i do begin
Canvas.Pen.Color:=Random($1000000);
Canvas.Brush.Color:=Random($1000000);
case rgShape.Items[rgShape.ItemIndex] of
'Lines': Canvas.Line(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight));
'Rectangles': Canvas.Rectangle(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight));
'Ellipses': Canvas.Ellipse(Random(ClientWidth), Random(ClientHeight), Random(ClientWidth), Random(ClientHeight));
end;
end;
end;
- start your program, it could look like:
See also