Delphi应用程序的主窗体是在应用程序主体中创建的第一个窗体(窗口)。如果需要为Delphi应用程序实现某种授权,则可能需要在创建主窗体并向用户显示之前显示登录/密码对话框。简而言之,其思想是在创建主窗体之前创建、显示和销毁“登录”对话框。
创建新的Delphi项目时,“Form1”自动成为(全局应用程序对象的)MainForm属性的值。要将不同的表单分配给MainForm属性,请使用项目的表单页面>;设计时的“选项”对话框。当主窗体关闭时,应用程序终止。
让我们从创建应用程序的主窗体开始。创建一个包含一个表单的新Delphi项目。这种形式在设计上是主要形式。
如果您将表单的名称更改为“TMainForm”,并将单元另存为“main.pas”,则项目的源代码如下所示(项目另存为“PasswordApp”):
program PasswordApp; uses Forms, main in 'main.pas' {MainForm}; {$R *.res} begin Application.Initialize; Application.CreateForm(TMainForm, MainForm) ; Application.Run; end.现在,向项目中添加第二个表单。根据设计,添加的第二个表单将列在“项目选项”对话框的“自动创建表单”列表中。
将第二个表单命名为“tloginfo”,并将其从“自动创建表单”列表中删除。将装置另存为“login.pas”。
在表单上添加标签、编辑和按钮,然后使用类方法创建、显示和关闭登录/密码对话框。如果用户在密码框中输入了正确的文本,“Execute”方法返回true。
以下是完整的源代码:
unit login; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TLoginForm = class(TForm)登录按钮:t按钮;pwdLabel:TLabel;密码编辑:TEdit;程序登录按钮点击(发送方:ToObject);
publicclass function Execute : boolean;end; implementation{$R *.dfm} class function TLoginForm.Execute: boolean;beginwith TLoginForm.Create(nil) dotry Result := ShowModal = mrOk; finally Free; end;end; procedure TLoginForm.LogInButtonClick(Sender: TObject) ;beginif passwordEdit.Text = 'delphi' then ModalResult := mrOK else ModalResult := mrAbort; end; end.Execute方法动态创建tloginfo的实例,并使用showmodel方法显示它。直到表单关闭,ShowModal才会返回。当窗体关闭时,它返回ModalResult属性的值。
如果用户输入了正确的密码(“LogInButton”OnClick事件处理程序将“mrOk”分配给ModalResult属性(在上面的示例中为“delphi”)。如果用户提供了错误的密码,ModalResult将设置为“mrAbort”(可以是除“mrNone”之外的任何内容)。
将值设置为ModalResult属性将关闭表单。如果ModalResult等于“mrOk”(如果用户输入了正确的密码),则Execute返回true。
如果用户未能提供正确的密码,您现在只需确保未创建主窗体。
以下是项目源代码的外观:
program PasswordApp; uses Forms, main in 'main.pas' {MainForm}, login in 'login.pas' {LoginForm}; {$R *.res} beginif TLoginForm.Execute thenbegin Application.Initialize; Application.CreateForm(TMainForm, MainForm) ; Application.Run; endelsebegin Application.MessageBox('You are not authorized to use the application. The password is "delphi".', 'Password Protected Delphi application') ; end;end.请注意if-then-else块的用法,以确定是否应创建主窗体。如果“Execute”返回false,则不会创建MainForm,并且应用程序会在不启动的情况下终止。
希望掌握Delphi编程语言的初学者应该已经熟悉Microsoft Windows的基础知识。学习Delphi是最容易的,如果你从一个有指导的、基于教程的参考框架来学习它。 基本概念 从一堂历史课开始,介绍(Turbo)Pascal到Delphi 2005的演变,例...
简而言之,Delphi项目只是组成由Delphi创建的应用程序的文件集合。DPR是用于Delphi项目文件格式的文件扩展名,用于存储与项目相关的所有文件。这包括其他Delphi文件类型,如表单文件(DFM)和单元源文件(.PASs)。 由于Delphi...
...如何在应用程序运行时使用鼠标拖动和调整控件大小(在Delphi窗体上)。 运行时的表单编辑器 在窗体上放置控件(可视组件)后,可以调整其位置、大小和其他设计时特性。但是,在某些情况下,您必须允许应用程序的用...
...德 备注字段用于表示长文本或文本与数字的组合。使用Delphi构建数据库应用程序时,TMemoField对象用于表示数据集中的备注字段。TMemoField封装了包含文本数据或任意长度的字段的基本行为。在大多数数据库中,备注字段的大小受...
如果您打算成为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一...
...提供。 对于学生来说,控制台应用程序将简化Pascal和Delphi的学习——毕竟,所有Pascal入门示例都只是控制台应用程序。 新:控制台应用程序 下面介绍如何快速构建在没有图形界面的情况下运行的控制台应用程序。 如果...
在Delphi为支持通过网络(internet、intranet和local)交换数据的应用程序而提供的所有组件中,最常见的两个组件是TServerSocket和TClientSocket,这两个组件都旨在通过TCP/IP连接支持读写功能。 winsock和delphi套接字组件 Windows Sockets(W...
...活动,最终降低计算机的速度。 02 2006年 何时在delphi应用程序中创建表单 假设您要设计一个包含主窗体和两个附加(模态)窗体的程序。通常,根据您的Delphi版本,Delphi将把表单插入到项目单元(DPR文件)中,并包...
...拖动窗口。继续阅读,了解如何在没有标题栏的情况下为Delphi表单提供拖动功能,以便用户可以通过单击客户端区域的任意位置来移动表单。 例如,考虑一个没有标题栏的Windows应用程序的情况,我们怎样才能移动这样的窗口...
...中搜索通常是有用且必要的。在这里,您将看到如何使用Delphi的强大功能创建一个简单但功能强大的查找所有匹配文件项目。 文件/文件夹掩码搜索项目 下面的项目不仅允许您通过子文件夹搜索文件,还允许您轻松确定文件...