单选按钮组(RadioBox)是单选按钮的组合。当我们需要对不同的单选按钮进行选择时,为了使不同组之间互不干涉,就需要使用单选按钮组。
单选按钮组有两个重要得属性:Items和ItemIndex。在窗体上选中RadioBox组件在对象查看器上双击Items属性,将打开一个对话框,如下图所示:
在该对话框的编辑窗口中输入各项标题,每项一行。
ItemIndex属性用于表明单选按钮组中哪一项被选中了。若为-1(缺省值),表示没有被选中的项;若为0,表示第一项被选中;若为1,表示第二项被选中;其他依次类推。
我们在前面编制的文本编辑器的基础上,使用单选按钮组代替单选按钮,并添加字体选择功能。程序用到两个RadioGroup组件,属性如下:
属性 | RadioGroup1 | RadioGroup2 |
Caption | 颜色 | 字体 |
Items | 红色;蓝色;绿色 | Aria;Symbol;宋体 |
ItemIndex | 0 | 2 |
由于RadioGroup1的IntemIdex为0,则第一项为初始被选中的项,即“红色”被选中,所以程序在初始化时应将Memo1中的文本颜色设置为红色;同样,RadioGruop2的初始项为第三项“宋体”(ItemIndex为2),也应在初始化时将Memo的文本字体设置为宋体。初始化语句放在Form1的OnCreate事件中,即在创建窗体时对Memo组件进行初始设置。相应得程序如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.Text:='这里是RadioGroup组件示例';
memo1.Font.Color:=clRed; //设定文本的初始颜色为红色
memo1.Font.Name:='宋体' //设定文本字体为宋体
end;
改变字体颜色的程序代码如下:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if radiogroup1.ItemIndex=0 then
Memo1.Font.Color:=clRed
else if radiogroup1.ItemIndex=1 then
Memo1.Font.Color:=clBlue
else
Memo1.Font.Color:=clGreen;
end;
改变字体的程序代码如下:
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
if radiogroup2.ItemIndex=0 then
Memo1.Font.Name:='Arial'
else if radiogroup2.ItemIndex=1 then
Memo1.font.name:='Symbol'
else Memo1.Font.Name:='宋体';
end;
程序界面如下图所示:
完整的程序代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Add('在末端添加文本');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.Text:='这里是RadioGroup组件示例';
memo1.Font.Color:=clRed;
//设定文本的初始颜色为红色
memo1.Font.Name:='宋体'
//设定文本字体为宋体
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Memo1.SelLength>0 then
Memo1.CutToClipboard;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if Opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Memo1.SelLength>0 then
Memo1.CopyToClipboard;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if Memo1.SelLength=0 then
Memo1.PasteFromClipboard;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
close;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
Memo1.Font.Style:=Memo1.Font.Style+[fsBold]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsBold];
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if checkbox2.Checked=true then
Memo1.Font.Style:=Memo1.Font.Style+[fsItalic]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsItalic];
end;
procedure TForm1.CheckBox3Click(Sender: TObject);
begin
if checkbox3.Checked=true then
Memo1.Font.Style:=Memo1.Font.Style+[fsUnderline]
else
Memo1.Font.Style:=Memo1.Font.Style-[fsUnderline];
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
if radiogroup2.ItemIndex=0 then
Memo1.Font.Name:='Arial'
else if radiogroup2.ItemIndex=1 then
Memo1.font.name:='Symbol'
else
Memo1.Font.Name:='宋体';
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if radiogroup1.ItemIndex=0 then
Memo1.Font.Color:=clRed
else if radiogroup1.ItemIndex=1 then
Memo1.Font.Color:=clBlue
else
Memo1.Font.Color:=clGreen;
end;
end.