2022年Delphi 应用编程实例简介Delphi教程.docx
2022年Delphi 应用编程实例简介Delphi教程 <-SSE WIDTH=100% SSE->1. 限制INI文件几法要利用.INI文件做程序有关数据的存储工作,就须要能读和写.INI文件,所以列了如下方法给大家参考:从.INI文件中获得字符串varstrResult:pchar;beginGetPrivateProfileString('windows', / 中标题的名字'NullPort', / =号前的名字'NIL', / 假如没有找到字符串时,返回的默认值strResult, /存放取得字符100, /取得字符的允许最大长度'c:forwin95win.ini' / 调用的文件名);edit1.text:=strResult; /显示取得字符串从.INI文件中获得整数edit1.text:=inttostr(GetPrivateProfileInt('intl', / 中标题的名字'iCountry', / =号前的名字0,/ 假如没有找到整数时,返回的默认值'c:forwin95win.ini' / 调用的文件名);向.INI文件写入字符串WritePrivateProfileString('windows', / 中标题的名字'load', / 要写入“=”号前的字符串'accca', /要写入的数据'c:forwin95win.ini' / 调用的文件名);向.INI文件写入整数WritePrivateProfileSection('windows', / 中标题的名字'read=100', / 要写入的数据'c:forwin95win.ini' / 调用的文件名);上面的方法是调用API函数,下面介绍另一种不用API从.INI文件中获得字符的方法var MyIni: TIniFile;beginMyIni := TIniFile.Create('WIN.INI');/调用的文件名edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');/取得字符end;向.INI文件中写入字符的方法var MyIni: TIniFile;beginMyIni := TIniFile.Create('WIN.INI');/调用的文件名DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:a.bmp');end;2.转让限制权有时由于长时间的循环语句占用了cpu的处理权,无法运行 其他程序,照成死循环。这时用以下吩咐转让限制权,让操作系统处理其他事务。Application.ProcessMessages;3.得到执行程序的书目SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 用哪一个?没有太大的关系。不过有以下的差别: ExtractFilePath 传回值的最後一个字元是反斜杠“”。procedure TForm1.Button1Click(Sender: TObject);beginShowMessage(ExtractFileDir(Application.Exename);/ ie: c:tempShowMessage(ExtractFilePath(Application.Exename);/ ie: c:tempend;相同点: 假如执行文件在根书目下(如:C:SAMPLE.EXE)的话, 两者的传回值相同, 且最终一个字符都是“”。4.打开已注册文件打开Windows已经注册的文件其实很简洁,依据以下代码定义一个过程:procedure URLink(URL:PChar);beginShellExecute(0, nil, URL, nil, nil, SW_NORMAL);end;在要调用的地方运用URLink('Readme.txt');假如是链接主页的话,那么改用URLink('');5.得到Windows用户名和序列号如何得到Windows的用户名称和产品序列号呢?1. 可以用 WNetGetUser() 这个函数来得到 user name;2. Windows 95 的产品序号可以用 TRegistry 到 Registry Database 中找出来;/ 取得用户名称function GetUserName: AnsiString;varlpName: PAnsiChar;lpUserName: PAnsiChar;lpnLength: DWORD;beginResult := ''lpnLength := 0;WNetGetUser(nil, nil, lpnLength); / 取得字串长度if lpnLength > 0 thenbeginGetMem(lpUserName, lpnLength);if WNetGetUser(lpName, lpUserName, lpnLength) = NO_ERROR thenResult := lpUserName;FreeMem(lpUserName, lpnLength);end;end; { GetUserName }/ 取得 Windows 产品序号function GetWindowsProductID: string;varreg: TRegistry;beginResult := ''reg := TRegistry.Create;with reg dobeginRootKey := HKEY_LOCAL_MACHINE;OpenKey('SoftwareMicrosoftWindowsCurrentVersion', False);Result := ReadString('ProductID');end;reg.Free;end;6.关闭外部应用程序如何在 Delphi 应用程序中, 去关闭外部已开启的应用程序?下面给出一段在 Delphi 中关闭“计算器”程序为例:varHWndCalculator : HWnd;begin/ find the exist calculator windowHWndCalculator := Winprocs.FindWindow(nil, '计算器'); / close the exist Calculatorif HWndCalculator <> 0 thenSendMessage(HWndCalculator, WM_CLOSE, 0, 0);end;7.查阅可视窗口标题下面只是举出一个例子供应参考:运用API函数GetWindow()协作GetWindowText()逐一查出各视窗的标题1. File | New Project 起先一个新的工程2. 在 Form1 中支配 Button 与 Memo 各一3. 在 Button1 的 OnClick 事务中撰写程式如下:procedure TForm1.Button1Click(Sender: TObject);varhCurrentWindow: HWnd;szText: array0.254 of char;beginhCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);while hCurrentWindow <> 0 dobeginif GetWindowText(hCurrentWindow, szText, 255)>0 thenMemo1.Lines.Add(StrPas(szText);hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);end;end;8.在Delphi编程中创建一个启动出现窗口通常写得好的Windows程序显示一个启动提示或封面,也叫做出现窗口。由于工程本身创建了程序的主窗口,一般状况下主窗口最先出现, 那么出现窗口如何出现在主窗口之前。page假如我们将主窗口的可视(Visible)属性设置为假,于工程启动时,是否能将主窗口短暂隐藏起来,以使出现屏幕最先出现呢?答案是不能。 因为应用程序自动在适当时候,使Form可视。(注:当一个Form用做子窗口或对话框, 不须要它们时,可视(Visible)属性设为假,可隐藏起Form。)那么我们怎么解决这个问题呢?有以下两种方法:方法一:调用Showmodal函数来实现。Showmodal方式使一个窗口为激活窗口, 和Show相像,但它令窗口模式化。现举一例说明:8.起先一个新工程。给表格起名为MainForm,MainForm的单元起名为Main, 工程文件起名为Test。8.在MainForm中插入一个Button部件,将其Caption属性设为“关闭”,为该部件的OnClick事务创建一个过程,并在过程的begin和end之间插入Close语句。8.在应用程序添加一个表格,将这个表格起名为MoveForm,MoveForm 的单元起名为Move。8.为便于演示,在MoveForm中插入一个Label部件,设置其Caption 属性为“欢迎进入本系统”。8.建立两个表格之间的关联。在Unit Main的 implementation 中加入语句 uses move;再为MainForm创建OnActivate事务。procedure TMainForm.FormActivate(sender:TObject);beginMoveForm.Showmodal;end;8.从Component模板的System类别中选择一个计时器(Timer),添加入 MoveForm表格中,设置其Interval属性为3000(可依据须要自定义),再为其OnTimer事务添加语句close;加入一个Timer部件目的是用以限制出现窗口显示时间。在此, MoveForm显示了3秒钟后关闭,主窗口MainForm自动被激活。8.编译、运行程序,就能得到延迟为3秒的出现窗口。方法二:你可通过修改工程文件中的源代码来实现,这在Delphi 的编程中是很少见的。现举一例详细说明:前四步同方法一。选择View/Project Manager,击Option按钮,选择结果Project Option 对话底部的Forms页栏目。留意,MainForm和MoveForm是在Auto-create forms 列表中。选择MoveForm并击右键头按钮,把这个表格移到 Available forms 。 全部的Delphi表格通过缺省方式自动在内存中建立, 因此它们要消耗内存和系统资源。在类似这里(程序运行时创建一个表格)的状况下, 你应当将表格从自动创建列表格中去掉。下一步修改工程的源代码。选择View/Project Source,修改begin和end之间的语句如下:程序清单Test.Dprprogram Testusesforms,Main in 'MAIN.PAS'{MainForm},Move in 'Move.PAS'{MoveForm}{$R *.RES}beginMoveForm:=TMoveForm.Create(Application);{Create创建出现窗口对象}MoveForm.Show;MoveForm.Update;Application.CreateForm(TMainForm,MainForm);MoveForm.Hide;MoveForm.Free;{Free从内存中释放对象}Application.Run;end.第一条语句创建了对象,该对象存在内存中,但还不能望见, 为了让它出现并更新它的内容,调用对象的Show和Update成员函数:Show和Update。 当出现窗口运用完后,用Hide函数将它隐藏起来,然后用Free函数释放它所占据的内存。假如此刻你编译和运行程序,MoveForm窗口一闪而过, 你可能将来得及看清。为使MoveForm窗口显示几秒种,我们可为MainForm的OnCreate 事务创建一个处理程序,延迟MoveForm窗口的显现时间。program TMainForm.FormCreate(sender:Tobject);varcurrentTime:LongInt;begincurrentTime:=GetTickCount d