




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 创建应用程序界面,本章学习要点 l 学习窗体组件的作用及其设计 l 学会为窗体编制事件处理方法程序 l 掌握菜单的设计方法 l 掌握弹出式菜单的设计方法 l 学习有数据源和无数据源窗体的设计方法,应用程序要展示给用户的主要界面形式是窗体,用户要通过程序员提供的窗体来进行操作,或者获取所希望的信息。因此,为计算机信息系统设计美观和友好的应用程序界面,是一项非常重要的内容。窗体是可视化编程中最基本的组件,任何一个可视化编程工具都提供了这一组件。在设计完管理信息系统的数据库之后,就应该为用户设计合适的应用程序窗体了,提供程序与用户交流的一个窗口,可以说,没有窗体,应用程序的框架就很难建立起来
2、。 窗体是Delphi基本的构造模块,Delphi所有的可视化程序设计工作都是在窗体上进行的。在程序运行之后,这些窗体实际上就是显示出来的最主要的人机界面。无论是需要进行信息查看,还是需要对数据库系统中的数据进行添加、修改、删除等编辑操作,信息系统的使用者对数据库中数据所进行的任何操作均在窗体中进行。,4.1 窗体与组件,在Windows环境中,人机交互主要是在一些窗体和对话框中进行的。在Delphi中,窗体指的就是窗口和对话框,进行可视化程序设计一般就是从窗体开始并在窗体中完成的。窗体与组件的关系非常密切。窗体就像一个可以放置东西的桌面,可以根据任务的需要在窗体上放置各种各样的组件。 从程序
3、设计的角度来看,一个窗体对应一个存放源程序的单元文件。其中窗体展示的是程序运行时的操作界面,而单元文件定义了窗体中所有组件的对象(包括属性、事件和方法)以及对它们的操作。,从视觉的角度来看,窗体可以包含很多组件的对象。但这并不是说窗体类包含了组件类型或者说窗体是组件的父类。事实上窗体和组件都是从TComponent类继承下来的,它们都有公共的TObject祖先类。窗体类是从TComponent类派生的TForm类,所以可以将窗体看成一个特殊的组件,如Panel组件。Delphi中的所有组件都被封装在可视化组件库VCL中,集成开发环境中的组件面板就是VCL的实现。 在窗体中进行可视化程序设计时要
4、涉及到VCL组件面板中的组件和在该窗体对应的单元文件上编写代码,这种关系可通过第2章的图2-1来表示:在组件面板上选择需要的组件放在窗体Form上;在对象查看器中设置该组件对象的属性;窗体的单元文件会自动生成窗体中的组件对象的信息以及在单元文件中编写程序处理代码。,4.2 窗体基本控件及其应用,除窗体之外,还有种类繁多、性能各异的其它组件,它们都是Delphi应用程序设计和实现的基本单元。学习Delphi程序设计,首先要学会常用组件的使用方法。在窗体中可以添加各种对象,进行窗体的界面设计。向窗体中添加对象的方法是,首先单击相应组件板的控件图标,接着在窗体的适当位置按下鼠标左键并拖动鼠标,即可画
5、出相应的对象。,在Delphi中,组件是可视化编程的基础,程序员用它来设计用户界面,并且给予应用程序一些非可视化功能。对于两种不同类型的Delphi开发者应用程序开发者(Application Developer)和可视化组件编写者,组件有不同的含义。对于应用程序开发者来说,组件就是从组件面板上得到的一个实实在在的事物,一般被放在窗口上。应用程序开发者可以修改其属性并且建立事件的处理过程,从而得到组件的外观和内在的作用。这个过程的完成,是应用程序开发者工作的核心和主要工作内容。对于组件编写者来说,组件只是对象PASCAL语言中的对象,这些对象可以封装系统提供的行为元素(包括Windows的标准
6、组件),一个组件的代码构成了该组件的全部行为。 由于Delphi提供了丰富且功能强大的组件,程序员就可以集中精力去创建应用程序,而不必从头开始去创建GUI、数据库功能和程序之间的通信。程序员更注重的是程序整体的规划和设计,而不再是怎样编写一句句的重复和冗长的代码。一切都是这么简单,大体的框架总是已经搭好了,紧接着的任务就是根据不同的需要把它们组装起来。如图4-1所示的是Delphi的组件面板。,图4-1 Delphi的组件面板 4.2.1 标签和编辑框 在开发基于对话框应用程序的时候,标签和编辑框组件是利用相当广泛的组件。标签和编辑框的使用是任何一个程序员必须掌握的知识,下面将介绍标签和编辑框
7、的使用方法,1 Label标签 标签是Delphi中最简单的组件,用于显示字符串,通常显示的是文字说明信息。在Windows程序设计过程中,标签(Label)是常用的组件之一,它是从TCustomLabel继承下来的,而TCustomLabel又是从TGraphicControl继承下来的。 由于Label是一个典型的非窗口组件,它没有窗口句柄,也不会有输入焦点,但可以把它与标注的组件关联,以后,当用户按下这个标签的加速字符时(按鼠标无效),输入焦点将自动移到关联的组件上。也就是在标签中设置热键,在Caption属性值中输入含有“var Key: Char); begin if not (ke
8、y in0.9,#8) then key:=#0;/过滤非数字字符,只允许输入09这10个数字以及键盘上的退格键“” end; 掩码编辑框(MaskEdit组件),与编辑框组件大部分的属性和方法都是类似的,主要区别在于它的数据输入有格式要求,常用来定制想要的数据格式。,MaskEdit组件最重要的属性是EditMask,如图4-2所示是设置输入查询条件区、栋文本框EditMask属性时的界面。屏蔽字符串用分号隔成了三部分。第一部分是屏蔽本身,它确定了字符串的格式;第二部分指明了屏蔽字符是否作为数据的一部分,其中0表示屏蔽字符不作为数据的一部分,1表示屏蔽字符作为数据的一部分。第三部分指明了用什
9、么样的字符代替未输入的字符。可以看到,系统以及提供了一系列的标准屏蔽格式,有phone和date等等。当输入的数据不符合要求时,编辑框将不接受输入。,图4-2 MaskEdit组件的EditMask属性设置 Memo组件的文本内容可以是多行显示,其行号是从0开始计算的。它的很多属性和方法都与Edit编辑框类似,不同之处是它提供了一个Lines属性,通过这个属性可以调用一系列方法。Lines常用方法介绍如下:,l 增加一行并返回新行的行号: Memo1.Lines.Add(new string);或 Memo1.Lines.Add(edit1.Text); l 增加一行但不返回新行的行号: Me
10、mo1.Lines.Append(new string);或Memo1.Lines. Append (edit1.Text); l 删除第三行:Memo1.Lines.Delete(2); l在第三行插入某一行内容:Memo1.Lines.Insert(2,new string); l 把第三行移到第五行:Memo1.Lines.Move(2,4); 3标签和编辑框示例 前面介绍了标签和编辑框组件的一些基本知识,下面通过一个实例来体会一下这些组件的应用。其创建步骤如下。,第一步:在窗体上添加3个Edit组件、1个MaskEdit组件、1个Memo组件、4个Label标签、7个位图按钮。 第二步
11、:添加事件响应代码。每一个编辑框可以分别输入内容,然后按下【】按钮就可以把对应编辑框的内容传递给Memo组件。【】按钮的OnClick事件的代码如下: procedure TForm1.BitBtn1Click(Sender: TObject); begin if edit1.text then Memo1.Lines.Add(edit1.text); /将edit1文本框中的内容递给memo1组件 end; procedure TForm1.BitBtn4Click(Sender: TObject); begin if MaskEdit1.text then Memo1.Lines.Add(
12、MaskEdit1.text); /将掩码编辑框MaskEdit1的内容递给memo1组件 end;,当按下【确定】位图按钮时,把所有不为空的编辑框内容递给memo1组件 procedure TForm1.BitBtn9Click(Sender: TObject); begin if edit1.Text then Memo1.Lines.Add(edit1.text); if edit2.Text then Memo1.Lines.Add(edit2.text); if edit3.Text then Memo1.Lines.Add(edit3.text); if MaskEdit1.Tex
13、t then Memo1.Lines.Add(MaskEdit1.text); /向memo1中添加编辑框中的文本 end;,当按下【取消】位图按钮时,把memo1中的文本清空。 procedure TForm1.BitBtn6Click(Sender: TObject); begin Memo1.Lines.Clear; /清除memo1中的文本 end; 第三步:运行程序。程序代码添加完毕,可以编译、链接并运行程序,程序的运行结果如图4-3所示。 图4-3 程序运行结果,4.2.2 按钮和对话框 在程序设计中,按钮类组件是一种实现人机交互的最常用的组件,都能响应键盘和鼠标事件,用来执行某一
14、功能。使用对话框,可以实现一些简单信息的输入和输出。 1按钮 以下介绍几种常用的按钮类组件。 (1) Button组件按钮 Button组件位于【Standard】页上,主要用来响应鼠标的单击事件。在程序运行时当用户用鼠标单击窗体中的该组件对象时,或是该组件对象处于输入焦点状态(按钮周围有一个虚线框)按下Enter键时,该组件对象的单击事件处理过程被执行。Button组件最常用的属性是Caption属性,用于显示在Button组件上的文本内容,最常用的事件是OnClick事件。,(2) BitBtn组件按钮 BitBtn组件也是一个按钮对象,它在组件面板中的【Additional】页上,作用与
15、Button组件基本相似,只是它在组件上显示了一个图标,使窗口界面看起来更美观。它的几个常用属性如下。 Kind属性:设置位图按钮组件上显示的图标。可以使用该组件指定的默认图标,也可以使用自己通过Image Editor制作的图标,此时Kind属性要设置为bkCustom。 Glyph属性:单击该属性旁边的省略号按钮将打开Picture Editor对话框,通过它可加载图像,加载的位图将自动显示在按钮上。 (3) SpeedButton组件按钮 SpeedButton组件也称为加速按钮或彩色按钮,它可以显示图像和文本,它的属性与BitBtn组件类似,并且也在组件面板中的【Additional】
16、页上,是进行工具,条快速设计的理想部件。它只有一个位图,没有标题。 (4) CheckBox组件按钮 CheckBox组件位于【Standard】页上,该组件主要用来决定是否选取某项内容。可将多个CheckBox组件作为一组与GroupBox一起使用,用来提供一组相关选项的选取,它有以下常用属性。 Alignment属性:用来决定组件的标签放在哪一边。默认值为taRightJustify,此时CheckBox组件的标签在右边;属性值为taLeftJustify时标签位于左边。 Check属性:用来判断CheckBox组件是否被选取。 State属性:用来判断CheckBox组件当前的状态。,(
17、5) RadioButton组件按钮 RadioButton组件位于【Standard】页上。此组件一般不单独使用,通常是多个这样的组件作为一组,在同一组中,同一时刻只能选中一个按钮,其余按钮自动处于非选中状态。 2 对话框 对话框是用户与应用程序之间交换信息的最佳途径之一。 (1) 对话框函数与对话框过程 使用对话框函数或过程可以得到Delphi的内部对话框,这种方法具有操作简单及快速的特点。 ShowMessage()过程:显示一个最简单的对话框,以应用程序的执行文件名作为标题,为在对话框中出现的文本,对话框中只含一个“OK”按钮,单击该按钮对话框即关闭并返回,这对于开发者而言,调试程序是
18、非常有用的。 ShowMessageFmt(,)过程:与ShowMessage过程的功能基本相同,只是参数为格式化了的字符串,与配合,形成显示在对话框中的信息。,MessageDlg与MessageDlgPos函数可以显示一个信息对话框,并等待用户的响应。 CreateMessageDialog函数生成一个信息框窗体,可以在程序中多次使用ShowModal方法调用。 InputBox与InputQuery函数可以显示一个供用户输入的对话框。 (2) 标准对话框 OpenDialog组件:选择文件的对话框,可以用它来浏览和选择文件。单击Filter属性后的“”,在弹出的Filter Editor
19、界面上编写Open Dialog对话框能够显示和打开的文件类型。FileName属性得到被选中的文件的名字。 SaveDialog组件:用于以给定的文件名保存文件。,4.4 菜单设计,随着Windows操作系统风行世界,各种基于Windows的应用程序及各类娱乐软件也日益为人们所熟悉。这些软件的共同特点之一就是大量使用不同的菜单和各种工具栏,因而菜单是应用系统的重要组成部分之一,它一般由菜单栏和下拉菜单组成,如Delphi的系统集成环境中的菜单栏。 在Delphi中可使用组件栏和菜单设计器快速建立自己的菜单。实际应用中,菜单可分为两种基本类型:主菜单(mainmenu)和弹出式菜单(popup
20、menu)。主菜单一般称为菜单栏,其中包括一个或多个选择项称为菜单项,当单击一个菜单项时,包含子菜单项的列表即被打开;弹出式菜单将在下一节中讲解。主菜单组件和弹出式菜单组件都是不可见组件,4.4.1 建立菜单 建立菜单的过程是在列出菜单的组成,然后在“菜单编辑器”窗口按照菜单组成进行设计,设计完后,再把各菜单项与代码连接起来。 选择组件栏中standard页的mainmenu组件,并将其放在窗体容器中,即可产生主菜单项。按下列方法之一打开如图4-8所示的菜单编辑器,并自动产生一个空菜单项。 l 双击mainmenu组件。 l 右键单击mainmenu,在弹出的快捷菜单中选取menudesign
21、er项。 单击mainmenu组件,并在对象监视器中选items属性,鼠标点击“”。,图4-8 菜单编辑器,菜单项属性,菜单编辑器,主菜单组件,1菜单编辑器属性、事件和方法 菜单是一个特殊的控件,其中的每一个菜单项也是一个控件,MenuItem菜单项组件的属性见表4-11。 表4-11 MenuItem常用属性,用鼠标单击菜单项时,将产生OnClick事件。实际编程序时,这个事件是一定要响应的。MenuItem菜单项组件的常用方法见表4-12。 表4-12 MenuItem常用方法,2添加菜单项 打开菜单编辑器后,自动产生一个空菜单项,同时对象编辑器中提示输入该菜单项的Caption属性和Na
22、me属性。例如将第1个菜单项的Caption属性设置为“ begin Application.CreateForm(Tfrm_netmana0, frm_netmana0); try frm_netmana0.showmodal; /显示网络管理窗口 finally frm_netmana0.release; end; end; 初始设置、更改口令、更改用户、策划管理、销售前台、合同制作、信息查询、结算管理菜单项的处理程序与上述代码一样。 procedure TFrm_Slmismain.M_jianqieClick(Sender: TObject); begin if ActiveContr
23、ol is TcustomEdit then (ActiveControl as TcustomEdit).CutToClipboard; /实现剪切功能 end;,procedure TFrm_Slmismain.M_fuzhiClick(Sender: TObject); begin if ActiveControl is TcustomEdit then (ActiveControl as TcustomEdit).CopyToClipboard; /实现复制功能 end; procedure TFrm_Slmismain.M_niantieClick(Sender: TObject);
24、 begin if ActiveControl is TcustomEdit then (ActiveControl as TcustomEdit).pastefromClipboard; /实现粘贴功能 end; procedure TFrm_Slmismain.M_suanchuClick(Sender: TObject); begin if ActiveControl is TcustomEdit then (ActiveControl as TcustomEdit).clear; /实现删除功能 end; procedure TFrm_Slmismain.M_xianshitoolCl
25、ick(Sender: TObject); begin M_xianshitool.Checked:=true;/菜单项的左边将显示一个钩号标记,相当于一个复选框 M_hidetool.Checked:=false; CoolBar1.Visible:=true; /工具栏可见,end; procedure TFrm_Slmismain.M_hidetoolClick(Sender: TObject); begin M_hidetool.Checked:=true; M_xianshitool.Checked:=false; CoolBar1.Visible:=false; /隐藏工具条 en
26、d; procedure TFrm_Slmismain.M_riliClick(Sender: TObject); begin application.CreateForm(Tfrm_rili, frm_rili); try frm_rili.showmodal; /显示万年历窗口 finally frm_rili.release; end; procedure TFrm_Slmismain.M_jisuanqiClick(Sender: TObject); var filename:string; begin filename:=ExtractFilePath(Application.EXE
27、Name); /当前路径 if FileExists(filename + calc.exe) then begin,shellexecute(handle,open,calc.exe,nil,pchar(filename),sw_show);/显示系统计数器窗口 end else showmessage(计算器); end; procedure TFrm_Slmismain.M_printshezhiClick(Sender: TObject); begin PrinterSetupDialog1.Execute ; /利用打印控件显示打印机设置窗口 end; procedure TFrm_
28、Slmismain.M_guanyuClick(Sender: TObject); begin application.CreateForm(TAboutBox,AboutBox); try AboutBox.showmodal; /显示关于窗口 finally AboutBox.release; end; end; procedure TFrm_Slmismain.M_indexClick(Sender: TObject); begin,application.helpfile:=helpNEWWORLDHOUSE.HLP; /执行已经生成的帮助文件 if (not winhelp(hand
29、le,helpNEWWORLDHOUSE.HLP,help_finder,0) then begin showmessage(不能访问帮助文件!); exit; end; end;,4.5 弹出式菜单设计,上一节介绍的菜单是一般菜单,它出现在窗口的顶部,当用户执行某一菜单项时,就必须把鼠标指针移动到窗口顶部,这对于常用的功能来说是很不方便的。本节介绍另一类型的菜单即弹出式菜单的设计,它能以更加灵活的方式为用户提供更加便利的操作,当用户在不同位置单击某一鼠标键(一般为鼠标右键),则将显示一组不同的菜单项,从而加快用户的操作,所以弹出式菜单也称为快捷菜单,该菜单的位置是在屏幕上“浮动”的,根据鼠标
30、的当前位置决定。所以说主菜单是固定的且有多组菜单项,弹出式菜单是活动的且只有一组菜单项。 4.5.1 快捷菜单设计 和TMainMenu控件一样,TPopMenu控件也提供了菜单设计器,用于在设计期间建立菜单的结构,不过,由于快捷菜单的菜单项往往是动态变化的,因此,更多的工作是在运行期间操作菜单。同时它也是从TMenu对象继承下来的,快捷菜单的每个项目都是一个TMenuItem对象,可以通过Items属性来访问菜单中的每一个项目。下面介绍TPopMenu的常用属性和事件。,Alignment属性:控制当用户按下鼠标右键的时候快捷菜单的显示位置。在默认的情况下,快捷菜单会出现在鼠标的右下方,也就
31、是说鼠标出现在快捷菜单的左上方。它可以设为以下值: l PaLeft:快捷菜单的左上角显示在鼠标点的地方。 l PaCenter:快捷菜单的顶部中间显示在鼠标点的地方。 l PaRight:快捷菜单的右上角显示在鼠标点的地方。 AutoPopup属性:设置为True,那么当用户在指定了PopMenu属性的对象上单击鼠标右键的时候,会自动弹出快捷菜单。否则需要调用Popup方法才能显示出快捷菜单。 MenuAnimation属性:用于指定菜单命令在屏幕上展开的方式。 PopupComponent属性:用于多个组件使用同一个快捷菜单的情况,访问这个属性可以知道用户是在哪个组件上按下了鼠标右键。同样
32、,如果在程序中调用Popup()来弹出菜单,可以在调用之前把PopupComponent属性设为想关联的组件。 OnPoput事件:快捷菜单的优越性就在于弹出的菜单能够根据鼠标右键所击的对象的不同而变化。当程序调用Popup或者在AutoPopup属性设为Ture的情况下用户按下鼠标右键,就会触发这个事件。这样就有机会在弹出快捷菜单之前通过编程有选择地显示菜单项。,要建立快捷菜单,首先在组件栏standard标签中把PopupMenu组件添加到Form上,然后双击PopupMenu组件,弹出菜单编辑器,设计方法与MainMenu组件基本相同,键入菜单内容,不同的是,在PopupMenu中只能输
33、入一列内容。输入完毕之后,还需要回到Form窗口,在Form的修改的PopupMenu属性中键入弹出式菜单的名字PopupMenu1,这样,就完成了整个菜单的设计。运行程序,在窗口的任意位置单击右键,都会弹出设计的菜单。 4.5.2 SLMIS弹出式菜单应用 售楼管理系统中结算管理的入住浏览窗体应用了弹出式菜单进行查找和排序。首先在窗体中建立PopupMenu菜单项,设计弹出式菜单的内容如图4-11所示。在入住情况显示网格中单击右键即可弹出该快捷菜单,因而网格Dbgrid1的PopupMenu属性要为弹出式菜单的名字PopupMenu1。在程序运行时,当用鼠标选择一个菜单项后,程序要对此进行响
34、应。,图4-11 弹出式菜单设置 弹出式菜单各菜单项的处理程序如下: procedure Tdfm346.findClick(Sender: TObject); var dd:string; begin dd:=inputbox(按合同查找,请输入查找的合同号,020611); DBGrid1.DataSource.DataSet.Filter:=c_concode=+dd; DBGrid1.DataSource.DataSet.Filtered:=true; end;,procedure Tdfm346.paixuClick(Sender: TObject); begin with adoq
35、uery1 do begin close; sql.clear; sql.add(select * from jie_ruzhu); sql.add(order by c_concode); /以合同号为序打开入住信息表 try open; Except on EDBEngineError do Begin application.messagebox(数据库打开错!,open Error,MB_OKCANCEL+MB_DEFBUTTON1); exit; end; end; first; end; DBGrid1.Refresh ; end;,图4-12 入住浏览弹出式菜单应用 用户在入住情
36、况显示的表格中的任意位置单击鼠标右键,运行界面如图4-12所示。,4.6 SLMIS中设计各窗体并设定各控件属性,SLMIS中共有十几个窗体对象。前几小节介绍了其中两个窗体的设计细节,此处再介绍两个性质不同的窗体,并分别说明各自的属性及其设计方法。 4.6.1 “新世界房屋销售管理系统”主窗体设计 这是SLMIS的主界面窗体,即无数据源窗体。一般数据库应用系统都是在这个窗体上申明版权,说明其整体功能,当然应该设计得美观一些。这个窗体的设计形式如图4-5所示,其运行形式如图4-13所示。由于是无数据源窗体,所以可以直接在不同的组件板上逐个选取所需控件,安放在窗体中的合适位置处,进行窗体设计。,图
37、4-13 主窗体运行界面 窗体中共有二十五个组件。六个Label标签组件、十一个SpeedButton加速按钮、一个主菜单Menu组件、一个工具栏Coolbar组件、一个状态栏Statusbar组件、一个计时器Timer组件、一个图像Image组件、一个打印机设置PrinterSetupDialog组件、一个图像列表Imagelist组件和一个TJanOutBar组件,全部放置在窗体主体上。,六个标签组件位于窗体主体中部,标注其上的六个加速按钮响应单击事件后,分别打开一个特定窗体对象,这也是用户进入自己的工作模块所经常点击的按钮,另外还有五个加速按钮在工具栏中。主菜单组件编辑的主菜单位于窗体顶
38、部,具体设置见4.4.4节。窗体中工具栏和状态栏的设置见4.2.4节,其中状态栏的信息可利用计时器组件动态显示,代码见4.3.6节。图像组件显示了公司名称及主题,打印机设置组件用于主菜单中打印机设置。在这些组件中,主菜单组件、计时器组件、图像列表组件和打印机设置组件为非可视化组件,因而主窗体运行界面看不到这4个组件,其余均为可视化组件。表4-14列举了六个加速按钮的属性及其说明。 表4-14 加速按钮组件主要属性的设置,以下是加速按钮的程序代码,实质上该代码与主菜单功能模块菜单项的处理程序是一样的,只不过是应用程序运行时,用户可以通过不同的方式进入自己的工作模块而已。 procedure TF
39、rm_Slmismain.SpeedButton6Click(Sender: TObject); begin application.CreateForm(Tfrm_chmain, frm_chmain); try frm_chmain.showmodal; /显示市场策划管理窗口如图4-7所示 finally frm_chmain.release; end; end; 销售前台、合同制作、结算管理、经理查询这4个加速按钮的代码与上述代码相同。 procedure TFrm_Slmismain.SpeedButton11Click(Sender: TObject); begin close;
40、/关闭主窗体,退出应用程序 end; 位于主界面窗体左边的是TJanOutBar组件,它要结合图像列表组件使用。如果Delphi的集成开发环境没有TJanOutBar这一组件,则要安装该组件,下面介绍TJanOutBar组件的安装及其使用,其步骤如下:,图4-14 Install Component对话框 第一步:首先从安装盘的第二张盘或者其它资料上找到TJanOutBar组件所需的六个资源文件,然后选择Component组件菜单的Install Component安装组件项,打开的Install Component对话框如图4-14所示。 第二步:单击“ ”按钮,则弹出如图4-15所示的对话
41、框,用于选择资源文件中JanOutBar.pas文件,单击“ ”按钮,则选中的JanOutBar.pas文件连同路径一起被存放到图4-14中Unit file name标签后的空白文本框,接着单击图4-14中“ ”按钮即可。 要添加其它新的组件也可用以上两步方法实现。,图4-15 选择资源文件对话框 第三步:这时在Delphi组件面板的【jarBasic】页上的第一个组件就是刚刚装载的新组件TJanOutBar,如图4-16所示。 图4-16 Delphi组件面板的【jarBasic】页 第四步:结合图像列表Imagelist组件使用JanOutBar组件。双击设计主窗体上的Imagelist组件,出现如图4-17所示的加载图片的对话
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产业园区品牌塑造与产业集聚的文创产业园区品牌生态合作案例报告
- 肿瘤早筛技术临床应用策略与市场前景深度剖析报告
- 企业园区花卉管理办法
- 临时特价仓储管理办法
- 企业房屋出售管理办法
- 优化环境测评管理办法
- 交换空间装饰管理办法
- 企业人事招聘管理办法
- 企业维修售后管理办法
- 乡镇文化设施管理办法
- GB/T 9576-2013橡胶和塑料软管及软管组合件选择、贮存、使用和维护指南
- GA/T 1323-2016基于荧光聚合物传感技术的痕量炸药探测仪通用技术要求
- 2023年苏州国发创业投资控股有限公司招聘笔试题库及答案解析
- 护士注册健康体检表下载【可直接打印版本】
- 高中历史《第一次工业革命》说课课件
- 学生集体外出活动备案表
- SH3904-2022年石油化工建设工程项目竣工验收规定
- 叉车检验检测报告
- DNF装备代码大全
- 基于Qt的俄罗斯方块的设计(共25页)
- 食堂投诉处理方案
评论
0/150
提交评论