这几天很郁闷,女友结婚新郎不是我。
虽然我很早就知道我和她性格差别很大,彼此也已没什么感情联系。只是偶尔去帮她搞搞电脑,或者做一些力气活儿。
她很笨,思维也很不稳定。几分钟之内可以有好多种想法。常常事情做一半了又想去做别的。
长的又不漂亮,矮,眼大,鼻大,厚嘴唇。和我想像中的美女差的很远。
可是当她告诉我她已经和一个男的拿了结婚证的那一分钟,我居然在电脑前呆了。大脑一片空白。
回过神后细想,也许她嫁给别人也好。和我在一起,只会天天吵架。
//-------------------------------------------------------------------------------------
效果图如下:
此主题相关图片如下:
//------------------------------------------------------------------------------------
unit Unit1; //单元名称,需要和文件同名
interface //接口段
uses //需要引入的单元。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Inifiles, Buttons, StdCtrls{在这里是我们手动引入的一个单元};
type //类型定义标识符
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDblClick(Sender: TObject); //派生一个窗口类
private //定义私有成员
{ Private declarations }
public //公有成员
{ Public declarations }
end;
var
Form1: TForm1; //为这个Tform1窗口类生成一个实例
type
TQQButton=Class(TBitBtn) //我们为每一个按钮定义一个类。
public
BG_Image:string;//按钮的背景图片地址
procedure SetBG(path:string);//设置背景过程
constructor Create1(Form:Tform;title:string;Bwidth,Bheight:integer); //创造我们自己的构生函数
destructor Destroy(); //类的自杀过程。类结束时产生的事件
private
end;
implementation
var //在这里定义的可以理解为全局函数。虽然它并不是真正意义上的全局
but:array of TQQbutton; //定义按钮数组在这里我们还不知道要有多少个按钮
BootIni:Tinifile; //读Ini文件的类。注意:要用这个功能在要引入inifiles单元
inBut:integer;
{$R *.dfm}
{ TQQButton }
constructor TQQButton.Create1(Form: Tform;{父窗口}
title:string;{标题}
Bwidth,Bheight:integer);{尺寸}
begin
inherited Create(form1);{先执行bitbin的构成函数}
self.Parent:=form; //设置父窗口
self.Width:=Bwidth; //设置尺寸
self.Height:= Bheight;
self.ShowHint:=true; //我这里不是标题而是hint,游动说明
self.Hint:=title;
end;
destructor TQQButton.Destroy;
begin
inherited Destroy;
end;
procedure TQQButton.SetBG(path:string); //设置背景
begin
self.BG_Image:=path;
self.Glyph.LoadFromFile(bg_image);
end;
//-------------------------------TQQButton类定义结束
procedure TForm1.FormCreate(Sender: TObject);
var
str:Tstringlist;
i,Bwidth,Bheight:integer;
begin
BootIni:=Tinifile.Create('.\setup.ini');
Form1.Caption:=BootIni.ReadString('boot','标题','默认标题');
Bwidth:=bootIni.ReadInteger('boot','按钮宽',80);
Bheight:=bootIni.ReadInteger('boot','按钮高',20);
str:=Tstringlist.Create; //看清楚了,这里是Tsgringlist类不是string的变量,Tstringlist是一个重要的字符类
BootIni.ReadSections(str); //读入ini文件里所有的[]号里的字段放天str里
inBut:=str.Count; //取总数
setLength(but,inBut); //设置有多少个按钮setlength是一个重设数组函数
for i:=1 to inbut-1 do//在这里我们从1开始读的不是从0因为第一个是我们用来放一些重要参数的。
begin
but[i]:=TQQbutton.Create1(form1,str.Strings[i],Bwidth,Bheight);
but[i].SetBG('.\image\'+str.Strings[i]+'.bmp'); //设置按钮的图片为image目录下的同名的bmp文件
but[i].Top:=but[i].Height*i; //设置按钮的位置
but[i].OnClick:=FormDblClick; //设置被按下时产生的事件
but[i].Ctl3D:=false;
end;
str.Free;
end;
function RightPath(path:string):string ; //校验路径是不是以\结束的函数
begin
if path[length(path)]<>'\' then
path:=path+'\';
Result:=path;
end;
procedure TForm1.FormDblClick(Sender: TObject);
var
Title,path,ExeFile:string;
begin
if sender is TQQbutton then //查看sender参数是不是TQQbutton类。
begin
Title:=TQQbutton(sender).Hint; //取标题
path:=bootIni.ReadString(title,'地址','默认地址');
path:=RightPath(path);
ExeFile:=bootIni.ReadString(title,'执行文件','默认地址');
winexec(pchar(path+ExeFile),1); //这个函数很熟悉了吧?如果有兴趣可以看看ShellExecute这个函数。是它的升级版
form1.Close;//我们也可以在这里做一个执行QQ后就退出程序的出口
end;
end;
end.
//------------------------------------------------------------------
看不太懂者请下载源码后认真研究。然后在群里问我。
<script language="javascript" type="text/javascript"></script>