DELPHI有关菜单的几个技巧
Delphi编程中动态菜单要点归纳
Delphi编程中动态菜单要点归纳一、创建菜单并添加项目在设计程序时,有时需要动态创建菜单, 通常使用以下的语句:PopupMenu1 := TPopupMenu.Create(Self);Item := TMenuItem.Create(PopupMenu1);Item.Caption := '菜单一';Item.OnClick := MenuItem1Click;PopupMenu1.Items.Add(Item);Item := TMenuItem.Create(PopupMenu1);Item.Caption := '菜单二';Item.OnClick := MenuItem2Click;PopupMenu1.Items.Add(Item);Item := TMenuItem.Create(PopupMenu1);Item.Caption := '菜单三';Item.OnClick := MenuItem3Click;PopupMenu1.Items.Add(Item);Item := TMenuItem.Create(PopupMenu1);Item.Caption := '-'; // 增加一个分割条PopupMenu1.Items.Add(Item);Item := TMenuItem.Create(PopupMenu1);Item.Caption := '菜单四';Item.OnClick := MenuItem4Click;PopupMenu1.Items.Add(Item);还可以使用一种更快捷的方法达到同样的目的, 那就是用NewLine 和NewItem, 方法如下:PopupMenu1 := TPopupMenu.Create(Self);with PopUpMenu1.Items dobeginAdd(NewItem('菜单一',0,False,True,MenuItem1Click,0,'MenuItem1'));Add(NewItem('菜单二',0,False,True,MenuItem2Click,0,'MenuItem2'));Add(NewItem('菜单三',0,False,True,MenuItem3Click,0,'MenuItem3'));Add(NewLine); // 增加一个分割条Add(NewItem('菜单四',0,False,True,MenuItem4Click,0,'MenuItem4'));end;二、插入菜单项上述方法是在创建完菜单后,紧接着为其添加菜单项目。
delphi常用技巧
delphi常用技巧
Delphi是一种强大的编程语言,有许多有用的技巧和功能可以帮助提高开发效率。
以下是一些Delphi常用的技巧:
1. 使用快捷键:Delphi支持许多快捷键,使用这些快捷键可以快速完成常见的任务,如Ctrl+C用于复制,Ctrl+V用于粘贴等。
2. 快速查找和替换:使用Ctrl+Shift+F可以打开查找和替换对话框,输入要查找的文本,然后输入要替换的文本,最后点击“全部替换”即可。
3. 调试技巧:在调试时,可以使用断点、观察表达式、单步执行等技巧来检查程序的运行情况。
4. 自定义控件:Delphi支持自定义控件,可以创建自己的控件来满足特定的需求。
5. 使用第三方控件:Delphi有许多第三方控件可用,这些控件可以提供更多的功能和更好的用户体验。
6. 优化代码:使用一些技巧可以优化代码的运行速度和可读性,例如使用局部变量、避免不必要的对象创建等。
7. 使用异常处理:在Delphi中,可以使用异常处理来处理运行时错误和异常情况。
8. 使用多线程:Delphi支持多线程编程,可以使用多线程来提高程序的性能和响应速度。
9. 使用数据库:Delphi支持多种数据库连接方式,可以使用数据库来存储和检索数据。
10. 使用第三方库:Delphi有许多第三方库可用,这些库可以提供更多的功能和更好的性能。
希望这些技巧可以帮助你更好地使用Delphi进行开发。
Delphi菜单组件TMainMenu使用方法详解
Delphi菜单组件 TMainMenu使用方法详解
本文为大家分享了菜单组件TMainMenud的使用方法,供大家参考,具体内容如下 菜单组件TMainMenu 创建菜单双击TmenuMain,单击Caption就可以添加一个菜单项
菜单中添加分割线只需加“-”就可以添加一个分割线
级联菜单的设计 单击鼠标右键弹出菜单中选择Create Submenu菜单项
单选功能设计 要在设计的菜单项目中选择RadioItem属性为True,C单项目中选择RadioItem属性为False,Checked属性为True
动态创建菜单
源代码如下
procedure TForm1.Button1Click(Sender: TObject); var MainMenu: TMainMenu; MenuItem: TMenuItem; begin //主菜单创建 MainMenu:=TMainMenu.Create(self); Self.Menu:=MainMenu; //文件菜单创建 MenuItem:= TMenuItem.Create(MainMenu); MenuItem.Caption:='文件'; MainMenu.Items.Add(MenuItem); //新建子菜单创建 MenuItem:=TMenuItem.Create(MainMenu); MenuItem.Caption:='新建'; MainMenu.Items[0].Add(MenuItem); //子菜单中的子菜单创建 MenuItem:= TMenuItem.Create(MainMenu); MenuItem.Caption:='打开'; MainMenu.Items[0].Items[0].Add(MenuItem); MenuItem:= TMenuItem.Create(MainMenu); MenuItem.Caption:='保存'; MainMenu.Items[0].Items[0].Add(MenuItem); end; end.
delphi制作主菜单
Delphi制作主菜单菜单包括大多数Windows应用程序的大部分内容。
一些Windows应用程序没有菜单,但绝大多数都有。
Delphi使用Menu Designer使得创建菜单变得容易。
Menu Designer有如下特点:∙可以创建主菜单和弹出菜单(快捷菜单)。
∙为菜单项处理提供OnClick事件。
∙从模板或源文件插入菜单。
∙以模板形式保存客户菜单。
所有Menu Designer命令通过其快捷菜单或者使用Object Inspector来操作。
如下图,显示了Menu Designer的快捷菜单:从大部分情况下,这些快捷菜单项通过其名字就能知道它的用途,因此不在这里做进一步讨论。
下面我们通过使用菜单项来了解它们,首先为前面创建ScratchPad应用程序添加一个主菜单,然后添加一个快捷菜单。
一、创建主菜单Menu Designer能够很快建立任何菜单。
主菜单的菜单结构由MainMenu组件构成,它由VCL类TMainMenu表示。
菜单上每一项是TMenuItem 组件,封装在TMenuItem类中。
不必太关心这些类如何协同工作的细节,因为Menu Designer使得建立菜单变得非常容易。
TMainMenu和TMenuItem继承关系图如下:1、添加主菜单到窗体首先必须添加MainMenu组件到窗体。
Note现在大家对Delphi已有了使用经验。
从这时起,要缩略某些需要执行动作的步骤。
例如,从现在开始说“把MainMenu组件放到窗体上”,而不是说“在组件面板上点击Standard 标签,点击MainMenu按钮,点击窗体放置MainMenu组件。
”不要担心,在引入新操作前,会给出大量的细节。
(1)打开上一讲创建的ScratchPad工程。
(2)在窗体上放置MainMenu组件,显示为一个图标,如下图,改变其Name属性为MainMenu。
注意MainMenu组件有很少几个属性且没有时间,所有菜单的工作由单个菜单项完成。
delphi编程妙招集合
delphi编程妙招集合下载⽹址:有详细的⽂字说明和DELPHI源代码,拷贝即⽤!内容:控件Label的分⾏显⽰Tag属性的妙⽤调⽤API确定MEMO控件中的当前⾏和列给ListBox、ComboBxox添加图⽚给ListBox添加⽔平滚动条Delphi中动态定制菜单⽤Image显⽰Jpg图⽚给MenuItem中添加Image改变在MenuItem中的Image位置对窗体(Form)制作可分割的窗体(Form)制作透明的窗体(Form)窗体(Form)上的坐标转换成相对于屏幕上的坐标变⾊窗⼝背景不⽤标题栏也移动窗体状态条进度条程序启动画⾯控制窗体查阅可视窗⼝标题限制Form的⼤⼩Form⽣成时的事件次序在窗体上设置⼀个热键⽣成⾮矩形窗⼝Delphi中TApplication类的巧⽤在程序中使⽤⾃定义的⿏标界⾯⾊彩渐变效果的实现图形整体拉出效果窗体的系统菜单添加到窗体的菜单条上闪动标题栏某些程序退出后会在任务栏中留下⼀个空格,点⼀下才消失。
如何处理?⽂件和⽬录如何启动/关闭CD-ROM的⾃动运⾏如何判断光驱中是否有光盘如何打开和关闭计算机的光驱获得磁盘的类型获得磁盘的容量获取当前程序的⽬录。
得到光驱得到windows⽬录得到System⽬录得到windows临时路径察看⽂件是否存在改变⽂件扩展名得到⽂件的扩展名让应⽤程序⾃⾝删除如何把⽂件删除到回收站中?打开Windows已经注册的⽂件系统如何添加桌⾯的快捷写⼀个在Winx、WinNT通⽤的“隐⾝程序” 屏蔽系统功能键隐藏和显⽰Windows的任务条从任务列表隐藏应⽤程序(Ctrl+Alt+Del)隐藏桌⾯图标⽤Delphi实现禁⽌⽤户关闭Window9X。
启动屏幕保护启动控制⾯板得到当前系统默认的浏览器检测程序是否运⾏改计算机名抓获全屏通过Win.ini⽂件更换壁纸。
永久性改变壁纸监视剪贴板内容将程序加⼊到Windows的启动中打开拨号连接如何为Delphi程序添加事件和事件处理器打开外部应⽤程序关闭外部已开启的应⽤程序把⾃⼰的菜单项加⼊系统菜单其他打开启动菜单更改系统时间得到windows的运⾏时间判断系统是否安装了声卡如何把程序关闭的控制权掌握在⾃⼰⼿⾥写⼀个简单的多线程的程序返回。
delphi十个小技巧
delphi十个小技巧1、判断一个字符串是否包含于另外一个字符串的方法例如:if pos('ab','abcd')<>0 thenmessagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0);pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化!(1)BorderStyle 为 bsNone(2)Windowstate 为 wsMaximized(3) 退出时可加一个按钮之类的,写上 close 即可退出。
3、数字格式化输出format('%8.2f',[123.456]),返回字符串'123.46'。
4、播放一个wav文件usemmsystem;SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);5、InputBox,InputQuery和ShowMessage函数的威力usesdialogs;vars,s1:string;b:boolean;begins:=trim(Inputbox('NewPassword','Password','masterkey'));b:=s<>'';s1:=s;if b then b:=InputQuery('ConfirmPassword','Password',s1);if not b or (s1<>s) thenShowMessage('Password Failed');end;6、几个有关子目录的操作的过程MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str);IOResult --上面几个过程调用成功即返回0值7、将一个可视控件变成图形类型例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做:image1.width:=label1.width;image1.height:=label1.height;label1.perform(WM_PAINT,image1.Canvas.Handle,0);8、如何得到字符的ASCII值得到字符的ASCII值,可以用如下语句:var: a:integer;string1:string;beginstring1:='ABC';a:=byte(string[1]); {此时就得到'A'的ASCII值}end;9、动态更新DBGrid的颜色例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。
Delphi程序设计基础第5章-菜单设计
双击窗体中的MainMenu组件图标。 用鼠标右键单击MainMenu组件, 打开一个快捷菜单,从中选择“Menu Designer”命令。 选定MainMenu组件,再在对象查 看器中单击Items属性值编辑框右边的省略 号按钮。
主菜单设计器打开后,在主菜单设计 器中有一个深色加亮的方块,即第一个空 白菜单,用户可以在上面输入菜单名。
5.2.4 菜单命令项的热键
所谓热键,是指在不打开菜单的情况 下,直接使用预先设置的组合键,就可以 执行某个菜单命令。很明显,热键和快捷 键不同,因为快捷键必须在打开当前的菜 单时才能打开。
而且,菜单栏中的主菜单项只能有快 捷键,而不能有热键。如果要给菜单命令 项设置热键,直接单击该菜单命令项的 Shortcut属性,打开一下拉列表框,从中 选择所需的热键名称即可。
5.1.2 菜单命令项的作用
菜单命令项被选中后,一般来说作用 有如下3种。
执行命令:用于执行某操作的菜单 命令,它们没有特殊的指示符号。
设置状态:用于设置或取消某设置 的菜单命令,通常用来改变某特殊选项的 状态,这些菜单命令常用复选标记“√”或 单选标记“”来表明该选项是否处于有效 状态。在有效状态情况下,再次选择该命 令则产生相反的效果。
5.2.5 菜单命令项的调整
创建完菜单后,经常会发生要在已有 菜单、菜单命令项之间插入新的菜单或菜 单命令项,剔除不需要的菜单、菜单命令 项,调整菜单、菜单命令项的排列等情况, 这就是菜单命令项调整。
如果要在现有菜单、菜单命令项之 前插入新的菜单、菜单命令项,可用鼠标 右键单击该菜单、菜单命令项,打开一个 快捷菜单,从中选择“Insert”命令。
不过,从条理性和操作方便性来讲, 级联菜单最好不要超过4级。如果不愿使用 级联菜单,可将菜单中的一些菜单命令项 归纳为一组,并在菜单命令项组之间用分 割条来分割。
Delphi常用技巧帮助
Delphi常用技巧帮助| 留言交流| 登录Delphi常用技巧在网上行走时,经常会看到弹出的桌面小窗体,有时做广告,有时向你致以节日的问候;人们称其为桌面小精灵;有的桌面小精灵会自动移动,有的固定在屏幕的某一角落,动画闪烁,煞是迷人。
本人用Delphi制作了一款桌面小精灵,愿与大家共享。
桌面小精灵的实现功能:当运行时,在屏幕的左下角显示一无边框、无标题栏的小窗体,并自动向屏幕的右上角移动,窗体上的小精灵——可爱的马先生,一会跃起,高呼“马到成功!”,一会含情脉脉地向你招手“再见”;同时,还不断地闪烁显示当前时间,时刻提醒你抓紧时间呦!当你嫌它碍事时,你可以按下鼠标左键,将它拖到任意位置。
如果你厌烦它不停移动,你可以双击鼠标左键,它会老老实实地呆在原地不动,只要你用鼠标轻轻一点,它又会高高兴兴地上路,当你单击“再见”时,桌面小精灵就会消失,你不想一试身手吗?请跟我来!运行后效果图生成一窗体,设置窗体属性如下:Name属性为Form1,BorderStyle属性为bsNone,FormStyle 属性为StyOnTop,Height属性值240,Width属性值209。
窗体上分别添加组件,设置属性如下:(1)添加两个Image组件,Name属性分别设为Image1、Image2,Align属性均设为alClient(以使Image组件充满整个窗体),Image1的Enabled为False,Image2的Enabled为True,然后通过Picture属性为Image1、Image2添加图片(适合的图片格式:BMP、JPG )。
(2)在Image上再添加两个Timer组件,Name属性分别为Timer1、Timer2,Enabled属性均为True,Interval属性均为1000毫秒。
(3)在Image上再添加一个Label组件,Name:=Label1,Caption:=“马到成功!”,Enabled:=True,Font属性为“华文行楷,粗斜体,三号字,红色”(根据你的图片设置适当的字体、字号、字体颜色)。
delphi 控制系统菜单
河南省信阳师范学院计算机系董建军----WINDOWS附带的时钟程序有这样一个特点:它的"Alwaysontop"选项是加在系统菜单中的,这一技巧为该程序增色不少,同时也增加了其神秘感。
我们在程序设计时能否把自己的菜单项加入系统菜单呢?回答是肯定的,笔者用Delphi 方便的实现了这一功能。
----为实现这一功能,需要解决两个问题:①、如何把用户菜单项加入系统菜单,②、如何才能响应这一菜单项。
----要解决第一个问题,就需要获取系统菜单的句柄,这一点可用API函数getsystemmenu()来获取(getmenu()只能获取用户菜单句柄),有了系统菜单句柄,便可以用API函数appendmenu()向系统菜单中加入用户菜单选项了。
----要解决第二个问题,需要重载WM_SYSCOMMAND或WM_MENUSELECT消息。
我们知道,当用户从菜单中选一项时,系统便会发出WM_COMMMAND消息,而对于系统菜单,则会发出WM_SYSCOMMAND消息,重载这个消息,并判断选中菜单的ID值是否为用户设定值便可以了。
Delphi为我们提供了这方面的机制,使我们能方便的实现这一功能。
当然,为实现这一功能我们还可以利用子类或为系统加消息钩子的方法来解决。
----为了便于实现,在这里,我们采用重载WM_SYSCOMMAND消息和填写WM_MENUSELECT消息结构的方法来实现这一功能。
----下面为笔者为实现这一功能而开发的实例。
----程序在Delphiver1.0下调试通过。
program Psysmenu;usesForms,Sysmenu in '\SYSMENU.PAS' {Form1};{$R *.RES}beginApplication.CreateForm(TForm1, Form1);Application.Run;end.unit Sysmenu;interfaceusesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);privateprocedure user_sysmenu(var msg:twmmenuselect); message wm_syscommand;public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure er_sysmenu(var msg:TWMMENUSELECT); beginif msg.iditem=100 thenshowmessage(' 响应系统菜单!'){ 也可以setwindowpos()来实现处于最前端功能}elseinherited; { 作缺省处理,必须调用这一过程}end;procedure TForm1.FormCreate(Sender: TObject);var hmenu:integer;beginhmenu:=getsystemmenu(handle,false);{获取系统菜单句柄}appendmenu(hmenu,MF_SEPARATOR,0,nil);appendmenu(hmenu,MF_STRING,100,'加入系统菜单');{加入用户菜单}end;end.。
特效处理:Delphi中制作特效菜单
特效处理:Delphi中制作特效菜单菜单是应用程序中常见的用户界面之一 Delphi具有功能强大的菜单设计器可以很快地实现标准的菜单但有时候应用程序需要实现特定类型的菜单我们常用的如金山毒霸的弹出式菜单就是一例可以在菜单项里显示自己定义的图片自己设置的文字以及自设置的菜单项大小这种菜单称为自绘制菜单(Owner draw MenuItem)当然功能不止于此我们还可以实现更好的菜单下面就一起来做一个显示大图片和大文字的菜单吧!一程序思路Delphi在绘制每个菜单时采用一个比较独特的方法首先Delphi会通过菜单的OwnerDraw属性来判定在菜单中是否允许自绘制菜单若OwnerDraw属性为真(TRUE) 则Delphi首先会触发每个菜单项的OnMeasureItem事件来获取自绘制菜单项的大小(Width Height) 然后触发OnDrawItem事件允许用户在这里绘制自己的菜单二实现菜单第一步创建一个新的项目并添加相应的组件启动Delphi 新建一个应用此时出现一个窗体将其Name属性改为frmSample 添加一个弹出式菜单到窗体frmSample 并将此菜单Name属性设置为mnuOwnerDraw 设置窗体frmSample的PopupMenu属性为mnuOwnerDraw 这时运行程序你会发现除了弹出式菜单仍然显示为空的菜单继续往窗体上添加一个TactionList对象双击以设计这一ActionList对象往其中增加一个Action对象并设置其Name属性为 actSample 往窗体上放置一个Label对象其Name属性为Label 调整Label的字体大小以便在利用Label显示数据时可以清楚地观察到现在往程序的变量声明部分(VAR)添加要用到的声明ePic:TPicture; //用于装载程序要用到的图像miSample:TMenuItem; //菜单项的声明用于动态生成菜单项I:integer; //当多次右击键时记录右单击次数从而生成不同的菜单项首先在程序的初始化部分初始化击键次数为initialization i:= ;第二步实现OnMeasureItem和OnDrawItem 往窗体frmSample的实现(Implementation)部分添加如下过程声明AMeasureItem (Sender: TObject; ACanvas: TCanvas; var Width Height: Integer); ADrawItem (Sender: TObject; ACanvas: TCanvas; ARect: TRect;Selected: Boolean); 往往手工输入比较麻烦比较现实的做法是利用菜单设计器添加一个菜单项设置其Name属性为A 然后选择OnMeasureItem和 OnDrawItem事件双击即可Delphi会为你自动输入如上代码往AMeasureItem 中添加如下代码Begin Width: = ; //设置菜单项的宽度Height: = ; //设置菜单项的高度End; 往ADrawItem中添加如下代码Begin If I= then begin ePic:=TPicture Create;//创建一个用于装载图片的Tpicture对象ePic LoadFromFile( a bmp );//从项目所在目录装载图片acanvas Draw(arect Left arect Top ePic Graphic); //将图片在菜单项中绘制出来acanvas Font Size:= ;//设置菜单项的字体大小acanvas Font Color:=clPurple; //设置菜单项字体颜色acanvas TextOut(arect Left+ arect Top+ A ); //在菜单项中输出文字A end;if i= then begin ePic:=TPicture Create; //创建一个用于装载图片的Tpicture对象ePic LoadFromFile( b bmp );//从项目所在目录装载图片acanvas Draw(arect Left arect Top ePic Graphic); //将图片在菜单项中绘制出来acanvas Font Size:= ; //设置菜单项的字体大小acanvas Font Color:=clblue; //设置菜单项字体颜色acanvas TextOut(arect Left+ arect Top+ B ); //在菜单项中输出文字A end; if i= then begin ePic:=TPicture Create; ePic LoadFromFile( c bmp ); acanvas Draw(arect Left arect Top ePic Graphic); acanvas Font Size:= ;acanvas Font Color:=clred; acanvas TextOut(arect Left+ arect Top+ C );end; End;下面我们实现菜单项的在被单击时的行为即实现actSample对象的OnExcute事件如下所示actSampleExecute(Sender: TObject); begin label Caption:=inttostr(i); end; 第三步将菜单项动态添加到菜单中I:=I+ ;//计算程序中的击键次数miSample:=TMenuItem Create(form );//动态创建菜单项miSample OnClick :=actSample OnExecute; //为菜单项添加动作miSample OnDrawItem := ADrawItem; //为菜单项设置显示方式miSample OnMeasureItem := aMeasureItem; //为菜单项设置大小mnuOwnerDraw Items Insert( miSample); //将菜单项添加到菜单中三程序效果现在可以应用程序了你会发现只要你在窗体上单击右键窗体会有一个弹出式菜单显示出来而且每一个菜单项都随着右键单击次数的不同而不同当次数大于时菜单显示为一系列的空菜单项但是不论何时你单击任何一个菜单项Label的都会显示你当前的右键在窗体上单击的次数值四程序加强如果我们在程序中为我们所动态创建的每一个菜单项都实现不同的OnMeasureItem和OnDrawItem事件的话那么每一个菜单项都有自己的大小处理与显示处理那我们就可以实现一些更好的功能例如可以实现大小不同的菜单项第一个菜单项可以比较小以后的菜单项可以比较大同样还可以在一些菜单中实现更好的功能如每个菜单显示自己图标和特定字体的文字但是利用这种方法制作自定义菜单的功能还是受到了一定的限制我们只能对OnAdvancedDrawItem OnClick OnDrawItem OnMeasureItem等有限几个事件作出反应并对菜单项进行定制我们没有办法对鼠标事件作出反应利用鼠标事件当鼠标滑过菜单项时我们可以实现诸如加亮渐变或其他的菜单项显示技术显然这是十分有意义的要实现上述技术我们需要从TcustomMenuItem中继承并定义一个新类并重新声明OnMouseMove事件并给出实现诸如加亮或渐变等技术的代码即可 lishixinzhi/Article/program/Delphi/201311/8434。
delphi编程技巧与实例精解
一、概述Delphi是一种基于Pascal语言的集成开发环境,它提供了丰富的工具和功能,使得程序员可以轻松进行Windows应用程序开发。
在Delphi编程中,掌握一些技巧和实例是非常重要的,可以帮助程序员提高开发效率,降低错误率,提升编程水平。
本文将对Delphi编程技巧和实例进行精解,希望能帮助读者更好地掌握这门技术。
二、Delphi编程技巧1. 使用正确的数据类型在Delphi编程中,使用正确的数据类型是非常重要的。
不同的数据类型有不同的大小和范围,选择合适的数据类型可以节省内存空间并提高程序的运行效率。
如果需要存储一个整数,应该选择合适大小的整型而不是使用大整数型,以避免浪费内存空间。
2. 合理使用循环结构循环结构是程序中常用的控制结构之一,合理使用循环结构可以简化程序逻辑,提高代码的可读性。
在Delphi中,有多种循环结构可供选择,如while循环、for循环和repeat-until循环,程序员应根据具体情况选择合适的循环结构。
3. 异常处理在编写程序时,应该考虑到各种异常情况,并做好相应的处理。
Delphi提供了丰富的异常处理机制,程序员可以自定义异常类,并使用try-except结构捕获异常,从而保证程序的稳定性和健壮性。
4. 使用面向对象编程面向对象编程是一种重要的编程范式,它能够提高程序的复用性和可维护性。
在Delphi中,使用面向对象编程可以更好地组织和管理代码,提高编程效率。
5. 性能优化在编写程序时,应该考虑程序的性能问题,并采取相应措施进行优化。
Delphi提供了丰富的性能优化工具和技术,程序员可以通过分析程序的性能瓶颈,改进算法和数据结构,提高程序的性能。
三、Delphi编程实例1. 界面设计界面设计是Delphi编程中的一个重要环节,一个美观、简洁的界面可以提升用户体验。
程序员可以使用Delphi提供的界面设计工具,如VCL控件和FireMonkey框架,快速实现各种界面效果。
Delphi使用技巧四则
Delphi使用技巧四则在Delphi的可视化设计界面中,使用最频繁的地方要数位于屏幕左上角的加速按钮栏(Speedbar) 了。
在实践过程中,笔者无意中发现了Speedbar的定制方法,这在我用过的四本Delphi参考书中均未提及到。
步骤如下:右键点击Speedbar,在弹出菜单中选Propertie s,这时会出现个名为Speedbar Editor 的对话框。
假设想要增设项"语法检查"的功能,可在左边Categories列表框中选Project,再把右侧的Syntax Chec k医l标拖放到Speedbar的合适的位置上,这项功能就已经加上了。
如果speedbar上没有多余的空间来容纳新的按钮,可将鼠标停在speedbar右框处,变为双向箭头的形状时,向右拖动段距离,就可腾出空间。
如想删除speedbar上的某个按钮,可简单地把它拖出speedbar的范围,就能删除。
操作十分方便。
建议把Syntax Chec k、Project Options(工程选项)、WindowsApi Help加到Speedbar中,可以提高开发效率。
二、设计For m时的快捷键使用快捷键可以加快设计速度。
下面列出的快捷键,可根据实际情况,有选择地熟练掌握。
Del :删除所选组件:Esc :选择当前组件的容器(通常是Panel,Group或Form);Fll:在Form或Unit和对象检查器之间切换:F12 :在Form和代码编辑器问切换:Ctrl+F12 :显示"查看Uni t"对话框:Shift+F12:显示"查看Form" 对话框:TAB :下个组件!Shift+TAB:上个组件! 方向键:选中此方向上最近的组件! Ctrl+方向键:将所选组件移动个点!Shift+方向键.将所选组件改变一个点的大小!Ctr1+Shift+方向键·将所选组件移动个格!Shift+click:按住Shift键再用鼠标点击组件,可以选择多个组件。
DELPHI编程技巧集锦(4)
ShGetFileInfo(PChar(Ext), 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_SMALLICON or
SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
result:= SHFileInfo.iIcon;
end;
下面将系统图象列表连接到TListView控件上。注意我们设置动态建立的图象列表的ShareImages属性为真,这可以确保我们不试图释放Windows系统拥有的图象。在窗体的OnCreate事件处理程序中加上:
with YourListView do
begin
SmallImages := TImageList.CreateSize(16,16);
if (ssCtrl in Shift) and (chr(Key) in ['A', 'a']) then ShowMessage('Ctrl-A');
OnKeyDown事件处理程序将捕获击键,并执行指定的代码。
六、
A
假如编写一个衍生类的初始化例程,并希望将参数传递给基类的初始化例程,一般使用如下方法:
J
假如你需要存取WIN95的系统图象列表,这里给出具体方法。第一个函数将系统图象列表的索引保存到一个特殊类型的文件中:
function GetFileIcoIndex(Filename:String):Integer;
var
Ext: String;
ShFileInfo: TSHFILEINFO;
begin
上述代码只能动态地开关一个菜单的菜单条目,如果要同时动态改变所有菜单的菜单条目,需要使用窗体的Components属性,代码如下:
delphi tactionlist使用方法
delphi tactionlist使用方法Delphi TActionList 使用方法Delphi 是一种常用的编程语言,具有许多功能强大的特性。
其中之一就是TActionList ,它提供了一种便捷的方式来管理和调度应用程序中的操作。
本文将一步一步地介绍如何使用Delphi TActionList 来提高应用程序的灵活性和可维护性。
第一步:了解TActionList 的基本概念在开始使用TActionList 之前,我们首先需要了解它的基本概念。
TActionList 是一个容器控件,用于存储和管理应用程序中的操作(Action)。
操作代表着用户界面上的一个功能,例如“打开文件”或“保存文件”。
TActionList 可以将这些操作与特定的控件(如按钮)关联起来,从而实现用户与功能之间的直接交互。
第二步:在Delphi 窗体上添加TActionList要使用TActionList,我们首先需要在Delphi 窗体上添加一个TActionList 控件。
可以通过以下步骤来完成:1. 打开Delphi IDE,创建一个新的窗体应用程序项目。
2. 在工具箱中找到"Standard" 标签或"ActionLists" 标签。
3. 点击并拖动TActionList 控件到窗体上。
完成这些步骤后,您将在窗体上看到一个新添加的TActionList 控件。
第三步:在TActionList 中添加操作一旦TActionList 控件添加到Delphi 窗体上,我们就可以开始添加操作了。
请按照以下步骤进行操作:1. 右键单击TActionList 控件,在弹出菜单中选择"New Standard Action" 或"New Action"(取决于您选择的标签)。
2. 在Object Inspector 中,为新创建的操作设置一个有意义的名称(例如OpenAction)。
Delphi实用技巧经验(图文)
‘’空‘’空格空格调整对齐方式窗体的visible属性设置相当于showmodalaq一行一行执行,所以要把一些语句写在循环里(除了在grid添加数据)Caption,Text:显示名Name:系统名Sql表:create,drop,alter 数据:insert,delete,update数据模块在uses里时用文件名,调用时用系统名全局变量:用于不同表单间的传值。
如在public中定义变量a,使用时把值赋给form.a,具体可参考设置第一列为下拉式菜单Delphi设置切换窗体project-options-forms 字体tools-options-display问题处理属性栏消失按F11Image提示“unknown picture file extension(.jpg) ”在uses中加Jpeg重建某个窗体(如unit2):新建unit1unit2,退出再重建,使之产生dcu文件,再将这三个文件复制到所需目录下,同时删除history 文件夹DBGrid某列的小数位数(at默认会去掉末尾的0,如1.00->1)TFloatField(dbGrid1.Columns[2].Field).DisplayFormat := '0.00'; 函数定位posex(str1, str2,[n]) 在str1在str2从n的位置开始的位置,默认从1开始,输出int类型,必须在uses中加入StrUtils posex('b','abcabcabc',3)=5复制copy(str,2,3),输入输出都是str,如copy(inttostr(1234),2,2)=23长度length(str) 输出int重复dupestring(chr(9),10) 将Tab重复10次,必须在uses中加入StrUtils左取leftstr(str,2),rightstr(str,2),必须在uses中加入StrUtils保留小数位数(2位),会四舍五入FormatFloat('0.00',1.111),str类型格式小数小数定义成real,转换floattoint,inttofloat;floattostr ,strtofloat Asfloat 验证trystrtofloat(同理trystrtoint)Vars: string;x:double;begins:='123.45x';if not trystrtofloat(s,x)then showmessage('数据类型转换出错');end保留小数位数(2位),会四舍五入FormatFloat('0.00',1.111),str类型DBGrid某列的小数位数(默认会去掉末尾的0,如1.00->1,下面语句只改变DBGrid显示格式,若从at取出数据给edit,显示的还是去0,但是sql表中定义成money类型而delphi中提交如1,则sql表中自动转换为 1.00)TFloatField(dbGrid1.Columns[2].Field).DisplayFormat := '0.00';日期定义成date1:TDateTime,转换用datetostr, strtodate [ if not TryStrToDate(str,date1) then...] AsDateTime常见键值vbKeyBack 8 BACKSPACE 键vbKeyTab 9 TAB 键vbKeyReturn 13 ENTER 键警告窗口application.MessageBox('输入内容','标题 ', MB_ICONEXCLAMATION);1.指定讯息视窗上的图示1.1 MB_ICONEXCLAMATION 或 MB_ICONWARNING出现「黄三角形内有一个惊叹号」图示1.2 MB_ICONINFORMATION 或 MB_ICONASTERISK出现「白色椭圆内有一个蓝色小写 i」图示1.3 MB_ICONQUESTION出现「问号」图示1.4 MB_ICONSTOP 或 MB_ICONERROR 或 MB_ICONHAND出现「红色X」图示2.指定讯息视窗出现的按钮2.1 MB_ABORTRETRYIGNORE出现「Abort」「Retry」「Ignore」三个按钮2.2 MB_OK出现「Ok」按钮,为预设值。
DelphiIDE使用的一些主要技巧
DelphiIDE使⽤的⼀些主要技巧Delphi IDE使⽤的⼀些主要技巧1、查找和替换(1)<ctrl>+F[1]:选择页“Find”,进⾏查找,则根据查找⽅向继续查找。
选择页“Findin Files”,则进⾏该⼯程内的全⽂查找。
(2)<ctrl>+R:替换。
(3)设置书签和定位:设置书签:<ctrl>+<shift>+数字[2]定位书签:<ctrl>+数字2、窗体编辑(1)<F12>:在窗体编辑和代码编辑间进⾏切换。
(2)<F11>:调⽤窗体组件属性/事件浏览设置器(Object Inspector)。
(3)<菜单:view>+<菜单:Alignment Palette>:对齐⾯板:⽤于对齐各个可视组件。
3、代码编写⽅⾯(1)<ctrl>+J:调⽤⾃动代码完成模板,实现成段代码的⾃动完成。
关于模板的配置,可以在<菜单:Tools> + <菜单:Editor Options…> + <⾯板:Source Options> + <按钮:Edit Code Templates…>中完成。
(2) <ctrl>+ <⿏标:单击>:查看所在⽅法的实现代码、所在变量的声明等内容。
(3)<ctrl>+<Space>:代码⾃动完成提⽰<ctrl>+<shift>+<Space>:⽅法体内参数提⽰。
4、程序编译和运⾏⽅⾯(1)<F9>:编译并运⾏(可以设置断点进⾏调试)。
<F8>:单步调试,但是不进⼊到相关的⼦函数/过程体内<F7>:逐步调试,调试深⼊每⼀个相关的⼦函数/过程体内。
<ctrl>+<F2>:结束程序调试运⾏状态,回到程序编辑状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用ModifyMenu和GetMenuItemInfo都可以将菜单项移到菜单栏的最右边,那么选那个较好呢?
据 Windows SDK 文档: ModifyMenu函数可以改变一个已经存在的菜单项的设置,这个函数用于指定一个菜单的标题、显示外观等项目,不过,ModifyMenu函数现在已经被功能更强大的SetMenuItemInfo函数取代。虽然如此,如果你的程序不需要SetMenuItemInfo函数提供的扩展功能,你仍旧可以继续使用ModifyMenu函数。
LPCTSTR lpNewItem // menu item contቤተ መጻሕፍቲ ባይዱnt
);
第一个参数hMENU 指的是要修改的菜单的句柄(如:MainMenu1.Handle);
第二个参数uPosition 指的是要修改的菜单项索引值(菜单栏左边第一个其值为零,从左向右递增,最大值为菜单项的总数减一);
ModifyMenu函数支持 Windows 32、9x、NT/2000。
SetMenuItemInfo函数支持 Windows 9x、NT/2000,不支持windows 32(较早版本也不支持NT/2000)。
另外,SetMenuItemInfo函数功能比ModifyMenu函数强大,不过使用函数SetMenuItemInfo需要的参数也比ModifyMenu函数复杂的多。所以这里我依然使用比较简单的ModifyMenu函数来实现。
第三个参数uFlags指的是(第二个参数所指的菜单项修改后的)新菜单项的状态; 第四个参数uIDNewItem 是指向新菜单的句柄;
第五个参数lpNewItem指的是新菜单的标题。
举例如下:
-- 1 将菜单项移到菜单栏的最右边
在一些应用程序中,常把一些特殊的菜单项放在菜单栏的最右边(如WPS2000 中的&uot;定制界面&uot;菜单,一些应用程序的帮助菜单),这些菜单项放在菜单栏(menu bar)的右边比较好。Delphi中虽然没有直接提供把菜单放在菜单栏右边的函数,但是Delphi的Windows单元封装了可以实现这种效果的Windows API函数(ModifyMenu、GetMenuItemInfo)。因此,我们在Delphi中可以直接使这些函数来实现这种效果。
ModifyMenu函数原型为:
BOOL ModifyMenu(
HMENU hMnu, // handle of menu
UINT uPosition, // menu item to modify
UINT uFlags, // menu item flags
UINT uIDNewItem, // menu item identifier or handle of drop-down menu or submenu