Delphi-Hint的多样化效果
delphi dataset 字段
一、介绍Delphi DatasetDelphi是一种基于对象的编程语言,用于开发Windows应用程序。
在Delphi中,Dataset是一种用来管理和存储数据的对象,它可以与数据库进行交互,实现数据的读取、写入和更新操作。
Dataset中的字段是指数据表中的列,它们定义了数据表中的各种属性和特征。
二、Delphi Dataset字段的类型在Delphi中,Dataset字段的类型包括字符串、数字、日期、布尔值等。
每种类型有不同的属性和方法,可以根据需要进行相应的操作。
字符串类型的字段可以进行字符串的拼接、查找和替换操作,而数字类型的字段可以进行数值的计算和比较。
三、Delphi Dataset字段的属性Dataset字段的属性包括字段名、字段类型、字段长度、字段精度、字段默认值等。
这些属性可以用来描述字段的特征和限制,以便在程序中进行相应的处理和验证。
字段长度可以限制字符串类型的字段的最大长度,字段精度可以限制数值类型的字段的小数位数。
四、Delphi Dataset字段的操作在Delphi中,可以通过Dataset对象的方法和属性对字段进行操作。
常见的操作包括读取字段值、设置字段值、验证字段值、获取字段属性等。
可以通过字段名来读取和设置字段值,通过字段属性来获取字段的类型和长度等信息。
五、Delphi Dataset字段的事件Dataset字段的事件是指在字段发生特定操作时触发的事件。
常见的事件包括字段值的改变、字段验证失败、字段获取焦点等。
通过处理这些事件,可以实现对字段值的进一步处理和验证,从而提高程序的健壮性和用户体验。
六、Delphi Dataset字段的应用Dataset字段在Delphi应用程序中有着广泛的应用。
它可以用来管理数据库中的数据,实现数据的增删改查操作,同时也可以用来进行数据的处理和展示。
在实际应用中,可以通过Dataset字段来实现对数据的灵活控制和操作,从而满足不同的业务需求。
delphi的Hint详解
Delphi的HintDelphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置:ShowHint := True;Hint := ‘提示信息’;不必写一行代码,相当方便。
但有时我们又想自己定制提示的效果,使其看起来更美观更具个人特色,没关系,Delphi完全有办法让你写出自己喜欢的Hint效果。
Delphi的Hint功能实现归类在Application类中,所以我们可以在Application类中看到数个关于Hint的属性,这些属性可以设置Hint窗口的颜色,停留时间,出现时间等,设置了这些属性,将对整个工程的Hint功能起到影响。
这样做的好处当然是统一了Hint的风格,并且让其他类不必去理会Hint的实现。
我们可以建一个简单的工程,并放一个按钮,将按钮的ShowHint设为True,再对Hint设一个值。
运行程序,当光标指到按钮上时,便会出现一个提示窗口。
但如果我们在主窗口的创建事件中写下:procedure TForm1.FormCreate(Sender: TObject);beginApplication.ShowHint := False;end;这些再运行程序,就不再有提示出现了,由此可知Application的ShowHint 控制整个工程的Hint是否显示。
如果你对于平常所见的Hint窗口的颜色感到厌烦,那么可以设Application 的HintColor为其他颜色。
但此时有一个问题,如果HintColor设为黑色,则提示字体也为黑色,就看不到提示信息了。
为此,我们得了解另一个全局对象,事实上当程序运行时,会创建三个全局对象:Application,Screen,Mouse,三个对象的职责非常明显。
Screen封闭了运行的工程在屏幕上的状态,它有一个HintFont的属性,允许你设置提示信息的字体。
我们可以写如下的代码:procedure TForm1.Button1Click(Sender: TObject);beginApplication.HintColor := clBlack;Screen.HintFont.Color := clWindow;Screen.HintFont.Size := 14;end;运行程序看看效果,提示字体变为白色,且变大了。
「第二篇」Delphi编程之好用的三方控件
「第二篇」Delphi编程之好用的三方控件豆丁扭屁屁 2017-03-18 22:35:08Delphi的强大与其庞大的组件库息息相关,目前的XE10.1版本已自带FastReport和GDI+等,下面我们来看一下几个非常强大且实用的组件库一、DevExpress套件Dev包含Grid、Chart、Reporting、Tree-Grid等100多个功能子控件,同时套包内包含Winform、WPF、Sliverlight、.net 版本和 .NET Application Framework 开发框架。
适用各种桌面、Web应用程序开发,尤其是Winform应用程序开发。
Dev可以说是目前VCL组件包中最为强大的组件包,功能多样化,组件多样化,配合起来可以开发出非常强大的程序,尤其是Dev的Grid类控件,数据库开发的福音,能满足你所有的需求。
目前支持XE10.1的Dev版本为网友改进的DevExpress15.2.2版本,一键安装,轻松方便。
上图为打开一键安装端的界面,路径选择为Dev控件包的文件夹地址上图为安装完成后的界面,可以点击close结束安装二、TMS套件TMS也是一套极为强大的控件套装,基本涵盖了你极大的控件需求,100多个控件非常丰富。
目前支持XE10.1的TMS版本为TMS Component Pack v8.3.4.0。
打开delphixe10.1—>file—>open—>TMSDXE10GROUP.GROUPPROJ,在delphi界面右侧会看到下图然后依次install以bpl为后缀的文件即可,如下图上图选择install上图为安装完成后的提示,每一个都是一个控件三、AlphaControls组件包AlphaControls是一套含一些扩展属性的标准组件,主要用于界面美化,组件包内含有100多个皮肤,可以设计出界面炫酷的程序。
目前支持XE10.1的AlphaControls版本为AlphaControls.v.11.13。
DELPHI常见属性说明
****************************************************************本作品由电脑技术联盟收集来自网络,版权归原作者所有。
如有异议,请留言。
**************************************************************** DELPHI常见属性说明:ALIGN 设置组件对齐(同其父容器)方式BORDERSTYLE 设置组件边框形状CAPTION 设置组件标题CTL3D 设置组件边框是否为3D模式,若BORDERSTYLE设置为BSNONE则此属性无效COLOR 设定组件背景颜色CURSOR 设定鼠标经过组件时光标所显示的形状ENABLED 设定组件是否能使用,当设为FALSE时组件会呈灰色FONT 设定组件内文字的字型、字体大小、颜色等HEIGHT 设定组件高度HELPCONTENT 用来为帮助说明文件中的索引值建立关联LEFT 设定组件与父组件左边框间的距离POPUPMENU 设定鼠标右键(弹出式)快捷菜单TABORDER 设定组件在按下TAB键后焦点(FOCUS)移动的顺序TABSTOP 若设为FALSE,则按TAB键后焦点并不会在此组件上停留TOP 设定组件与父组件上边框间的距离VISIBLE 设定组件是否可见,此属性只在执行时起作用WIDTH 设定组件显示宽度DELPHI常见事件说明:ONCHANGE 当组件有所改变时触发的事件ONCLICK 当在此组件上按下鼠标左键时触发的事件ONDBLCLICK 当在此组件上双击鼠标左键时触发的事件ONENTER 当焦点进入此组件时触发的事件ONEXIT 当切换到其它组件使该组件失去焦点时触发的事件,但当切换到另一窗体或另一应用程序时此事件不会触发ONKEYDOWN 当在拥有焦点的组件上按下某个键时触发的事件,按键包括所有的英文、数字键、方向键、功能键等ONKEYPRESS 当在拥有焦点的组件上按下某个键时触发的事件,但按键只包括所有的英文、数字键、TAB、BACKSPACE、ENTER、ESCONKEYUP 当使用者放开键盘上的按键时触发的事件,按键看ONKEYDOWN ONMOUSEDOWN 当鼠标键在某个组件按下时触发的事件(其参数包括哪个鼠标键被按下、是否有特殊键(CTRL、ALT、SHIFT)被按下以及鼠标当前的坐标)ONMOUSEMOVE 当鼠标在组件内移动时触发的事件ONMOUSEUP 当鼠标键在组件上方放开时所触发的事件ONPAINT 在组件需要被重画时触发的事件,此时可进行自定义画法窗体组件(FORM)常见属性及事件属性说明ACTIVE 指示此窗体是否拥有FOCUSACTIVECONTROL 指示窗体中目前拥有FOCUS的组件ACTIVEMDICHILD 指示主窗体中目前拥有FOCUS的子窗体ACTIVEOLECONTROL 用于取得或设定此窗体上的OLE控制,以响应FOCUS改变BORDERICONS 指定哪些ICON显示在窗体的TITLE BAR上BORDERSYTLE 用以指定窗体BORDER外观及行为CANVAS 提供使用者可在窗体上CLIENT内自行显示的画板,一般在ONPAINT事件中使用CLIENTHANDLE 提供可存取系统内部使用的MDI CLIENT WINDOW HANDLE CLIENTHEIGHT 窗体客户区高度CLIENTRECT 窗体客户区所对应的矩形CLIENTWIDTH 窗体客户区宽度DEFAULTMONITOR 指定此窗体所显示的预设的显示器,用于多显示器环境下DESIGNER 此窗体的设计界面,一般不用用户设定DropTARGET 用以指定窗体是否为目前DRAG AND Drop动作的目标FLOATING 用以指示此窗体是否正在停泊在另一个视窗内FORMSTATE 用于指示此窗体所处状态FORMSTYLE 用于指示窗体的样式HELPFILE 用于指定HELP文件ICON 指定窗体最小化时所显示的ICONKEYPREVIEW 指定此窗体是否需在目前的ACTIVE组件之前取得键盘输入MDICHILDCOUNT 用于取得子窗体数目MDICHILDREN 用于取得子窗体(数组)MENU 用于指定窗体主菜单MODALRESULT 当窗体作用为MODAL对话框时,作为对话框的效果MONITOR 用于指示窗体所显示的显示器OLDCreateORDER 指定ONCreate和ONDESTROY事件何时发生OLEFORMOBJECT 对包含在此窗体内的OLE对象指定OLEFORM界面PARENT 设定此窗体的PARENTPARENTBIDIMODE 指定是否此窗体使用PARENT的BIDIMODE PIXELSPERINCH 表示此窗体设计时系统上字形的比例POSITION 表示此窗体的大小及位置PRINTSCALE 表示此窗体打印的比例SCALED 用于指定窗体的大小是否依据PIXELSPERINTCH属性来指定TILEMODE 用于指定TILE方法被调用时子窗体如何排列VISIBLE 用于设定此窗体是否被显示WINDOWMENU 如果窗体是一个MDI PARENT窗体,用于指定视窗的菜单WINDOWSTATE 用于指定窗体如何显示于屏幕中事件说明ONPAINT 当窗体必须重画时发生ONHELP 当窗体收到HELP请求时发生ONDRAGDrop 当一个对象拉进此窗体并丢下时发生ONDRAGOVER 当一个对象拉进此窗体时发生ONCONSTRAINEDRESIZE 在ONCANRESIZE事件发生后发生ONCANRESIZE 当企图改变窗体尺寸时确认是否改变ONRESIZE 当窗体尺寸改变时发生ONSTARTDOCK 当对象开始停泊时发生ONENDDOCK 当对象停泊结束时发生ONUNDOCK 当窗体解除停泊时发生ONDOCKDrop 当其它窗体停泊到此组件时发生ONDOCKOVER 当其它窗体向此组件停泊接近时发生ONGETSITEINFO 当有关停泊消息传回此窗体时发生ONCreate 当窗体创建时发生ONCLOSE 当窗体即将关闭时发生ONCLOSEQUERY 在窗体即将关闭时确认是否真的关闭窗体ONDESTROY 当窗体释放时发生ONSHOW 当窗体显示时发生ONHIDE 当窗体隐藏时发生ONACTIVATE 当窗体获得FOCUS时发生ONDEACTIVATE 当窗体失去FOCUS时发生菜单组件(MAINMENU、POPUPMENU)常见属性属性说明AUTOMERGE 用于指定主窗体的主菜单是否与其它的窗体主菜单合并HANDLE 主菜单的视窗代码BIDIMODE 用于指定选项名是由左至右读或由右至左读IMAGES 用于指定选项旁可显示的图像内容ITEMS 选项的内容OWNERDRAW 用于指定选否是否可自行显示PARENTBIDIMODE 用于指定是否继承父控件的BIDIMODE属性WINDOWHANDLE 使用此菜单的视窗代号菜单项属性说明ACTION 用于指定此选项对应的动作BITMAP 用于指定在此选项旁的图像内容BREAK 用于指定是否从此选项开始建立新的分栏CAPTION 选项显示的名称CHECKED 用于指定此选项是否CHECKEDCOMMAND 用于指定选项对应的WINDOWS COMMAND IDCOUNT 用于指示此选项的子选项数目DEFAULT 用于指示此选项是否为子菜单的预设项目EANBLED 用于指示此选项是否可用GROUPINDEX 用于指定此选项所隶属的逻辑群组,以控制主菜单之间的合并或单选钮互斥的效果HANDLE 对应此选项的Drop-DOWN菜单的WINDOWS MENU HANDLE HELPCONTEXT 对应此选项的HELP CONTEXT IDHINT 用于设定鼠标移入选项范围时的提示信息IMAGEINDEX 用以指定哪个图像显示于选项旁ITEMS 此选项的子菜单项目数MENUINDEX 此选项的父菜单内的选项索引值PARENT 此选项的父菜单的选项RADIOITEM 用于设定此选项是否与同组其它选项互斥SHORTCUT 用于设定此选项的快捷键VISIBLE 用于设定此选项是否可见标签(LABEL)常用属性:属性说明ALIGNMENT 用于设定标签内文本的对齐方式(水平方向)AUTOSIZE 用于设定标签组件是否根据组件内文本自动调整大小FOCUSCONTROL 用于设定键入标签内快捷键后应接受FOCUS的组件LAYOUT 用于设定标签文本如何放置(垂直方向)SHOWACCELCHAR 用于设定是否允许标签内文本是否显示画有下划线的快捷键值TRANSPARENT 用于设定组件是否透明WORDWRAP 用于设定组件文本宽于组件宽度时是否自动换行编辑框(EDIT、MASKEDIT)的属性:属性说明AUTOSelect 用于设定组件获得FOCUS后是否自动选取所有文本AUTOSIZE 用于设定组件内增加输入文字时,是否自动加长组件长度BORDERSTYLE 用于设定组件边框风格CANUNDO 用于设定组件内文本是否可UNDOCHARCASE 用于设定组件内文本大小写状况HIDESelectION 用于设定组件失去FOCUS时,选取文本是否有效MAXLENGTH 用于设定组件内输入文本的最大长度MODIFIED 可用于判定组件内文本是否发生更改OEMCONVERT 决定是否将编辑框内文字ASCII码转换成OEM,再由OEM转换为ASCIIPASSWORDCHAR 设定密码输入时取代的字符READONLY 设定编辑框内容是否可修改SELLENGTH 指示编辑框内选定文本长度SELSTART 指示编辑框内选定文本的起始位置SELTEXT 指示编辑框内选定文本EDITMASK 指示MASKEDIT掩码字符串按钮(BUTTON、BITBTN、SPEED BUTTON)常见属性:普通BUTTON属性说明CANCEL 设定此按钮是否为取消钮(取消钮即在程序执行时若按ESC键可执行此按钮的单击事件)DEFAULT 指按下ENTER键后是否执行此按的单击事件MODALRESULT 通常用于对话框窗体中,当按下此钮时,此属性值即成为此按钮隶属的MODAL窗体的MODALRESULTCAPTION 设定或取得此按钮上显示的标题BITBTN属性说明(图形式按钮)GLYPH 用以设定此按钮上出现的图像KIND 用以指定按钮的类型LAYOUT 用以设定图像在按钮上显示的位置MARGIN 用以设定按钮边与图像边之间的距离(以象素为单位)NUMGLYPHS 用以设定按钮图像的数目SPACION 用以设定图像与文本之间的距离(以象素为单位)STYLE 用以设定按钮外观SPEED BUTTON属性说明(快速按钮)ALLOWALLUP 用以设定是否包含此快速钮的组中是否能同时保持UP状态DOWN 用以设定此快速钮是否已被选取FLAT 用以设定此快速钮是否显示3D边的效果GROUPINDEX 用以设定快速钮的组TRANSPARENT 用以设定快速钮是否透明备注组件(MEMO)的常见属性和事件:属性说明LINES 用于取得组件中文本(为数组,因此可支持取单行文本)TEXT 用于取得组件中文本(字符串)READONLY 用于设定组件文本是否可修改SCROLLBARS 用于设定组件滚动条模式WANTRETURNS 用于设定输入的ENTER键是否作为文本内容WORDWRAP 用于设定文本是否自动换行SELSTART 指示选中文本的起始位置SELLENGTH 指示选中文本的长度WANTTABS 用于设定输入的TAB键是否作为文本内容SELTEXT 指示选中文本事件说明MEMO.LINES.ADD() 在当前行增加一行文本MEMO.LINES.APPEND() 在末追加一行文本MEMO.LINES.Insert 在指定位置增加一行文本MEMO.LINES.Delete 删除指定行文本MEMO.LINES.LOADFROMFILE 从指定文件导入文本到组件MEMO.LINES.LOADFROMSTREAM 从指定流导入文本到组件MEMO.LINES.SAVETOFILE 将组件文本存为指定文件MEMO.LINES.SAVETOSTREAM 将组件文本存为指定流MEMO.CLEAR 清除组件所有文本MEMO.CUTTOCLIPBOARD 将选定文本剪切到剪贴板MEMO.COPYTOCLIPBOARD 将选定文本复制到剪贴板MEMO.PASTEFROMCLIPBOARD 从剪贴板粘贴文本到当前位置复选框(CHECKBOX)常见属性:属性说明ALIGNMENT 设定复选框标题位置ALLOWGRAYED 决定复选框是否存在GRAYED状态CHECKED 决定复选框状态STATE 指示复选框状态单选按钮(RADIOBUTTON)常见属性:(提供互斥选项,因此通常用于成组实现,可用GROUPBOX或RADIOGROUP实现)属性说明ALIGNMENT 设定单选框标题位置CHECKED 决定单选框状态组框(GROUPBOX)常见属性:(用于作容器)属性说明CAPTION 组框标题,通常用于指示组件用途单选分组框(RADIOGROUP)常见属性:属性说明CAPTION 指示单选组合名称COLUMNS 指示单选按钮又单行或多行为单位显示ITEMS 单选按钮标题内容(以行为单位)ITEMINDEX 指示当前选定的单选按钮的索引值列表框(LISTBOX)常见属性:属性说明CANVAS 提供自定义显示列表框项目内容的画板,用于ONDRAWITEM事件COLUMNS 设定多重列列表框的列数EXTENDEDSelect 指定是否可使用SHIFT键进行连选ITEMHEIGHT 设定列表框项目的高度ITEMINDEX 指定选取的项目的索引值ITEMS 项目的字符串内容MULTISelect 设定是否允许多重选取SELCOUNT 列表框中选定项目数目SelectED 指示某个项目是否被选取SORTED 指定列表框中项目击者是否按字母顺序排序STYLE 指示列表框显示模式TOPINDEX 指示列表框顶端项目的索引值组合框(COMBOBOX)常见属性:属性说明CANVAS 提供自定义显示组合框项目内容的画板,用于ONDRAWITEM事件CHARCASE 设定组合框内文字字母大小写状况DropDOWNCOUNT 设定组合框下拦菜单最大显示项目个数DropPEDDOWN 用于判定组合框是否处于下拉菜单的状态ITEMINDEX 指示下拉菜单中目前被选取的项目的索引值ITEMS 下拉菜单项目内容MAXLENGTH 设定组合框中编辑部分可输入的字符最大个数SELLENGTH 指示组合框编辑部分被选取文本长度SELTEXT 指示组合框中编辑部分被选取文本SELSTART 指示组合框中编辑部分被选取文本起始位置STYLE 指示组合框显示模式滚动条(SCROLLBAR)常见属性:属性说明MAX 指示滚动条最大值MIN 指示滚动条最小值POSITION 指示滑动块当前位置LARGECHANGE 指示鼠标按滚动条框至滑动块之间区域时移动值SMALLCHANGE 指示鼠标按下滚动条两端箭头时移动值KIND 指示滚动条类型(水平型或垂直型)PAGESIZE 指示按下PAGEUP或PAGEDOWN时变化量图像框组件(IMAGE)常见属性:属性说明AUTOSIZE 本组件是否调整成为与读取图像同等大小INCREMENTALDISPALY 读较大型图像文件时是否逐步显示PICTURE 指向图像文件对象,能常为文件名STRETCH 是否将图像自动调整为本组件预设大小图像列表框(IMAGELIST)常见属性:属性说明BKCOLOR 指定背景颜色BLENDCOLOR 前景混合颜色COUNT 组件中图像个数DRAWINGSTYLE 指示本组件绘出图像时采用的方式HEIGHT 组件内各图像的高度值IMAGETYPE 绘制图像时是否加上MASK图像MASKED 设定是否可以加上MASKWIDTH 组件内各图像的宽度值工具栏组件(TOOLBAR)常见属性:属性说明AUTOSIZE 设定工具栏是否自动调整大小以容纳BAND BUTTONCOUNT 工具栏中按钮个数BUTTONHEIGHT 工具栏中的按钮高度BUTTONS 以INDEX表示在工具栏中的按钮BUTTONWIDTH 工具栏中的按钮宽度DISABLEDIMAGES 当工具按钮DISABLED时显示的图像列表FLAT 是否设定浮出效果HOTIMAGES 当鼠标指向工具栏按钮时显示的图像列表IMAGES 提供显示在工具栏按钮上的图像列表INDENT 设定工具栏左侧间隔大小LIST 设定标题文字是否显示在图形的右方ROWCOUNT 指定工具栏的行数SHOWCAPTIONS 设定工具按钮是否显示文字WARPABLE 设定工具栏排列按钮时是否自动换行TOOLBUTTON属性说明ALLOWALLUP 设定同组工具按钮是否可以都未被选取DOWN 设定按钮是否可停在被按下的状态DropDOWNMENU 当工具按钮按下时所出现的菜单GROUPED 设定同组工具按钮IMAGEINDEX 关联的图像在图像列表框中的索引值INDETERMINATE 是否提供工具栏第三种情况MARKED 设定按钮是否有阴影STYLE 设定按钮样式WRAP 设定在此工具按钮新增者是否为另一新栏酷栏(COOLBAR)常见属性:属性说明ALIGN 设定COOLBAR的对齐方式AUTOSIZE 设定酷栏是否自动调整大小以容纳BAND BANDBORDERSTYLE 设定BAND的边界风格BANDS 显示COOLBAR内所有的BANDBITMAP 设定BAND的背景图像FIXEDORDER 设定是否可自行调整BAND的顺序FIXEDSIZE 设定是否以单一设度限定酷栏内所有的BAND IMAGES 提供BANDS所需要的图像SHOWTEXT 设定BAND是否显示文字VERTICAL 设定BAND的排列方式(水平排列或垂直排列)DOCKSITE 是否允许停泊状态栏组件(STATUSBAR)常见属性:属性说明PANELS 设定状态栏组件区域SIMPLEPANEL 设定状态栏单个区域SIMPLETEXT 设定状态栏单个区域的文本ALIGNMENT 设定区域文本对齐方式TEXT 设定区域显示文本WIDTH 设定区域宽度进度条组件(PROGRESSBAR)常见属性和事件:属性说明MAX 设定POSITION最大值MIN 设定POSITION最小值orIENTATION 设定组件显示的方向POSITION 设定进度条当前位置SMOOTH 设定进度条的进度指针为平滑或间隔方式STEP 设定调用STEPIT方法时所增加的量事件说明STEPBY(INTEGER)进度条增加值(由参数指定增量)STEPIT 进度条增加值(由STEP属性指定增量)轨迹条组件(TRACKBAR)常见属性:属性说明FRQUENCY 设定本控制刻度间的间隔值LINESIZE 设定按方向键时移动量MAX 设定POSITION最大值MIN 设定POSITION最小值orIENTATION 设定本组件显示的方向PAGESIZE 设定PAGEUP或PAGEDOWN的移动量POSITION 设定本组件当前位置SELEND 设定选定范围的最后位置SELSTART 设定选定范围的开始位置SLIDERVISIBLE 设定本组件中滑块是否显示TICKMARKS 设定刻度显示的方向位置TICKSTYLE 设定组件刻度记号的配置方式多页标签(PAGECONTROL)常见属性属性说明MULTILINE 设定组件是否依标签数目自定调整行数ACTIVEPAGE 当前组件选中标签TABPOSITION 设定组件标签所有位置STYLE 设定组件标签样式CAPTION 设定指定标签标题PAGEINDEX 指示标签的位置TABVISIBLE 设定指定标签是否显示。
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属性之Hint
Delphi属性之HintDelphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置:ShowHint := True;Hint := ‘提示信息’;不必写一行代码,相当方便。
但有时我们又想自己定制提示的效果,使其看起来更美观更具个人特色,没关系,Delphi完全有办法让你写出自己喜欢的Hint效果。
Delphi的Hint功能实现归类在Application类中,所以我们可以在Application类中看到数个关于Hint的属性,这些属性可以设置Hint窗口的颜色,停留时间,出现时间等,设置了这些属性,将对整个工程的Hint功能起到影响。
这样做的好处当然是统一了Hint的风格,并且让其他类不必去理会Hint的实现。
我们可以建一个简单的工程,并放一个按钮,将按钮的ShowHint设为True,再对Hint设一个值。
运行程序,当光标指到按钮上时,便会出现一个提示窗口。
但如果我们在主窗口的创建事件中写下:procedure TForm1.FormCreate(Sender: TObject);beginApplication.ShowHint := False;end;这些再运行程序,就不再有提示出现了,由此可知Application的ShowHint控制整个工程的Hint是否显示。
如果你对于平常所见的Hint窗口的颜色感到厌烦,那么可以设Application的HintColor为其他颜色。
但此时有一个问题,如果HintColor设为黑色,则提示字体也为黑色,就看不到提示信息了。
为此,我们得了解另一个全局对象,事实上当程序运行时,会创建三个全局对象:Application,Screen,Mouse,三个对象的职责非常明显。
Screen封闭了运行的工程在屏幕上的状态,它有一个HintFont的属性,允许你设置提示信息的字体。
我们可以写如下的代码:procedure TForm1.Button1Click(Sender: TObject);beginApplication.HintColor := clBlack;Screen.HintFont.Color := clWindow;Screen.HintFont.Size := 14;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的8个技巧
Delphi的8个技巧2. Delphi hint的字体和色彩如何改变Delphi中TApplicatio n的属性有HintColor及HintPauseo可以通过设置HintColor改变应用程序中的Hint的颜色、通过设置HintPause 改变触发出nt的时间。
但遗憾的是: Delphi中Hint的字体不可以改变。
3. Delphi里如何计算日期算时间在delphi中是最容易的,如下:var ss:TDateTime其实Tdatetime是个双精度的浮点数,它的小数点前表示天数:如ss二ss+20 表示从ss开始向后20天,如果ss二234.567它就表示234.567天,当然是从公元0年开始计算的!4 如何用Delphi编ScreenSaver? (null)屏幕保护程序无非是扩展名换成了SCR的可执行程序,它接受两种命令行参数: s运行命令参数c配置命令参数Windows通过向程序发s命令行参数来启动程序。
要注意的是:程序的窗口是无边框和标题:窗口大小应与屏幕大小样;还要注意窗口的事件的处理。
5. Delphi 中如何改目录的名字调用RenameFile函数,如:RenameFile('c:\wang\temp','c:\wang\tmp');6. DELPHI显示JPE G图像文件只要uses中加入JPE G就行JPE G单元里是有个TJPEGlmage类,可定义变量如Jpe g,用LoadFromFile调入某个JPEG文件,然后用Form的Canvas.Draw(x,y,Jpeg)即可显示7. Delphi中对Jpe g格式文件的处理..(1).在Uses 中加入JPEG单元!(2).定义个全程变量,例如var AJPEG: TJPEGlmage;(3).在Form 的OnCreate事件中加入·Canvas.Pen.Co1or:二clB1ackCanvas.Pen.Sty1e:二psSo1id;Canvas.Brush.co1or:二clBtnFaceCanvas.Brush.Sty1e:二bsSo1id;//此上是设置Canvas的一些属性,便于以后//C1ear Form and Load a new]PEG fi1e;A]peg:二T]peglmage.Create;//动态生成A]peg; A]peg.LoadFromFi1时'D:\Temp.j阻')//生成A]peg 后,调入]PEG 文件!(4).在Form 的OnPain事件中加入Canvas.Rectang1e(2,2,560,430); //画个黑框的矩形将图片围住!x:二10; y:二10;Form1.Canvas.Draw(x,y,A]peg); //以(x,y)为左上角输出]PEG文件!//实际上其作用是当图形被破坏是使图形恢复!(5).在,Load'或,Browse' 按钮的OnClick事件中加入:beginif OpenPictureDia1og1.ExecutethenbeginA]peg.Free;//释放旧A]peg;A]peg:二T]peglmage.Create;//产生一个新的A]peg;A]peg.LoadFro mF i1e(OpenPictureDia1og1. Fi1ename);//载入]PE G文件!endCanvas.Rectang1e(2,2,560,430);//将Form C1ear;x:二10y:二10;Form1.Canvas.Draw(x,y,A]peg);//显示新的A]peg;end8. DELPHI3启动画面in your *.dbrfi1es do itbegin{Create a sp1ashform}sp1ash:二Tsp1ash.Create(self);sp1ash.Show;sp1ash.updateApp1ication.lnitia1ize;App1ication.CreateForm(..)end;sp1ash. close; sp1ash.free; App1ication.Run。
delphi各版本的特性
delphi各版本的特性delphi 各新版本特性收集Delphi XE6新增了⼀些特性并增强了原有的功能,主要有以下⼏个⽅⾯:IDE(整合开发环境)InternetXML(扩展标记语⾔)Compiler(编译器)COM/Active XDatabase support(数据库⽀持)CORBAActions(动作)Custom Variants(可定义的可变类型)VCL 单元和特性RTL单元和特性Cross-platform development(跨平台开发)Translation tools(翻译⼯具)Deployment changes(发布机制)Help system extensibility(扩展的帮助系统)注意:某些特性不是所有Delphi版本都有。
VCL单元及特性新的VCL单元以及新的特性(所有版本)新增组件:TLabeledEditTLabeledEdit是ExtCtrls.pas单元中新增加的,它演⽰了如何使⽤⼦组件。
TLabeledEdit是⼀个带有标签的编辑控件。
标签(Label)是这个控件的属性之⼀。
TValueListEditorValueListEditor 是⼀个⾃定义的栅格组件,它使⽤TStrings保存键/值配对。
它的⼯作⽅式类似于对象检视器(Object Inspector)。
TComboBoxExTComboBoxEx是⼀个新的组合框控件,它允许在列表⽂字的旁边出现图⽚。
TColorBoxTcolorBox是⼀个新的组合框组件,⽤来选择各种颜⾊。
改进的特性包括:⼤多数窗⼝控件(WindowControl)都发布了以下Bevel相关属性:BevelEdgesBevelInnerBevelOuterBevelKindBevelWidth⼦组件(Subcomponents)现在,组件可以拥有创建⼦组件的其他组件。
举例来说,⼀个组件可以有⼀个组件引⽤的属性,这个被引⽤的组件,可以是内部的(也就是⼀个⼦组件),也可以是外部的(普通的组件引⽤)。
Delphi ActionList详解
Delphi ActionList详解一个友好的用户界面,必须具有下拉菜单,弹出菜单,工具条和快捷键。
同样一个功能,程序员可能要提供几种操作方式,如文本拷贝,菜单命令&Copy,快捷键Ctrl+C,工具条上的拷贝按钮,都是程序员提供给用户的操作,可以大大方便了不同层次的用户。
但是,多增加一种操作方式,就意味着增加响应事件的代码,还有,实现统一功能的多个操作必须一致,如剪切板上不为空的时候,菜单命令,快捷键,按钮,都是可以选择的Enabled状态,而剪切板上没有内容时,这些构件的Enabled状态都为假。
当然,如果不集中控制这些细节的话,实现相同功能的构件要一致,必须多增加代码,控制较为复杂。
Action就是将实现某个功能的细节统一管理起来,如Caption, Checked, Enabled, HelpContext, Hint, ImageIndex, ShortCt, Visible, onExecute等属性和事件。
程序员设置Action属性的同时,还要实现执行Action的代码onExecute。
定义了Action后,将其连接到一个菜单项,或者按钮上时,Action定义的属性和OnExecute事件,马上取代了原来的设置,并且建立了连接。
通过这个连接,当Action 的属性发生变化时,如Enabled发生变化,那么与之连接的构件属性都会自动更新;反过来,当构件对应的事件被执行时,Action的onExecute也被调用。
8.1.2 Action 和ActionListAction是定义了最小的功能单位,使用它来在不同构件间,达到代码集中管理。
表4-12定义了Action 的一些属性:ActionList 是将多个Action统一管理的构件,在窗体设计阶段,使用它的弹出菜单,可以增减Action和定义Action的属性。
它本身的属性Image连接了一个TImageList,指出它所包含的Action使用那个TImageList来定义ImageIndex。
DELPHI中状态条构件的妙用
Delphi中状态条构件的妙用[1999-06-21]Delphi中状态条构件的妙用[1999-06-21]胡晓鹰TStatusBar构件的主要属性实际使用过程中,我们常用的只有一个:Panels属性。
这个属性本身是一个TStatusPanels对象,而在一个状态条可以有很多个TStatusPanels对象。
在这个TStatusPanels对象中,我们经常使用的是其中的Text和Style属性。
比如:StatusBar1.Panels[0].Text := ′这是显示在状态条中的Hint′;表示显示在StatusBar1中的Panels[0]中的字符串要创建状态条构件的TStatusPanels对象相当简单:(1)双击状态条构件,Delphi4会自动弹出Editing StatusBar1 Panels 对话框。
(2)在这个对话框中用鼠标单击左上角的Add New按钮或者使用Insert键就可以向StatusBar中增加TStatusPanels对象了。
(3)任意选择一个TStatusPanels对象,在属性观察器(Object Inspector)中可以设置每个TStatusPanels对象的属性。
显示当前选择的选单项的有关信息我们希望用户把鼠标移动到某个选单项的时候,自动在状态条中显示关于这个选单的功能、使用注意事项等。
(1)在Form上放置一个TStatusBar构件,设置其Name为StatusBar1。
(2)在Form上放置一个TMainMenu构件,设置其Items属性,并且设置选单中的每个TMenuItem对象的Hint属性。
(3)增加以下代码:procedure TForm1.FormCreate(Sender: TObject);beginApplication.ShowHint := True;Application.OnHint := DoShowHint; //指定显示系统Hint的过程end;procedure TForm1.DoShowHint(Sender : TObject);beginStatusBar1.Panels[0].Text := Application.Hint; //显示应用程序的提示end;显示锁定键的状态为了实时显示锁定键盘的当前状态,我们需要一个TTimer构件,每隔一定的时间检测锁定键的当前状态,并把检测出来的结果显示在状态条中。
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使用帮助提示(Hint)制作简单即时的系统帮助
Delphi使用帮助提示(Hint)制作简单即时的系统帮助Delphi 使用帮助提示(Hint)制作简单即时的系统帮助使用Windows应用程序,用户可以把鼠标置于程序的某个部件上,如按钮,工具栏等。
鼠标在部件上停留超过一定时间后,应用程序将会显示一个弹出窗口,里面有部件名称和概述。
这种帮助简单即时,特别适用于工具栏或按钮、输入框等可视控件较多的场合。
1、利用Hint特性提供弹出式帮助property Hint: string;该特性用于设置帮助提示框中的文本字符串。
Hint特性应用于所有控件,包括应用程序控件和菜单控件。
因为应用程序部件不是可视部件,因此不能在Object Inspector窗口中定义Hint特性。
但可以在定义可视控件的Hint特性时同时定义应用程序控件的Hint特性,定义时只需用“|”字符分开。
另外需要把应用程序的ShowHint特性设为True,把需要显示帮助提示的控件的ShowHint特性设为True,ParentShowHint特性设为False。
这样在程序运行时,只要把鼠标在需要帮助的控件上方停留500毫秒就会出现在Hint特性中设定的提示信息。
2、控制提示窗口的开关帮助提示在应用程序的使用初期会带来很多方便,但是在使用了一定时间后一旦用户掌握了有关常用控件的功能后,随着鼠标的移动反复提示帮助反而带来不方便,因此用户可能提出关闭部分常用控件提示功能或全部关闭。
为此Delphi提供了两个特性来让开发者和用户无论是在设计期间还是运行期间都可以灵活的开关帮助提示窗口。
下面先看以下控制开关帮助提示的特性是如何声明的。
ShowHint特性:property ShowHint: Boolean;该特性为True时显示Hint特性中设置的提示信息,该特性为False时不显示提示信息。
ParentShowHint特性:property ParentShowHint: Boolean;该特性为True时,该控件的ShowHint特性继承父控件的ShowHint特性,该ParentShowHint为False时,该控件的ShowHint特性不受父控件ShowHint特性的影响。
Delphi中ListBox控件的六种特效
Delphi中ListBox控件的六种特效Delphi5是Borland公司开发的全新的可视化集成开发环境,它使用语法严密的Pascal语言,并封装了Windows中的构件,形成了自己的一套控件库体系-VCL(Visual Component Library)。
VCL控件体系具有很强的扩展性,为开发者设计特殊视觉效果的控件提供了技术支持。
本文就Delphi5中的TListBox控件,通过多种手段实现了它的七种特殊视觉效果,以期对广大程序爱好者在界面设计上有所启发与帮助。
一、基础知识涉及TListBox自定义重绘的属性和事件:属性:Style: 取值为lbStandard(标准风格),lbOwnerDrawFixed(所有者固定绘制风格),lbOwnerDrawVariable(所有者可变绘制风格)说明:1.当Style = lbStandard时,使用控件默认的绘制风格。
2.当Style = lbOwnerDrawFixed时,用户只能在控件默认大小的区域绘图。
3.当Style = lbOwnerDrawVariable时,用户可改变控件默认的绘图区域大小并决定如何绘图。
事件:OnMeasureItem:当Style = lbOwnerDrawVariable时计算TListBox中某项的高度时调用。
OnDrawItem :当Style = lbOwnerDrawVariable时由用户例程确定如何绘制TlistItem。
由此,可以看出,要实现定制界面风格的TListBox,首先,需要设置TlistBox的Style 属性为lbOwnerDrawVariable,其次,需要写自定义的重绘事件。
二、特殊效果的实现在窗体(Form1)上放置5个ListBox,名称分别为ListBox1……ListBox5,将所有ListBox的Style属性设置为lbOwnerDrawVariable;在Form1上添加两个TImageList控件,命名为ImageList1,ImageList2;在ImageList1中装入两个16X16大小的图标;添加两个TButton控件,命名为Button1,Button2;再添加一个TImage控件,命名为Image1。
关于DELPHI程序多语言支持的问题
----------------仅供学习参考----------------关于DELPHI程序多语言支持的问题写DELPHI程序,是如何实现繁体化的?是如何开发英文版的?是通过外挂语言包吗?我完整地说一下我的问题:我写一个DELPHI程序,开发环境是是简体中文版本win xp系统+ Delphi 7的。
现在想做一个繁体版本以及其他非简体中文版本的出来。
此时遇到这几个问题:1、在非简体中文系统中均出现乱码或界面文字错位。
2、而且语言包速度太慢了,每次启动要预读一下语言文件进行界面翻译,工程量大的时候明显感到启动速度下降了3、因为工程量比较大,逐一设置“提示内容”及“界面内容”的语言包比较麻烦,所以不想用ini文件或dll资源库的语言包形式请问各位DELPHI高手你们是怎么做的?有没有一劳永逸的方法?听说DELPHI内置的多国语言功能,有没有用法帮助?还有没有其他一些好用简单强大的Unicode语言包控件?---------------------------------------------------------------------Delphi的多语言是这么用的,但是添加多语言后编译连接速度很慢,有时候10来分钟。
可以把你的Delphi的窗体文件分给翻译来翻译,如果是Delphi7,需要先用Conver.exe来转换为文本格式。
1、Project-New Application 创建你的中文版软件。
2、Project-Language-Add 添加你的语言,比如美国英语(ENU)。
或者File-New-Others-Dll Wizard3、保存后生成多个文件夹。
4、Project-Build All5、程序目录下生成和工程文件同名的语言文件:MyExe.ENU;MyExe.CHN,软件发布需要带这些文件。
6、把软件里面所有字符串定义为资源字符串。
resourcestringC_AppTitle = 'xx管理系统';C_Error = '错误';C_Warning = '警告';7、在软件中用如下代码切换语言:const//定义你得多语言:ENGLISH = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH;CHINESE = (SUBLANG_CHINESE_SIMPLIFIED shl 10) or LANG_CHINESE;usesReInit;...if LoadNewResourceModule(ENGLISH) <> 0 thenbeginReInitializeForms();end;更多请参考Delphi帮助,里面写得更清楚。
Delphi中常见组件属性
2007-11-17 11:32delphi中常用的控件属性列表按钮类组件button 组件:CAPTION 属性:用于在按钮上显示文本内容Cancel 属性:是否设置成默认的取消按钮,当设置为真的时候(true)按ESC触发改按钮的事件!Default 属性:是否设置成默认的确认按钮,当设置为真的时候按ENTER键的时候触发事件Hint 属性:设置当鼠标在按钮上短暂停留是显示的提示内容。
Showhint属性:是否显示提示内容默认为假!Bitbtn 组件Kind 属性:他的值就是位图按钮组件上所显示的图标!GLYPH 属性:用于在位图按钮上显示加载后的位图图形!Numclyphs 属性:用于指定位图按钮上所能使用的位图个数!Layout 属性:用于指定位图在位图组件上的位置!Speedbutton 组件Flat 属性:是否具有OFFICE 2000的风格Groupindex 属性:设置分组。
DOWN 属性:设置改按钮是否处于按下状态Allowallup 属性:设置同一组的快速按钮是否具有同时弹起的状态。
Radiobutton 组件Checked属性:是否处于选中状态Alignment属性:用于设置选择框和文字的排列方式!Checkbox 组件Allowgrayed属性:用来设置当前组件被选种时,是否为变灰状态!State 属性:设置当前复选框的状态。
文本类组件label 组件Alignment属性:用来设置标签中的文本在水平方向的排列方式!AUTOSIZE属性:用来设置标签的尺寸大小,是否随CAPTION属性中文字的字体大小而进行自动调节!Font属性:用来设置显示文字的字体,颜色!Layout属性:用于设置标签中的文本在垂直方向的排列方式!WORDWRAP属性:用于设置是否自动换行!EDIT组件Charcase属性:用于设置组件中文字的大小写显示方式!TEXT 属性:用于显示编辑框中的文字内容Modified属性:用来判断edit组件里的文字内容是否被修改过,若为假,就是没有被修改过!Passwordchar属性:设置显示密码字符!memo组件lines属性:用于访问框中每一行的内容Maxlength属性:设置文本框中最大的文字输入量Scrollbar 属性:设置是否需要滚动条Wantretruns属性:用于设置在框中按’enter’键是否起回车作用Wanttabs 属性:用于设置在框中按’tab’键是否起移位作用。
Delphi2007新功能
Delphi2007新功能Delphi2007新功能 -- 有限的栈对象分类: Delphi 2007-08-27 14:50 2677人阅读评论(6) 收藏举报delphiintegerpascalconstructordestructorc++今天使用Delphi2007,一个误输入,无意中发现Delphi2007的record类型居然能够和TObject一样定义方法和属性,而且不需要调用类似TObject.Create方法就能生成一个record对象。
这是否意味着Delphi2007也能和C++一样,不仅能使用堆对象(new),也能使用栈对象(静态对象)呢?通过实验,答案是肯定的!这使我感到很兴奋,因为Delphi从诞生之日起,就限定了只能继承于TObject的堆对象,必须通过Create 和Free来建立和销毁一个对象,而不能使用栈对象。
而栈对象的好处就在于它能和其它类型一样很方便的定义,它能自动调用构造函数和析构函数,在作用域范围内(如函数内的局部对象)不必当心对象的建立和销毁问题。
要是Delphi具有了该功能,无意是Delphi编程者们的福音。
不过,进一步的测试却比较失望,请看下面的代码:constructor Create(a: Integer);constructor TMyRecord; overload; constructor TMyRecord(a, b: Integer); overload; // constructor TMyRecord(a, b: Integer); procedure Display;property xi: Integer read x;end;{ TMyRecord }constructor TMyRecord.Create(a: Integer); beginx := a;y := 0;end;procedure TMyRecord.Display;beginShowMessage(Format('x = %d, y = %d', [x, y])); end;constructor TMyRecord.TMyRecord;beginx := 0;y := 0;end;constructor TMyRecord.TMyRecord(a, b: Integer); beginx := a;可以看出,确实可以和C++一样定义一个局部record对象(不需要动态建立),而且可以使用该对象的方法和属性,请看TForm1.Button1Click方法的汇编码(CPU调试窗口粘贴下来的):从汇编码中看,定义的TMyRecord变量rec确实是标准C++栈对象一样的,在调用其方法的时候也隐含传递了Self指针(mov eax,esp),也就是说,rec在这里已经区别于普通的record 变量,而是一个实实在在的“对象”变量!但是遗憾的是,它不能定义destructor方法,虽然可以定义constructor方法(不能定义为Tobject缺省的Create方法,带参数可以),但却不能在定义的时候自动调用构造方法(我原本以为和C++一样,定义一个和TMyRecord同名的constructor方法,可以自动调用的),如此一来,静态栈对象的主要优点就丧失了,如果手工调用构造方法,和定义一个普通record变量,然后调用静态过程没什么两样了。
VCLSkin组件使用、Delphi界面美化图文教程
VCLSkin是个方便而且功能强大的界面加强型组件包。
只要在程序的任何一个窗体里加入SkinData组件,设置好相关属性,则所有这个程序里出现的窗体(包括对话框)都具有设置好的界面风格。
SkinStore组件又可以把一些皮肤文件预先存在里面,供SkinData 随时调用,表现出程序的多种风格。
下面简单地介绍它的用法。
基本安装:1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可;3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl文件名即可;4、如果以上Install按钮为失效的话,试试Compile按钮;5、是run time lib则在option下的packages下的runtimepackes加之。
如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决:1、反安装的源文件拷入到Delphi的Lib目录下;2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。
注意:所安装的控件是否与你所用的Delphi版本相适应。
RxLib的安装:首先在Delphi 5 的IDE 中将以前版本的Rxlib 反安装掉,删除RXCTL5.BPL、RXDB5.BPL、RXBDE5.BPL、DCLRX5.BPL、DCLRXDB5.BPL 和DCLRXBD5.BPL。
打开Rx 的运行包RXCTL5.DPK,在Package 窗口中按Compile 按钮编译RXCTL5.DPK ,然后用同样方法编译另两个运行包RXDB5.DPK 和RXBDE5.DPK ,将编译后的三个BPL 文件放到搜索路径中,如WINDOWS\SYSTEM等。
delphi多页组件(TPageControl)使用方法详解实例
delphi多页组件(TPageControl)使用方法详解实例TPageControl 组件是一组页面集,用于构造一个多页对话框,它显示多个交互页(TTabSheet 对象),用户通过选择出现在控制上部的标签,可以选择不同的页。
在设计时要加入新页,用鼠标右键单击该组件对象,出现一弹出菜单,选择“New Page”菜单项。
此组件用于需要显示大量信息的时候,屏幕上不可能把这些信息同时显示出来,解决的办法之一就是打开多个窗口,但是要管理好这些窗口不是一件很简单的事。
最好的解决办法就是把这些信息分门别类,放在同一个窗口的不同页上,这样能够节省大量的屏幕空间,翻阅起来又非常方便,就好比一本书,如果把书的每一页拆下摊在桌子上,要占很大的地方,如果装订成书,就只占一本书的地方。
Windows 风格的多页组件是用TPageControl 组件实现的,在TPageControl 组件上按下鼠标右键,在弹出的菜单中选择“New Page”命令,Delphi 7 将自动增加一页,默认的标签为“TabSheet+序号”。
多页组件具有如下特点:在设计期就能够直接按多页组件在页与页之间切换,而Win 3.1 风格的多页组件只有在修改ActivePage 属性后才能切换到另一页,不方便也不直观。
不需要与TTabControl 组件配合使用,在程序中也不需要响应按钮的事件。
TPageControl 组件的每一页都是一个TTabSheet 对象,为在运行时操纵每一页提供了极大方便。
1.TPageControl 组件的典型用法TPageControl 组件主要用于程序的选项窗口,因为选项窗口拥有很多方面的设置。
在TPageControl组件上单击鼠标右键,在弹出式菜单中选中“New Page”菜单命令,将会增加一个新的页面。
对于TPageControl 组件,利用鼠标左键单击标签与单击页面位置选中的对象是不同的。
如果单击标签,则选中了整个组件,同时设置当前激活页,这时按下Delete 键,会把整个组件删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ProcedureTMainForm.FormCreate(Sender:TObject);
begin
Application.HintPause:=0;//使文本提示盒立即出现
Application.HintPause:=clBlue;//以蓝色小方框的方式出现
�
TApplication是在Forms单元里定义的,因此让我们打开Forms.pas单元文件来作以下一些修改:
ProcedureSetHintColor(Value:TColor);
ProcedureSetHintFont(Value:TFont);
PropertyHintColor:TColorreadFHintColorWriteSetHintColor;
Delphi-Hint的多样化效果2008-11-09 上午 10:46
普通Hint:直接设置窗体和组件的ShowHint属性为True,并在其Hint中输入文字内容即可。
解释:ShowHint属性则决定鼠标指向构件时是否显示文本提示盒,Hint属性指定文本提示盒中的文本。用户可在对象监视器(ObjectInspector)的属性栏中设置或在程序中修改Hint及ShowHint属性。
begin
if (ValueΙΛnil) and (FHinWindowΙΛnil) then
FHintWindow.Canvas.Font:=Value;
end;
别忘了在新增的语句旁作一些必要的注释,可以很清楚地知道哪些语句是你自己加进去的。
将修改后的Forms.pas存盘,然后重建库文件,以后在你的库文件里,类TApplication就多了一个属性HintFont,你就可以很轻易的通过HintFont属性来修改文本提示盒的字体、字型大小了,如以下一段程序:
ProcedureTMainForm.FormCreate(Sender:TObject);
事实上,Delphi提供的文本提示盒输出方框、文本字型都太小,既不美观亦不易看清。值得庆幸的是,Delphi2.0版提供了全部构件的源代码,我们可以通过对类TApplication的源码作一些小修改,增加一个HintFont的属性,即可象修改HintColor一样来修改文本提示盒的字体、字型大小等。
PropertyHintFont:TFontwriteSetHintFont;
ProcedureTApplication.SetHintColor(Value:Color);
ProcedureTApplication.ቤተ መጻሕፍቲ ባይዱetHintFont(Value:TFont);
var
NewHintFont:=TFont.Create;
begin
NewHintFont:=TFont.Create;
:='楷体-GB2312';//设置字体为楷体
NewHintFont.Size:=12;//设置字型大小为12
Application.HintFont:ΚNewHintFont;
Application.HintHidePause:=10000;//延长停留时间为10秒
Application.HintShortPause:=100;
end;
另外,在编程中,我们还可以通过TApplication的OnHint事件获取鼠标指向构件的Hint文本。
end;
此外,Delphi绘制文本提示盒是在类THintWindow的方法ActivateHint中通过WindowsAPI资源函数SetWindowPos来实现的,这段代码在Controls.pas单元文件里,有兴趣的读者可以进一步修改这段代码以绘制其他任意形状(如椭圆、圆等)而不仅仅是矩型方框的文本提示盒!但或许最好的方法是从类THintWindow继承下来一个新类,并重载Activate Hint方法,然后在应用程序开始处给变量HintWindowClass指派一个新类实例。
经改造的Hint:Delphi还在类TApplication中提供了HintColor、HintPause、HintHidePause、HintShortPause几个属性来控制文本提示盒的输出方式。
一般来说,HintColor、HintPause、HintHidePause、HintShortPause通常在Form的OnCreate事件中设定它们的值(如有需要的话),如以下的一段程序。