DELPHI学习笔记1
DELPHI学习笔记1
listbox从文件中读取列表的操作
ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+'aaa.txt');
ListBox1.Items.Add(Edit1.Text);//添加了一个项目
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+'aaa.txt');
删除项目ListBox1.Items.Delete(listbox1.itemindex);
------------------------------------
判断窗体是否已经打开
iffrmPriceInput<>nilthen....
注意:有时窗体虽然已经关闭,但没完全释放,最好在该窗体关闭的CLOSE事件里加入frmPrintInput=nil;
------------------------------------
关闭MDI子窗口的方法
在子窗口的OnClose事件处理过程中加入如下代码
Action:=caFree;
Delphi为一个Form的关闭行为指定了四种方式,分别是:
caNone--禁止Form被关闭
caHide--Form不被关闭,但是被隐藏。被隐藏的Form仍然可以被程序访问。
caFree--Form被关闭,并且释放其占用的资源。
caMinimize--Form被最小化而不是被关闭,这是MDI子窗口的默认关闭行为。
------------------------------------
系统配置文件*.INI的操作
头部要引用IniFiles
1、声明变量
IniFile:TiniFile;
2、指明路径
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'option.ini');
3、读取变量,注意变量有类型之分readstring,readinteger...等
titleBMPFile:=IniFile.ReadString('TitleImage','FileName','');//IniFile.ReadString('组名','变量','默认值')
IniFile.ReadInteger
IniFile.ReadBool
4、写入或修改变量
IniFile.WriteString('标题','变量1','值');
5、用完后释放
IniFile.Free;
------------------------------------
动态读取图象
Image1.Picture.LoadFromFile(titleBMPFile);
------------------------------------
fastreport自定义函数的用法
1、先在普通工程窗体上定义好函数
2、在frreport控件的userfunction中写入
ifansicomparetext('My_StrToRMB',Name)=0then
val:=My_StrToRMB(frparser.Calc(p1));
//MY_STRTORMB是函数名
//如果定义多个函数,就多来几个IF即可。
在报表设计视图中就可以调用这个函数了。
------------------------------------
数组是这样定义的sbh:array[0..9999999,0..1]ofstring;
------------------------------------
treeview的用法
//先定义项目序数和节点
n:Integer;
Node:TTreeNode;
Node:=Tree1.Selected;
if(Node=nil)or(Node.StateIndex=-1)thenExit;//一般可以把不作反应的列的stateindex定为-1
n:=Node.StateIndex;
------------------------------------
Fields[]通过索引返回字段,要自己选择返回的类型!
FieldByName()通过名字返回字段,要自己选择返回的类型!
FieldValues[]通过名字返回字段的值,自动化类型!
------------------------------------
调用外部程序方法
用ShellExecute,在USES段加入SHELLAPI,使用时如:
ShellExecute(handle,'open','c:/myapp/myapp.exe','-s','',SW_SHOWNORMAL);
第一个参数为父窗口句柄;
第二个参数为打开方式(OPEN,PRINT两种);
第三个参数为执行文件全路径;
第四个参数为执行文件参数;
第五个参数为执行文件开始运行时的初始目录;
第六个参数为为执行文件运行方式(SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,
SW_RESTORE,SW_SHOW,SW_SHOWDEFAULT,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED,
SW_SHOWMINNOACTIVE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_SHOWNORMAL);
------------------------------------
判断文件是否存在
ifnotfileexists('db2.mdb.bak')then...
------------------------------------
判断按键
ifKey=#13then//如果回车则。。。
------------------------------------
退出
关闭窗口close;
关闭程序:Application.Terminate;
退出事件exit;
------------------------------------
检测软件是否已在运行
ifGetLastError=ERROR_ALREADY_EXISTSthen...
------------------------------------
定义函数是这样写的
functionIsReadOnly(b:Boolean;colors:Tcolor):Boolean;
------------------------------------
fastreport直接打印
FrReport1.PrepareReport;//初始化
FrReport1.PrintPreparedReport('1',1,True,frAll);//打印
预览FrReport1.showreport;
------------------------------------
找开浏览器,进入某站点。(或调用WINDOWS程序)
进入站点ShellExecute(Handle,PChar('OPEN'),PChar('http://www.devexpress.com/downloads/index.asp'),nil,nil,SW_SHOWMAXIMIZED);
发送邮件ShellExecute(Handle,'open',PChar('mailto:'+edtemail.Text+'?subject='),nil,nil,SW_SHOW);
------------------------------------
打开文件对话框
ifOpenPictureDialog.Executethen
------------------------------------
调用帮助文件
Application.HelpFile:='../../Help/eBars.hlp';
------------------------------------
打开窗口
TForm1.Create(self).ShowModal;
------------------------------------
取得当前执行程序的路径
FPath:=ExtractFilePath(Application.ExeName);
或
FileName:=ExtractFilePath(ParamStr(0))+'/MDB/电子通讯录.mdb';
------------------------------------
当前路径
getcurrentdir
------------------------------------
判断当前鼠标处于某个位置(TAG)
caseTComponent(Sender).Tagof
0:begin
...
lbBarBackgroud.Caption:=sCustomImage;
end;
1:begin
...
lbBarBackgroud.Caption:=sCustomImage;
end;
2:begin
...
lbBarBackgroud.Caption:=sCustomImage;
end;
------------------------------------
数据库连接
1、建立一个adoconnection控件,命名为conn
2、建立一个adodataset控件,命名为ds
然后就可以用以下语句连接并执行SQL查询(本例是access的数据库,带密码)。
conn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;DataSource='+getcurrentdir+'/data/pn.mdb;PersistSecurityInfo=False;jetoledb:databasepassword=80513';
conn.Connected:=true;
ds.Active:=false;
ds.CommandText:='select拜访日期,拜访时间,拜访客户,拜访地点,谈话内容fromkhbforderby拜访日期desc';
ds.Active:=true;
------------------------------------
ADODataSet1.State的用法
ifADODataSet1.Statein[dsEdit,dsInsert]then
ADODataSet1.Post;
------------------------------------
ADOQuery.open和ADOQuery.execSQL的区别
用于存贮时如insert只能用execSQL
------------------------------------
------------------------------------
------------------------------------
------------------------------------
回车光标移到另一个输入框
ifkey=#13then
cmb_name.SetFocus;
------------------------------------
播放声音
playsound('c:/windows/media/start.wav',0,SND_ASYNC);
------------------------------------
列表框listbox增加项目
cmb_name.Items.Add(adotable1.FieldValues['帐号']);
------------------------------------
listview用法
ListView.Selected:=ListView.Items[0];
ListView.Selected.Focused:=True;
ListView.Selected.MakeVisible(False);
ListView.Selected.Index
ListView.Items.Count
ListView.Items.Delete(3)//删除第3个项目
ListView.Items.Add.Caption:='dddddddd';//增加一个项目
ListView.Items.BeginUpdate;
ListView.Items.EndUpdate
ListView.Canvas.Font.Color:=clGrayText;
ifListView.Selected<>nilthen。。。。。
//往listview添加项目
先定义
varitm:TListItem;
然后
listview.Items.Clear;
itm:=listview.Items.Add;
itm.ImageIndex:=5;
itm.Caption:=Msg.Subject;
itm.SubItems.Add('aaaaa');
itm.SubItems.Add('ffffff');
itm.SubItems.Add('ffdfdfdf');
itm.SubItems.Add('oooo');
------------------------------------
静态调用DLL的方法
有参数
procedureCreateSms(Text:Pchar);stdcall;External'SmsLib.dll';
无参数
procedureCreateSms;stdcall;External'SmsLib.dll';
------------------------------------
确定、取消对话框作用
ifapplication.MessageBox('真的退出?','提示',mb_okcancel)=idokthen
application.Terminate;//Terminate是终止程序
showmessage('请先选中要修改的班级');//这个是简单的显示提示框
messagebox(self.Handle,'价格输入不合法!','提示',MB_OKorMB_ICONASTERISK);
------------------------------------
调用窗体的步骤
先引用该窗体的单元,然后建立窗体,最后显示出来。
例1:
useuxsgl;
Application.CreateForm(TFmXsgl,FmXsgl);
fmxsgl.ShowModal;
例2:
Frm_LendDetail:=TFrm_LendDetail.Create(self);
Try
Frm_LendDetail.ShowModal;
Finally
Frm_LendDetail.Free;
End;
------------------------------------
数据库查询
先建立数据源,然后添加一个TADOQUERY
adoquery1.SQL.Clear;
adoquery1.Close;
adoquery1.SQL.Add('select*fromtkcborderbyckcb_kh');
adoquery1.Open;
aaa=adoquery1.FieldValues['ckcb_kc'];//取出当前记录某字段的值
adoquery1.Next;//下一记录
adoquery1.Close;//关闭查询
------------------------------------
判断键盘输入字符-chr(13)是回车
ifkey=chr(13)then
bitbtn1.SetFocus;
------------------------------------
时间格式
lblTime.Caption:=FormatDateTime('yyyymmddhh:nn:ss',Now);
------------------------------------
表数据的添加添加
dmd是数据模块tbl_zgdb是表名
withdmd.tbl_zgdbdobegin
Append;
FieldValues['HYZH']:=Edt_HYZH.text;
FieldValues['XM']:=Edt_xm.text;
FieldValues['XB']:=Edt_xb.text;
FieldValues['dw']:=Edt_dw.text;
FieldValues['ZZMM']:=zzmm;
FieldValues['CSNY']:=trim(Edt_csny.text);
FieldValues['GZSJ']:=Edt_gzsj.text;
FieldValues['DBLB']:=dblb;
FieldValues['ZCLB']:=zclb;
FieldValues['XL']:=xl;
FieldValues['BZ']:=Edt_bz.text;
Post;
close;
end;
------------------------------------
列表框的选项值
Edit1.Text:=listbox1.Items.Strings[listbox1.itemindex];
------------------------------------
Delphi键盘按键伪码
用法:ifkey=chr(VK_RETURN)then...
常数名称十六进制值十进制值对应按键
VK_LBUTTON011鼠标的左键
VK_RBUTTON022鼠标的右键
VK-CANCEL033Contol-break执行
VK_MBUTTON044鼠标的中键(三按键鼠标)
VK_BACK088Backspace键
VK_TAB099Tab键
VK_CLEAR0C12Clear键
VK_RETURN0D13Enter键
VK_SHIFT1016Shift键
VK_CONTROL1117Ctrl键
VK_MENU1218Alt键
VK_PAUSE1319Pause键
VK_CAPITAL1420CapsLock键
VK_ESCAPE1B27Ese键
VK_SPACE2032Spacebar键
VK_PRIOR2133PageUp键
VK_NEXT2234PageDomw键
VK_END2335End键
VK_HOME2436Home键
VK_LEFT2537LEFTARROW键(←)
VK_UP2638UPARROW键(↑)
VK_RIGHT2739RIGHTARROW键(→)
VK_DOWN2840DOWNARROW键(↓)
VK_Select2941Select键
VK_EXECUTE2B43EXECUTE键
VK_SNAPSHOT2C44PrintScreen键
VK_Insert2D45Ins键
VK_Delete2E46Del键
VK_HELP2F47Help键
VK_030480键
VK_131491键
VK_232502键
VK_333513键
VK_434524键
VK_535535键
VK_636546键
VK_737557键
VK_838568键
VK_939579键
VK_A4165A键
VK_B4266B键
VK_C4367C键
VK_D4468D键
VK_E4569E键
VK_F4670F键
VK_G4771G键
VK_H4872H键
VK_I4973I键
VK_J4A74J键
VK_K4B75K键
VK_L4C76L键
VK_M4D77M键
VK_N4E78N键
VK_O4F79O键
VK_P5080P键
VK_Q5181Q键
VK_R5282R键
VK_S5383S键
VK_T5484T键
VK_U5585U键
VK_V5686V键
VK_W5787W键
VK_X5888X键
VK_Y5989Y键
VK_BZ5A90Z键
VK_NUMPAD06096数字键0键
VK_NUMPAD16197数字键1键
VK_NUMPAD26298数字键2键
VK_NUMPAD36399数字键3键
VK_NUMPAD464100数字键4键
VK_NUMPAD565101数字键5键
VK_NUMPAD666102数字键6键
VK_NUMPAD767103数字键7键
VK_NUMPAD868104数字键8键
VK_NUMPAD969105数字键9键
VK_MULTIPLY6A106*键
VK_ADD6B107+键
VK_SEPARATOR6C108Separator键
VK_SUBTRACT6D109-键
VK_DECIMAL6E110.键
VK_DIVIDE6F111键
VK_F170112F1键
VK_F271113F2键
VK_F372114F3键
VK_F473115F4键
VK_F574116F5键
VK_F675117F6键
VK_F776118F7键
VK_F877119F8键
VK_F978120F9键
VK_F1079121F10键
VK_F117A122F11键
VK_F127B123F12键
VK_NUMLOCK90144NumLock键
VK_SCROLL91145ScrollLock键
==================
Delphi中怎么将实数取整?
floor和ceil是mathunit里的函数,使用前要先UsesMath。
trunc和round是systemunit里的函数,缺省就可以用。
floor直接往小的取,比如floor(-123.55)=-124,floor(123.55)=123
trunc直接切下整数,比如trunc(-123.55)=-123,floor(123.55)=123
ceil直接往大的取,比如ceil(-123.55)=-123,ceil(123.55)=124
round计算四舍五入,比如round(-123.55)=-124,round(123.55)=124
==================================================
如何把RGB颜色转变成Delphi的Tcolor?
form1.color:=rgbtocolor(255,0,0);
函数:
---------
functionRGBToColor(R,G,B:Byte):TColor;
begin
Result:=BShl16or
GShl8or
R;
end;
===========================
回调函数(CallbackRoutine)的解释
MyWindowClassInfo=packedrecord
Style:UINT
...
lpFnWndProc:Pointer
...
end;
应用程序只需要将一个能处理消息的函数地址指定给MyWindowClassInfo中的lpFnWndProc字段,执行环境就知道消息需要调用的函数,于是应用程序可以把任何的函数地址指定给该字段以代表可以处理窗口消息的函数,这个函数是由执行环境来调用的,因此这种函数也被称为回调函数(CallbackRoutine)。
回调函数的机制:调用者在初始化一个对象的时候,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象,这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者就会按照回调函数地址调用该函数。
/
ObjectInspector(对象检视器)
Properties页显示窗体中当前被选择部件的属性信息
Events页列出了当前部件可以响应的事件
(小窍门:ObjectInspector一直可见,可将鼠标移到ObjectInspector上,按动右键,以启动ObjectInspector的弹出式菜单,将其设置为StayOnTop。)
部件的调整与对齐
如果要精确地表述部件的尺寸,可以在ObjectInspector上,改变Left(表示部件左边缘到窗体左边框的象素点数)、Top(表示窗体上边框到部件上边缘的象素点数)、Width(部件本身的宽度)、Height(部件本身的高度)等属性。
使四个按钮对齐。先将四个按钮选为一组:按住并向右下方拖动鼠标左键,在窗体上画出围绕四个按钮的矩形,释放左键后,被选中的按钮周边会出现暗灰色的边框。选用Edit|Align命令,
或选中4个按钮,出现灰色边框后,点右键,选择position,后面align…等,是不同方式的对齐,可以调整同样大小的尺寸。
锁定部件
选择主菜单上的Edit|LockControls选项
设置窗体的缺省按钮
按钮的Default属性从False改成True,即将它设为窗体的缺省按钮
OnClick事件,即按钮接收到左键单击时应用程序所作出的反应
ColorDialog1.Execute;
程序的第一句用Execute方法,使得ColorDialog运行它本身
Label(标签)一般放在对象的旁边,用来标记这些对象,当用户使用“Alt+关键字母”时,将自动选中它所指向的对象。方法是设置Label部件的FocusControl属性,在值段中,选用与它关联对象的对象名。
Edit、MaskEdit、Memo部件都是用作接收、显示用户输入文本的。ReadOnly在运行时间内控制对象是否可以进行Windows的操作,当此值为False时,该框内的文本就不能被复制到剪贴板上。MaxLength可以设置输入文本的长度限制。用PasswordChar属性可以按照显示隐蔽密码的方法显示用户输入文本。当一个字段被加上高亮度显示时,按键操作会将这一字段删除,替换成当前的键盘输入。这种设置为操作提供了方便,您不必每次先删除原来的文本;但也可能会导致误删文本。将AutoSelect属性设置成False,这种替代功能就被取消了。
它的EditMask属性为它提供了过滤文本的格式。点动这一属性的省略按钮,会弹出过滤编辑对话框
Memo是备注框,与以上对象不同的是,它可以接收多行文本输入。将ScrollBars设置成ssVertical,可以为它加上一个垂直的滚行条。Align属性调整该对象在窗口中的对齐情况,有alNone(无对齐指定)、alBottom(底部对齐)、alClient(全窗口显示)等可以选择;而Alignment属性则决定了文本在框中的对齐显示格式。Lines属性访问的文本被存储在一个TStrings对象中,按动它的省略按钮,可以通过对话框向它增加文本,也可以用程序对这一属性进行操作,以达到修改或增加备注文本的目的。
ComboBox(组合框)显示可用磁盘驱动器
ListBox(列表框)Windows打开文件操作时显示文件列表
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=980544
DELPHI学习笔记1相关推荐
- Delphi学习笔记:常用组件
一.事件 OnCanResize:当组件试图改变大小时触发(当组件有所改变时触发的事件) onClick:(鼠标单击事件)当在此组件上按下鼠标左键时触发的事件 OnConstrainedResize: ...
- atomic原子类实现机制_JUC学习笔记--Atomic原子类
Atomic 原子操作类包 Atomic包 主要是在多线程环境下,无锁的进行原子操作.核心操作是基于UnSafe类实现的CAS方法 CAS CAS: compareAndSwap :传入两个值:期望值 ...
- NUnit学习笔记之进阶篇
一.概述 NUnit是一款优秀的开源回归测试框架,我在<NUnit学习笔记>一文中已对其基本使用方法进行了简单的介绍.但除了TestFixture.Test.SetUp.TearDown. ...
- 天草脱壳视频学习笔记(逆向 OD)
天草壳世界学习笔记: 1.OD的查找支持模糊查找 ?? 比如 要查找 E82091FBFFA1B8 可模糊查找:E8??91FBFF??B8 2.OD的插件idaficator 可以支持回滚 就是记 ...
- 天草脱壳视频学习笔记
天草壳世界学习笔记: 1.OD的查找支持模糊查找 ?? 比如 要查找 E82091FBFFA1B8 可模糊查找:E8??91FBFF??B8 2.OD的插件idaficator 可以支持回滚 就是记 ...
- geoTools学习笔记001---(简介)
需要做地图开发,如果全部从底层做起,那将会花费大量的精力,况且难度很大,所以要使用现成的开发平台,经过几天的了解: 商业版GIS开发平台:arcgis/mapinfo/--,如果做web地图,可以使用 ...
- Spring源码学习笔记:起源发展和核心模块主要职能
1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 1.Spring 的前世今生 早在 2007 年,一个基于 Java语言的开源框架正式发布,取了一个非常有活力 ...
- pythonsze_python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...
- r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...
最新文章
- Bash+R: howto pass parameters from bash script to R(转)
- HTML 4.01 event 事件
- [置顶]android ListView包含Checkbox滑动时状态改变
- xor和路径(codevs 2412)
- Java基础教程【第一章:Java概述】
- 关于Navicat Premium 12注册机被windows病毒防护自动删除的问题解决
- 原生ajax响应json数据
- 腐蚀rust服务器命令_腐蚀rust服务器命令一览 腐蚀rust有哪些命令
- 同个网络的两台计算机怎么设置局域网,两台电脑怎么样连在同一个局域网
- matlab编写求解二阶常微分方程,求一个复杂的二阶常微分方程的数值解,不会写代码= =...
- 计算机毕设之电影购票系统
- VC写的双人版俄罗斯方块
- 绿色制造工厂对企业的好处
- 云原生系列二【Kubernetes】Kubernetes是如何运行的?
- IDEA中如何快速导包
- 群晖nas安装python_为群晖DSM安装python的easy_install
- JS修改this指向:call、apply和bind函数
- android camera2 qcom,Qcom平台 Camera的一些知识点 之MCLK
- twitter用户申诉_PHP Twitter用户时间轴提要渲染器
- Android悬浮窗滤镜,屏幕滤镜(PWM防闪烁)
热门文章
- Appnuim作业题
- 基于C++(MFC)的二维Delaunay三角剖分与Voronoi图的算法及代码
- 我的Blog搭建之旅1——Django基础
- FL studio 20中那些“花里胡哨”的效果器(二)
- win10+cpu+yolov5实现安全帽绝缘鞋绝缘手套等的检测
- 烧脑电影:彗星来的那一夜(Coherence)
- 官宣!马毅教授接任港大计算机系主任
- 2022胺基化工艺考试试题及答案
- 太吾绘卷第一世攻略_太吾绘卷第一世无修改通关7剑冢攻略 太吾绘卷怎么通关剑冢...
- Angular JS (一)