delphi制作登陆界面

合集下载

Delphi_7_用户界面设计

Delphi_7_用户界面设计
无模式对话框: 在它出现在屏幕的同时,用户还可以在 其他的窗口中进行工作。
有模式对话框: 在它出现在屏幕的时,用户一定要先对 它进行对话,关闭后才可以开出其他的工作窗口。
1. OpenDialog对话框 [例7-9] 设计【打开】对话框
2. SaveDialog组件 [例7-10] SaveDialog组件的使用
3.MessageDlgPos函数 function MessageDlgPos(constMag:string; DlgType:TMsgDlgType;Buttons:TmsgDlgButtons; HelpCtx:Longint;x,y:Integer):Word;
4.ShowMessage过程 Procedure ShowMessage(const Msg:string);
Close 和 SpeedBotton2的Click事件代码设成同样:
procedure TForm1.Close1Click(Sender: TObject); begin
Close; end;
状态栏组件栏中Standard卡,取Panel组件,形成长条, 准备作状态的承载面板。Caption: 空, Name: StatusPanel ,
[例7-7]
5. InputBox函数
function InputBox(const Acaption,Aprompt, AdefaultMsg:string;):string;
6. MessageDlgPosHelp函数
function MessageDlgPos(constMag:string; DlgType:TMsgDlgType;Buttons:TmsgDlgButtons; HelpCtx:Longint;x,y:Integer; const HelpFileName:string):Word;

Delphi数据库编程讲座---第十讲 启动窗口,登录窗口设计

Delphi数据库编程讲座---第十讲 启动窗口,登录窗口设计

第十讲启动窗口,登录窗口设计作为一个完整的程序,启动窗口(又称为flash窗口)、用户登录窗口都是应该具备的。

这里登录窗口与数据库有关,启动窗口的设计与数据库无关,但为了整个数据库程序的完整性,心铃还是给大家讲一下如何设计。

1 启动窗口。

现在绝大部分软件在启动时都会首先出现显示版权、公司标志或软件标志的一个窗口,有几秒种的延时,这就是启动窗口。

这个启动窗口一般来说有两个目的,上面说的是其一,是可视的,另外一个目的是对于复杂的软件、大型软件、数据库软件,由于在启动时有大量的初始化工作,有的程序可能需要十几秒的时间,如果不显示启动窗口用户还可能以为电脑死机了呢,显示启动窗口既宣传一下软件又可以让用户在程序初始化期间不致于感到心烦。

我们来研究一下这个启动窗口如何设计和运行。

设计制做一般都是在窗体上放置一个图片组件,让其充满整个窗体,调入已经设计好的图片。

然后设定此窗体的BorderIcons属性,将系统菜单、最大化最小化等按钮都取消,设定borderStyle属性为bsNone,即没有边框,这样运行后外观看来就是一幅图片。

这种设计制做大家可以各显神通。

接下来一个值得思考的问题是如何让这个窗口在其他窗口初始化之前就显示出来。

这需要手工写代码来实现。

我们在Project菜单下执行“View Source”就可以看到程序是如何初始化的,一般是这种形式:program lklb;…beginApplication.Initialize;Application.Title := '劳保管理';Application.CreateForm(TMainForm, MainForm);…Application.CreateForm(Tflashwin, flashwin);Application.Run;end.如果是这种形式肯定是不行的,因为flash窗体不可能在主窗体前运行。

下面是改写后的代码:var mydate:Tdatetime;{$R *.RES}beginflashwin:=Tflashwin.create(application);flashwin.show;flashwin.update;mydate:=gettickcount;while((GetTickCount-mydate) / 1000 <2) do;Application.Initialize;Application.Title := '社区卫生';Application.CreateForm(TMainForm, MainForm);…flashwin.Close;flashwin.free;Application.Run;上面这段代码首先创建启动窗口,并延时两秒种后初始化程序,在主窗口显示出来后再关闭启动窗口并释放内存。

Delphi实现软件中登录用户的操作权限

Delphi实现软件中登录用户的操作权限

Delphi实现软件中登录用户的操作权限经常在坛子里看到有朋友问如何对软件的登录用户,进行权限控制,可以设定到每一个菜单或按钮上,这里来实现一个最普通的方法,通过数据库,维护一个权限列表(里面有一个字段和节目上菜单项或Button等的tag对应),在执行时,通过到数据库去查询与之匹配的记录是否开通,来决定用户是否有权限。

数据库结构:包括两张表BaseData和UserRightData,BaseData中是一张基本表,里面不区分用户,UserRightData是用户权限表,结构和BaseData一样,只是多了用户字段,增加用户时,就是从BaseData表中复制数据到UserRightData中,并标识用户ID。

字段说明:FucCode:该字段与控件tag对应FucName:功能名称IsSel:是否有权限的标志IsFuc:标识该项是否是可以执行的功能FucPID:父节点ID,用来生成树形结构时用权限管理单元:UserRightCenterview plaincopy to clipboardprint?unit UserRightCenter;interfaceusesWindows, Messages, SysUtils, Classes, Forms, Dialogs,ADODB;typeTUserRight = classprivateFConnection : TADOConnection;FData: TADOQuery;FUserID: Integer;publicconstructor Create(AConnection:TADOConnection);overload;//根据用户id创建对应的权限列表function CreateRightListByUserID(uid:Integer):Boolean;//根据用户id取得对应的权限列表function GetRightListByUserID(uid:Integer):Boolean;//根据用户id删除对应的权限列表function DeleteRightListByUserID(uid:Integer):Boolean;//根据记录id设置某个功能是否可用,funid:记录id,uid:用户ID,issel:是否可用procedure SetFunEnable(funid,uid,issel:Integer);//判断某个功能是否可用function IsRightEnable(uid:Integer;fuccode:string):Boolean;procedure ShowUserRigthView(uid:Integer);property Connection: TADOConnection read FConnection;property Data: TADOQuery read FData;property UserID: Integer read FUserID write FUserID;end;implementationusesUserRightView;{ TUserRight }constructor TUserRight.Create(AConnection: TADOConnection);beginFConnection := AConnection;FData := TADOQuery.Create(nil);FData.Connection := FConnection;end;function TUserRight.CreateRightListByUserID(uid: Integer): Boolean;beginResult := False;DeleteRightListByUserID(uid);FData.Close;FData.SQL.Text := 'insert into UserRightData(fucid,fucpid,fuccode,fucname,IsFuc,IsSel,userid) '+'select fucid,fucpid,fuccode,fucname,IsFuc,IsSel,'+IntToStr(uid)+' from BaseData';FData.ExecSQL;Result := True;end;function TUserRight.DeleteRightListByUserID(uid: Integer): Boolean;beginResult := False;FData.Close;FData.SQL.Text := 'delete from UserRightData where userid='+IntToStr(uid);FData.ExecSQL;Result := True;end;function TUserRight.GetRightListByUserID(uid: Integer): Boolean;beginFData.Close;FData.SQL.Text := 'select * from UserRightData where UserID='+IntToStr(uid);FData.Open;end;function TUserRight.IsRightEnable(uid:Integer;fuccode: string): Boolean;beginFData.Close;FData.SQL.Text := 'select * from UserRightData where userid='+IntToStr(uid)+' and fuccode='+fuccode;FData.Open;if (FData.IsEmpty) or (FData.FieldByName('IsSel').AsInteger = 0) thenResult := FalseelseResult := True;end;procedure TUserRight.SetFunEnable(funid,uid,issel: Integer);beginFData.Close;FData.SQL.Text := 'update UserRightData set IsSel='+IntToStr(issel)+' where UserID='+IntToStr(uid)+' and FucID='+IntToStr(funid); FData.ExecSQL;end;//这是现实权限管理界面的,也就是在上面设置用户权限,这个大家可以根据自己的需要用不同的方式去展现procedure TUserRight.ShowUserRigthView(uid: Integer);varfrm: TfrmUserRightView;beginfrm := TfrmUserRightView.Create(nil);tryfrm.Caption := '用户权限列表';frm.SetUserRight(Self);Self.GetRightListByUserID(uid);frm.ShowModal;finallyFreeAndNil(frm);end;end;end.unit UserRightCenter;interfaceusesWindows, Messages, SysUtils, Classes, Forms, Dialogs,ADODB;typeTUserRight = classprivateFConnection : TADOConnection;FData: TADOQuery;FUserID: Integer;publicconstructor Create(AConnection:TADOConnection);overload;//根据用户id创建对应的权限列表function CreateRightListByUserID(uid:Integer):Boolean;//根据用户id取得对应的权限列表function GetRightListByUserID(uid:Integer):Boolean;//根据用户id删除对应的权限列表function DeleteRightListByUserID(uid:Integer):Boolean;//根据记录id设置某个功能是否可用,funid:记录id,uid:用户ID,issel:是否可用procedure SetFunEnable(funid,uid,issel:Integer);//判断某个功能是否可用function IsRightEnable(uid:Integer;fuccode:string):Boolean;procedure ShowUserRigthView(uid:Integer);property Connection: TADOConnection read FConnection;property Data: TADOQuery read FData;property UserID: Integer read FUserID write FUserID;end;implementationusesUserRightView;{ TUserRight }constructor TUserRight.Create(AConnection: TADOConnection);beginFConnection := AConnection;FData := TADOQuery.Create(nil);FData.Connection := FConnection;end;function TUserRight.CreateRightListByUserID(uid: Integer): Boolean;beginResult := False;DeleteRightListByUserID(uid);FData.Close;FData.SQL.Text := 'insert into UserRightData(fucid,fucpid,fuccode,fucname,IsFuc,IsSel,userid) '+'select fucid,fucpid,fuccode,fucname,IsFuc,IsSel,'+IntToStr(uid)+' from BaseData';FData.ExecSQL;Result := True;end;function TUserRight.DeleteRightListByUserID(uid: Integer): Boolean;beginResult := False;FData.Close;FData.SQL.Text := 'delete from UserRightData where userid='+IntToStr(uid);FData.ExecSQL;Result := True;end;function TUserRight.GetRightListByUserID(uid: Integer): Boolean;beginFData.Close;FData.SQL.Text := 'select * from UserRightData where UserID='+IntToStr(uid);FData.Open;end;function TUserRight.IsRightEnable(uid:Integer;fuccode: string): Boolean;FData.Close;FData.SQL.Text := 'select * from UserRightData where userid='+IntToStr(uid)+' and fuccode='+fuccode;FData.Open;if (FData.IsEmpty) or (FData.FieldByName('IsSel').AsInteger = 0) thenResult := FalseelseResult := True;end;procedure TUserRight.SetFunEnable(funid,uid,issel: Integer);beginFData.Close;FData.SQL.Text := 'update UserRightData set IsSel='+IntToStr(issel)+' where UserID='+IntToStr(uid)+' and FucID='+IntToStr(funid); FData.ExecSQL;end;//这是现实权限管理界面的,也就是在上面设置用户权限,这个大家可以根据自己的需要用不同的方式去展现procedure TUserRight.ShowUserRigthView(uid: Integer);varfrm: TfrmUserRightView;beginfrm := TfrmUserRightView.Create(nil);tryfrm.Caption := '用户权限列表';frm.SetUserRight(Self);Self.GetRightListByUserID(uid);frm.ShowModal;finallyFreeAndNil(frm);end;end;end.看一下主窗体的调用view plaincopy to clipboardprint?unit Main;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,UserRightCenter, StdCtrls, DB, ADODB;typeTfrmMain = class(TForm)Button1: TButton;Button2: TButton;Edit1: TEdit;Label1: TLabel;ADOConnection1: TADOConnection;Button3: TButton;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }FUserRight : TUserRight;public{ Public declarations }end;varfrmMain: TfrmMain;implementation{$R *.dfm}//现实用户权限列表procedure TfrmMain.Button1Click(Sender: TObject);beginerID := 1;FUserRight.ShowUserRigthView(1);end;procedure TfrmMain.FormCreate(Sender: TObject);begin//ADOConnection1是你的数据库连接ADOConnection1.Open;FUserRight := TUserRight.Create(ADOConnection1);end;//创建用户权限列表procedure TfrmMain.Button2Click(Sender: TObject);beginFUserRight.CreateRightListByUserID(StrToInt(Edit1.Text));end;//测试,查看权限,Button3的tag设置为10100003procedure TfrmMain.Button3Click(Sender: TObject);beginif FUserRight.IsRightEnable(1,IntToStr(TButton(Sender).Tag)) thenShowMessage('可以使用')elseShowMessage('你没有使用权限')end;end.unit Main;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,UserRightCenter, StdCtrls, DB, ADODB;typeTfrmMain = class(TForm)Button1: TButton;Button2: TButton;Edit1: TEdit;Label1: TLabel;ADOConnection1: TADOConnection;Button3: TButton;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }FUserRight : TUserRight;public{ Public declarations }end;frmMain: TfrmMain;implementation{$R *.dfm}//现实用户权限列表procedure TfrmMain.Button1Click(Sender: TObject);beginerID := 1;FUserRight.ShowUserRigthView(1);end;procedure TfrmMain.FormCreate(Sender: TObject);begin//ADOConnection1是你的数据库连接ADOConnection1.Open;FUserRight := TUserRight.Create(ADOConnection1);end;//创建用户权限列表procedure TfrmMain.Button2Click(Sender: TObject);beginFUserRight.CreateRightListByUserID(StrToInt(Edit1.Text));end;//测试,查看权限,Button3的tag设置为10100003procedure TfrmMain.Button3Click(Sender: TObject);beginif FUserRight.IsRightEnable(1,IntToStr(TButton(Sender).Tag)) thenShowMessage('可以使用')elseShowMessage('你没有使用权限')end;end.以上都是最基本的操作,没有考虑更多的细节,大家可以根据需要填充。

使用Delphi进行Windows应用程序开发教程

使用Delphi进行Windows应用程序开发教程

使用Delphi进行Windows应用程序开发教程第一章: Delphi简介Delphi是一种集成开发环境(IDE),用于编写Windows上的应用程序。

它基于Pascal语言,并提供了丰富的库和组件,使开发人员能够快速构建功能强大的应用程序。

在本教程中,我们将介绍Delphi的基本概念和工具,以帮助您入门。

第二章:环境设置在开始编写Delphi应用程序之前,我们需要设置开发环境。

首先,下载并安装Delphi IDE。

然后,我们将通过设置项目选项来配置编译器和调试器,以确保我们的应用程序能够顺利运行。

第三章:界面设计一个成功的应用程序离不开良好的用户界面设计。

Delphi提供了丰富的可视化设计工具,如窗体设计器和组件面板,帮助开发人员创建吸引人且易于使用的界面。

在本章中,我们将学习如何添加控件、设置属性以及处理事件。

第四章:数据操作应用程序通常需要与数据库进行交互,以存储和检索数据。

Delphi通过提供数据库连接组件和数据集组件,使得数据操作变得轻松。

我们将学习如何连接和配置数据库,以及如何使用数据集组件执行查询和更新操作。

第五章:文件操作文件操作是应用程序中常见的任务之一。

Delphi提供了用于文件操作的各种函数和组件,如文件读写和文件夹操作等。

我们将演示如何使用这些功能来读取、写入和管理文件。

第六章:多媒体处理现代应用程序通常涉及到音频、视频和图像处理。

Delphi提供了用于多媒体处理的组件和库,如音频播放器、视频解码器和图像处理功能。

我们将学习如何使用这些组件来实现音频、视频和图像的播放、录制和编辑。

第七章:网络通讯在互联网时代,网络通讯在应用程序中变得越来越重要。

Delphi提供了强大的网络编程库,如Socket和HTTP组件,使开发人员能够轻松地与服务器进行通讯。

我们将介绍如何使用这些组件来实现网络通讯功能。

第八章:调试和测试调试和测试是开发过程中必不可少的步骤。

Delphi提供了强大的调试工具,如断点和单步调试器,以帮助开发人员快速定位和解决问题。

delphi的精美界面设计

delphi的精美界面设计

Delphi界面设计专辑[前言:]界面的美观和用户亲和性是应用软件成功的首要条件,因此界面往往是程序员最费心的地方。

在这个专辑中,将向读者全面介绍Delphi中界面设计的原则和技巧窗体设计制作固定大小的Form固定的Form像一个对话框,何不试试下面的语句巧用Delphi制作溅射屏幕精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。

利用一点儿小小的内容,即可给程序的显示添加不少色彩LED数码管仿真显示程序在电子设备上广泛地使用LED数码管显示数据,在许多应用软件中也经常模拟LED数码管显示数据,使程序画面看起来很有特色菜单设计DELPHI中自适应表单的实现我们知道,屏幕分辨率的设置影响着表单布局,假设你的机器上屏幕分辨率是800*600,而最终要分发应用的机器分辨率为640*480,或1024*768,这样你原先设计的表单在新机器上势必会走样作非常规程序菜单掌握delphi高级秘籍大家可能见过诸如金山毒霸,瑞星杀毒,以及五笔输入法等等在系统托盘(即右下角有时间和输入法图标的地方)在的控制菜单,而在正常的任务栏(即屏幕最下方的“开始”按钮的右边的各式各样)中却不出现按钮的程序,即我们常说的在后台运行的程序用Delphi制作动态菜单所谓动态菜单是指菜单项随着程序的操作变化而变化。

现在,我们用Delphi来实现这一功能,具体步骤如下工具栏和状态条为Windows窗口标题栏添加新按钮对于我们熟悉的标准windows窗口来讲,标题栏上一般包含有3个按钮,即最大化按钮,最小化按钮和关闭按钮。

你想不想在Windows的窗口标题栏上添加一个新的自定义按钮用Delphi4实现风Word97格的工具栏用过Word97的人对它的工具栏印象很深刻,因为它的风格很“酷”,同样IE4.0的工具栏也有类似的风格,Win98的出现,使这种风格的工具栏得到了推广如何隐藏和显示Windows的任务条如果隐藏和显示Windows的任务条?仅仅调用以下的函数就可以.其他技巧Delphi利用Windows GDI实现文字倾斜在Delphi开发环境中,文字的输出效果一般都是头上脚下的"正统"字符,如何输出带有一定倾斜角度的文字以达到特殊的显示效果呢Delphi之三十六计之界面篇设置状态栏面板对象的Style为OwnerDraw,并在状态栏对象的DrawPanel事件中书写以下代码利用COM技术实现外壳扩展的属性页当用户在资源管理器中调用右键菜单时,会显示一个"属性"菜单项,点击属性菜单项会显示一个属性页,用户可以获得甚至修改文件信息制作固定大小的Form固定的Form像一个对话框,何不试试下面的语句?C++ Builder请参照Delphi的例子Delphi您可以覆写CreateParams() 这个TWinControl 的虚拟程序, 改变form的wc.Stylee, 将WS_SYSMENU 这个旗标解除, 这样, 就不会有左上角的SystemMenuBox 了.至於不能移动.缩小/放大, 可以自已拦下WM_NCHITTEST, 然後一概回应滑鼠点在视窗Client 区域, 相信这个视窗就呆呆的不会动了.详情可以查一下Win32API Help 的CreateWindow() 与WM_NCHITTEST 的说明.unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST;protectedprocedure CreateParams(var Params: TCreateParams); override;public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}巧用Delphi制作溅射屏幕精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。

delphi:用户登录窗口

delphi:用户登录窗口

delphi:用户登录窗口完成一个用户注册的例子。

界面设计如下:省份组合框的名字为:provinceBox城市组合框的名字为:cityBox要求:(1)省份组合框中输入:江苏省、河南省和山东省在省份的onchange事件中编写代码,当选择某个省份时,把当前选择省份的城市在城市组合框中显示出来。

(2)当点击注册按钮时,能把你所输入的所有信息都给显示出来。

步骤:1.画好上图的对话框,双击省份“ConboBox”添加代码如下:begincityBox.Items.Clear;if provineBox.ItemIndex = 0 thenbegincitybox.Items.Add('南京');citybox.Items.Add('苏州');citybox.Items.Add('扬州');citybox.Items.Add('宿迁');end;if provineBox.ItemIndex = 1 thenbegincitybox.Items.Add('郑州');citybox.Items.Add('岳阳');citybox.Items.Add('洛阳');citybox.Items.Add('商丘');end;if provineBox.ItemIndex = 2 thenbegincitybox.Items.Add('武汉');citybox.Items.Add('襄樊');end;if provineBox.ItemIndex = 3 thenbegincitybox.Items.Add('杭州');citybox.Items.Add('金华');citybox.Items.Add('宁波');citybox.Items.Add('嘉兴');end;end;2.单击“注册”添加余下的代码:3.总的代码如下:procedure TForm1.Button1Click(Sender: TObject);varusername,sex,password,hobby,birthday,phonenumber,provine,city:string;beginusername:=Edit1.Text;password:=Edit3.Text;birthday:=MaskEdit1.Text;phonenumber:=MaskEdit2.Text;provine:=provineBox.Text;city:=cityBox.Text;if RadioButton1.Checked then sex := '男'else if RadioButton2.Checked then sex := '女';//hobby:个人爱好!if CheckBox1.checked then hobby:='计算机编程';if CheckBox4.Checked then hobby:='游戏';if CheckBox2.checked then hobby:='唱歌';if CheckBox3.checked then hobby:='睡觉';//输出信息!showmessage(username + ',' +password + ','+ sex + ','+ hobby +',' + birthday + ',' + phonenumber + ',' + provine + ',' + city);end;procedure TForm1.provineBoxChange(Sender: TObject);begincityBox.Items.Clear;if provineBox.ItemIndex = 0 thenbegincitybox.Items.Add('南京');citybox.Items.Add('苏州');citybox.Items.Add('扬州');citybox.Items.Add('宿迁');end;if provineBox.ItemIndex = 1 thenbegincitybox.Items.Add('郑州');citybox.Items.Add('岳阳');citybox.Items.Add('洛阳');citybox.Items.Add('商丘');end;if provineBox.ItemIndex = 2 thenbegincitybox.Items.Add('武汉');citybox.Items.Add('襄樊');end;if provineBox.ItemIndex = 3 thenbegincitybox.Items.Add('杭州');citybox.Items.Add('金华');citybox.Items.Add('宁波');citybox.Items.Add('嘉兴');end;end;end.。

Delphi语言编写程序启动画面

Delphi语言编写程序启动画面

5280(2(+.=.5"+ 中 加 入 语 句 :,(, 2"?(J 再 为 W=5+1"#2 创建 7+9<.5?=.( 事件 % 8#"<(U:#( XW=5+1"#2D1"#29<.5?=.(F,(+U(#MX7@6(<.LJ @(Z5+ W"?(1"#2D3R"S2"U=0J (+UJ
从 A"28"+(+. 模板的 3/,.(2 类 别 中 选 择 一 个 计 时 器 )X52(# *! 添 加 入 W"?(1"#2 表 格 中 ! 设 置 其 )+.(#?=0 属 性 为 \]]] ) 可 根 据 需 要 自 定 义 *! 再 为 其 7+X52(# 事 件添加语句 <0",( + 加 入 一 个 X52(# 部 件 目 的 是 用 以 控 制 闪 现 窗 口 显 示时间 % 在此 ! W"?(1"#2 显示了 \ 秒钟后关闭 ! 主窗口
用 ^(08R5 语言 编写程序启动画面
徐科 ! 安徽省六安市医保中心 " 六安 !"#$$$ # 在启 动 程 序 之 前 出 现 启 动 或 提 示 画 面 ! 也 叫 做 闪 现窗口 ! 它往往能使编写的程序显得更成熟 " 实现的办 法 很 多 !有 些 是 采 用 窗 口 调 用 方 法 !有 些 是 采 用 #记 时 器 $ 来延时 % 下面介绍几种的方法 ! 给大家作参考 " 方法一 & 建一个启动封面窗体 ! 假设为 !"#$% ! 先设 置 好 &"#’(#)*"+, ’&"#’(#-./0(’1"#23./0( ’4",5.5"+! 接 着 在窗体上加入 图 片 框 ’ 文 本 框 ! 设 置 好 后 在 菜 单 里 选

delphi编程制作程序启动欢迎界面

delphi编程制作程序启动欢迎界面

delphi编程制作程序启动欢迎界面以前没接触过编程的时候,看到一些软件启动的时候总有欢迎界面,如灰鸽子启动界面.就一直很想学会这个,现在这里有个制作欢迎界面的代码的详细分析,大家参考下登陆窗体命名為:loginform.找到工程文件(Project -> View Source),找到如下代碼部分:beginApplication.Initialize;Application.CreateForm(TForm1, Form1);Application.CreateForm(Tloginform, loginform);Application.Run;//到此,程序執行end.登陸窗體可以設置成在程序執行前創建:beginApplication.Initialize;//初始化loginform:=tloginform.Create(application);//動態創建啟動窗體loginform.Show;//顯示loginform.Update;sleep(2000);//系統延時2秒loginform.Hide;//2秒后啟動窗體隱藏Application.CreateForm(TForm1, Form1);Application.CreateForm(Tloginform, loginform);loginform.Free;//釋放啟動窗體Application.Run;end.制作啟動(歡迎)窗體的另一種方法(轉載...當然自己也使用過~~):设置封面窗体属性使之符合启动封面要求。

请修改下列封面窗体属性:Position = PoscreenCenter//运行时居于屏幕中央Autosize = true//自动适应Image控件,使启动图片完整显示BorderStyle = bsnone//窗口无标题栏及最大化、最小化及关闭按钮和边框Name = splashform程序代码解析选择主菜单下的Project/View Scource 命令,打开这个项目的项目文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

///////////////////// (一)项目文件 test.dpr //////////////////////
program SerialGet;
uses
Forms,
UMain in UMain.pas {frmMain},
ULogin in ULogin.pas {frmLogin},
UDataModule in UDataModule.pas {DataModule1: TDataModule},
{$R *.res}
begin
Application.Initialize;
if CreateMutex then //创建句柄,判断此应用程序是否在运行
begin
//调用全局函数,创建并显示登陆界面
if doLogin then //登陆成功
begin
Application.CreateForm(TfrmMain, frmMain);
//数据模块文件不须在这儿创建,因为 ULogin.pas 中已创建
//Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end else //登陆不成功
begin
try
DataModule1.free;
Application.terminate;
except
end;
end;
end else
begin
DestroyMutex; //释放句柄 end;
end.
//////////////// (二)登陆窗体 ULogin.pas ULogin.dfm //////////////////
unit ULogin;
interface
uses ......
type
... ... ...
private
function checkPsw:integer;
public
end;
var
frmLogin: TfrmLogin;
function doLogIn:boolean; // 全项目公用函数
function CreateMutex: Boolean; // 全项目公用函数
procedure DestroyMutex; // 全项目公用函数
implementation
uses UDataModule; //引用数据模块
var Mutex: hWnd;
{$R *.dfm}
function doLogIn:boolean; //由项目文件调用此函数begin
with TfrmLogin.create(application) do //创建并显示登陆界面
begin
//窗体的ShowModal属性
if ShowModal = mrok then result := true else result := false;
free;
end;
end;
procedure DestroyMutex;
begin
if Mutex <> 0 then CloseHandle(Mutex);
end;
function CreateMutex: Boolean;
var
PrevInstHandle: THandle;
AppTitle: PChar;
begin
AppTitle := StrAlloc(100);
StrPCopy(AppTitle, Application.Title);
Result := True;
Mutex := Windows.CreateMutex(nil, False, AppTitle);
if (GetLastError = ERROR_ALREADY_EXISTS) or (Mutex = 0) then begin
Result := False;
SetWindowText(Application.Handle, );
PrevInstHandle := FindWindow(nil, AppTitle);
if PrevInstHandle <> 0 then begin
if IsIconic(PrevInstHandle) then
ShowWindow(PrevInstHandle, SW_RESTORE)
else
BringWindowToTop(PrevInstHandle);
SetForegroundWindow(PrevInstHandle);
end;
if Mutex <> 0 then Mutex := 0;
end;
StrDispose(AppTitle);
end;
// -1: 密码不对 1:数据库不对 2:没有此用户 3:合法
function TfrmLogin.checkPsw:integer;
var name,sPsw,SQL,sValue:string;
begin
Application.CreateForm(TDataModule1, DataModule1); //此处创建了数据模块 if not DataModule1.ConnOK then
begin result := 1; exit; end;
name := lowercase(editName.text); //文本框
sPsw := lowercase(editPass.text); //文本框
sql := select * from maker where name="+name+";
if openSQL(SQL,DataModule1.dsDataSet) <=0 then
begin result := 2; exit; end;
DataModule1.dsDataSet.First ;
sValue := lowercase(DataModule1.dsDataSet.fieldbyName(loginPsw).asString);
if sValue<>sPsw then result := -1 else result := 3;
end;
///////////////////// (三)数据模块UDataModule.pas ////////////////////// ... ... ... ...
type
public
ConnOK:boolean;
end;
var
DataModule1: TDataModule1;
function OpenSQL(s: string;query:TADODataSet):integer;
function DoSQL(s: string;query:TADOQuery):boolean;
implementation
{$R *.dfm}
procedure TDataModule1.DataModuleCreate(Sender: TObject); //连接ADOConnection var SQL,pwd:string;
begin
try
pwd := deliSerial;
SQL := Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+
extractfilepath(paramstr(0))+SerialInfo.mdb+
;Persist Security Info=False; +
Jet OLEDB:Database Password="+pwd+";
ADOConnection1.Connected := false;
ADOConnection1.ConnectionString := SQL;
ADOConnection1.Connected := true;
ConnOK:=true;
except
ConnOK:=false;
end;
end;
function OpenSQL(s: string;query:TADODataSet):integer; //查询SQL
var old_Cursor:TCursor;
begin
old_Cursor:=screen.cursor;
screen.cursor:=crSQLWait;
try
try
with query do
begin
close; commandtext:=s; open;
result:=query.recordcount; //返回结果集记录数 end;
except
result:=0;
end;
finally
screen.cursor:=old_Cursor;
end;
end;
function DoSQL(s: string;query:TADOQuery):boolean; //运行 SQL var old_Cursor:TCursor;
begin
result:=true;
old_Cursor:=screen.cursor;
screen.cursor:=crSQLWait;
try
try
with query do
begin
close; SQL.Clear; SQL.Add(s); ExecSQL;
end;
except
result:=false;
end;
finally
screen.cursor:=old_Cursor;
end;
end;。

相关文档
最新文档