您正在查看: 编程语言 分类下的文章

自动停靠的菜单

-->



实例146 自动停靠的菜单

本实例制作一个工具栏风格的可以自动停靠的菜单。

在窗体中添加一个TMainMenu组件,并且为它添加两个选项——FileEdit。然后向窗体上添加一个TControlBar组件,设置它的Align属性值为alTop。最后选中TControlBar组件,然后在组件工具栏中双击TToolBar组件,这样就会把TToolBar组件添加到TControlBar组件上,通过这样的方法向TControlBar上添加两个TToolBar组件,设置TToolBar组件的Menu属性为TMainMenu组件。

设计完成的窗体如图8-39所示。

8-39 界面

保存文件,然后按F9键运行程序,程序运行的初始画面如图8-40所示。

在程序运行的过程中,可以通过鼠标拖动来改变工具栏风格的菜单的位置,并且可以自动停靠,如图8-41所示。

8-40 程序运行的初始画面8-41 程序运行结果


自定义TEdit的允许输入字符

-->



实例144 自定义TEdit的允许输入字符

本实例演示如何自定义TEdit组件的允许输入字符。

向窗体上添加一个TEdit组件,用于显示用户输入的字符。添加组件后的窗体如图8-34所示。

8-34 添加组件后的窗体

TEdit组件有一个OnKeyPress事件,在该事件中有一个Key参数,其中存储了用户当前输入的字符,如果设置这个参数为#0,就可以屏蔽用户的输入,从而实现自定义输入字符的功能,为此添加响应代码如下:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', '.']) then

begin

Key:=#0 ;

end;

end;

程序会判断用户输入的字符,如果范围不在从09的数字和小数点两者之中,那么就设置Key参数为#0,从而屏蔽用户的输入;反之正常显示用户的输入。

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9', '.']) then

begin

key:=#0 ;

end;

end;

end.

保存文件,然后按F9键运行程序,程序运行结果如图8-35所示,在TEdit组件中只能够接受数字和小数点。

8-35 程序运行结果

利用与本实例相同的方法可以任意控制TEdit组件的输入字符。


设置TListView的显示风格

-->



实例142 设置TListView的显示风格

本实例演示如何在程序运行过程中动态更改TListView组件的显示风格。

在窗体中添加一个TImageList组件,并且为它添加6个图像文件。然后添加一个TListView组件,设置它的LargeImagesSmallImages属性为TImageList组件,为TListView组件添加6个列表项,并且设置列表项的ImageIndex属性分别对应TImageList组件中的图像索引编号。最后添加一个TComboBox组件。

添加组件后的窗体如图8-29所示。

8-29 添加组件后的窗体

在程序运行初期,首先为TComboBox组件添加4个列表项——vsIconvsListvsReportvsSmallIcon,并且通过self.ComboBox1.ItemIndex:=0语句选中第1个列表项。然后为TListView组件添加一列,并设置它的显示风格为vsIcon。响应代码如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

self.ComboBox1.Items.Add('vsIcon');

self.ComboBox1.Items.Add('vsList');

self.ComboBox1.Items.Add('vsReport');

self.ComboBox1.Items.Add('vsSmallIcon');

self.ComboBox1.ItemIndex:=0;

self.ListView1.Columns.Add();

self.ListView1.ViewStyle :=vsIcon

end;

如果用户在TComboBox组件中选择了新的显示风格,那么就会通过以下代码来动态更改TListView组件的ViewStyle属性以适应用户的选择:

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

if self.ComboBox1.ItemIndex=0 then

self.ListView1.ViewStyle :=vsIcon

else if self.ComboBox1.ItemIndex=1 then

self.ListView1.ViewStyle :=vsList

else if self.ComboBox1.ItemIndex=2 then

self.ListView1.ViewStyle :=vsReport

else

self.ListView1.ViewStyle :=vsSmallIcon;

end;

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ImgList, StdCtrls;

type

TForm1 = class(TForm)

ListView1: TListView;

ImageList1: TImageList;

ComboBox1: TComboBox;

procedure FormCreate(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

self.ListView1.Columns.Add();

self.ComboBox1.Items.Add('vsIcon');

self.ComboBox1.Items.Add('vsList');

self.ComboBox1.Items.Add('vsReport');

self.ComboBox1.Items.Add('vsSmallIcon');

self.ComboBox1.ItemIndex:=0;

self.ListView1.ViewStyle :=vsIcon

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

if self.ComboBox1.ItemIndex=0 then

self.ListView1.ViewStyle :=vsIcon

else if self.ComboBox1.ItemIndex=1 then

self.ListView1.ViewStyle :=vsList

else if self.ComboBox1.ItemIndex=2 then

self.ListView1.ViewStyle :=vsReport

else

self.ListView1.ViewStyle :=vsSmallIcon;

end;

end.

保存文件,然后按F9键运行程序,程序运行的初始画面如图8-30所示。

TComboBox组件中选择显示风格为vsReport,程序运行的结果如图8-31所示。

8-30 程序运行的初始画面8-31 程序运行结果


使TEdit只接受数字输入

-->



实例143 使TEdit只接受数字输入

本实例演示如何让TEdit组件只能够接受数字输入。

向窗体上添加一个TEdit组件,用于显示用户输入的数字。添加组件后的窗体如图8-32所示。

8-32 添加组件后的窗体

添加窗体初始化代码如下:

procedure TForm1.FormCreate(Sender: TObject);

var

wl:Integer;

begin

wl:=GetWindowLong(Edit1.Handle, GWL_STYLE);

SetWindowLong(Edit1.Handle, GWL_STYLE, wl or ES_NUMBER);

end;

程序首先通过GetWindowLong 函数取得TEdit组件的窗口风格,然后为TEdit组件追加设置新的窗口风格——ES_NUMBER,设置新风格后的TEdit组件就只接受数字输入了。

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

wl:Integer;

begin

wl:=GetWindowLong(Edit1.Handle, GWL_STYLE);

SetWindowLong(Edit1.Handle, GWL_STYLE, wl or ES_NUMBER);

end;

end.

保存文件,然后按F9键运行程序,程序运行结果如图8-33所示,在TEdit组件中只能够接受数字。

8-33 程序运行结果


利用TChartfx制作饼图

-->



实例141 利用TChartfx制作饼图

本实例演示如何利用TChartfx组件制作一个饼图。

向窗体上添加一个TChartfx组件,用于显示饼图。添加组件后的窗体如图8-27所示。

8-27 添加组件后的窗体

添加窗体初始化代码如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

Chartfx1.ChartType := Pie;

Chartfx1.OpenDataEx(COD_VALUES, 1, 3);

Chartfx1.ThisSerie := 0;

Chartfx1.Value[0] := 10;

Chartfx1.Value[1] := 20;

Chartfx1.Value[2] := 15;

Chartfx1.CloseData(COD_VALUES);

end;

程序首先通过Chartfx1.ChartType:=Pie语句设置TChartfx组件的图表类型为饼图,然后通过OpenDataEx函数和CloseData函数中间的语句添加了为绘制饼图所需要的3个数据——102015,这样饼图就会分成3个区域,分别代表102015

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, OleCtrls, Chartfx3;

type

TForm1 = class(TForm)

Chartfx1: TChartfx;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Chartfx1.ChartType := Pie;

Chartfx1.OpenDataEx(COD_VALUES, 1, 3);

Chartfx1.ThisSerie := 0;

Chartfx1.Value[0] := 10;

Chartfx1.Value[1] := 20;

Chartfx1.Value[2] := 15;

Chartfx1.CloseData(COD_VALUES);

end;

end.

保存文件,然后按F9键运行程序,程序运行结果如图8-28所示。

8-28 程序运行结果