1

源程序下载
1：界面色彩渐变效果的实现

界面色彩渐变效果是通过用渐变的画刷刷绘依次相邻的矩形块实现的。下面
列举实例说明:
1.新建一个表单,假设其Width为500,设置一个按钮Button1,按此按钮将把表单置为由左向右由黄变白的渐变效果。
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:Integer;
Dct:TRect;
begin
j:=Form1.height; //获得表单高度
for i:=0 to 255 do //此处设置RGB()中一个颜色值
begin
Canvas.Brush.Color:=RGB(255,255,i); //每次画矩形的画刷颜色
Dct:=Rect(i*2,0,(i+1)*2,j); //每次刷绘的矩形区域
Canvas.FillRect(Dct); //填充颜色
end;
end;
2：图形整体拉出效果

单纯的图形整体拉出效果比较简单,动态地改变图形区域的大小就可以实现, 但事先应将图形的“Stretch”设置为“True”。举例说明下拉效果:
1.在表单上放置一图片,属性“Height”设为0,“Stretch”设置为True。添加“Timer”构件, “Interval”设为200,“Enable”设为False。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Height:=Image1.Height+20; //设置增量
if image1.Height>Form1.Height-50 then Timer1.Enabled:=FALSE; //图形整体拉出完毕
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := True ;
Image1.Height := -1 ;
end;
3：窗体的系统菜单添加到窗体的菜单条上
制作方法：在Form1放置一个MainMenu1，并且创建一个菜单项File1，同时在Private的声明部分说明一个过程Procedure SystemMenuClick(Sender: TObject);，本程序的运行：单击Button3就可以执行。
procedure TForm1.Button3Click(Sender: TObject);
var
item: TMenuItem;
sysmenuHandle: HMENU;
i, itemcount: Integer;
buffer: array [0..128] of Char;
itemID: Integer;
itemflags: DWORD;
begin
handleNeeded;
sysmenuHandle := GetSystemMenu( handle, false ); //得到系统菜单的handle
If sysmenuHandle <> 0 Then
Begin
itemcount := GetMenuItemcount( sysmenuHandle ); //得到系统菜单的个数
for i:= 0 to itemcount - 1 do
begin
itemflags := GetMenuState( sysmenuhandle, i, MF_BYPOSITION ); //得到指定菜单项的当前状态
If (itemflags and MF_SEPARATOR) = MF_SEPARATOR Then //如果是横线
item := NewLine
Else Begin
GetMenuString( sysmenuhandle, i, buffer, sizeof(buffer),MF_BYPOSITION ); //得到指定菜单项的Caption
itemID := GetMenuItemID( sysmenuhandle, i ); //得到指定菜单的在系统菜单中的ID
item := NewItem( buffer, 0,
(itemflags and MF_CHECKED) = MF_CHECKED,
(itemflags and (MF_DISABLED or MF_GRAYED)) = 0,
SystemMenuClick,
0,
format('Sysmenu_%d',[itemid])); //创建新的MenuItem
item.tag := itemID;
End;
File1.Add( item );
end;
End;
end;
procedure TForm1.SystemMenuClick(Sender: TObject);
begin
With Sender As TMenuitem do
Self.perform( WM_SYSCOMMAND, Tag, 0 );
end;
源程序下载