随笔分类 -  delphi

摘要:许多时候我们希望程序只有一个实例在运行,而不是多个实例同时运行。 其实完成这一功能有很多种方法,我把自己知道的几种方法简单介绍一下。一 使用全局原子program Project1; uses windows, Forms, Dialogs, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} const myatom='我的全局原子方法'; begin if GlobalFindAtom(myatom)=0 then begin GlobalAddAtom(myatom); Application.Initialize; Appl 阅读全文
posted @ 2012-08-22 18:16 马儿快跑 阅读(308) 评论(0) 推荐(0)
摘要:主程序装载脚本procedure TForm1.FormCreate(Sender: TObject);begin fsScript1.Clear; fsScript1.Parent := fsGlobalUnit; fsScript1.AddComponent(Form1); fsScript1.Lines.LoadFromFile('1.txt'); fsScript1.Run;end; 1.txt文件uses 'lang.txt'; //引用公用的语言单元 procedure button1click(sender: tobject);begin show 阅读全文
posted @ 2012-08-19 16:36 马儿快跑 阅读(539) 评论(0) 推荐(0)
摘要:procedure GotoRowCol(Row, Col : Integer; RichEdit : TRichEdit);var TextLen, i : Integer;begin if Row > RichEdit.Lines.Count then Exit; TextLen := 0; for i := 0 to Row - 1 do TextLen := TextLen + Length(RichEdit.Lines[i]) + 1; if (Col <= Length(RichEdit.Lines[Row - 1])) and (Col > 0) then Te 阅读全文
posted @ 2012-08-19 12:04 马儿快跑 阅读(3607) 评论(0) 推荐(0)
摘要:针对简单的文法(PASCAL语言子集),制作相应的词法分析器和递归下降的语法分析器。 文法要求如下: 1、 关键字、标识符、数字等: 1.begin 2.if 3.then 4.while 5.do 6.end 10.标识符 11.数字 13.+ 14.- 15.* 16./ 17.: 18.:= 20.< 21.<> 22.<= 23.> 24.>= 25.= 26.; 27.( 28.) 2、 文法规则: 程序 → begin 语句串 end 语句串 → 语句 { ; 语句 } 语句 → 赋值语句 | 条件语句 | 循环语句 赋值语句 → 变量 := 表 阅读全文
posted @ 2012-08-18 18:05 马儿快跑 阅读(5487) 评论(0) 推荐(0)
摘要:在DELPHI里如何来 禁止双击TTreeView节点时,避免让TTreeView自动地去执行Windows默认的展开或关闭节点的事件.而又能让点击TTreeview 节点前面的展开符时有用,即点展开符时能关闭或展开节点,其实我们只要判断双击事件的位置就行了,那就是我们只要知道是否是双击在节点 TreeNode 的文字上.而不是点击在节点前的展开符上.知道了这个原理,实现起来就方便了.现在我把代码贴出来. 让大家参考一下.代码 // 先定义一个变量,用来保存是否可以关闭或展开节点.var AllowDBClickEvent: Boolean;// Treeview的OnClick事件中来判读点 阅读全文
posted @ 2012-08-16 11:09 马儿快跑 阅读(2257) 评论(0) 推荐(1)
摘要:Delphi 获取文件名路径2011-10-03 9:26获取文件名和路径函数:ExtractFileName() 从文件名中抽取不含路径的文件名 ExtractFilePath() 从文件名中抽取路径名 ExtractFileDir() 从文件名中抽取目录名ExtractFileExt从文件名中抽取扩展命例子:uses ShellApi //需要在uses区域加入ShellApi;....If OpenDialog1.Execute Then Begin lfilename:= OpenDialog1.FileName; FileExt:=Extractfileext(lfilename). 阅读全文
posted @ 2012-08-15 16:56 马儿快跑 阅读(1565) 评论(0) 推荐(0)
摘要:Stream 对象,又称流式对象,是 TStream 、 THandleStream 、 TFileStream 、 TMemoryStream 、 TResourceStream 和 TBlobStream 等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型 ( 包括对象和部件 )在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种 Stream 对象中拷贝数据。 下面介绍各种对象的数据和方法及使用方法。 TStream 对象 TStream 对象是能在各种媒介中存储二进制数据的对象的抽象对象... 阅读全文
posted @ 2012-08-15 09:09 马儿快跑 阅读(6019) 评论(1) 推荐(0)
摘要:对tmemorystream的一些改进_delphi教程 怎么又是关于Stream的,呵呵,应该说只是最近比较关心程式的效率问题,而我对Stream其实并没有什么特别的研究,只是自己发现了一些新的用法,希望能对大家有用而已。事情的起因还是那个破烂电子相册软件,今天又发现了一个可改进之处,有一段程式我原来是这么写的:procedure CreateFile(const AFileName:String;const AStream:TMemoryStream);var FileStream:TMemoryStream;begin ShowProgressForm(nil); FileStream: 阅读全文
posted @ 2012-08-15 09:03 马儿快跑 阅读(1158) 评论(0) 推荐(0)
摘要:在我们经常使用的软件,比如photoshop,office,delphi等等,我们经常可以对工具栏进行拖拽操作----将相关的工具栏拖拉出来,形成独立的小窗口;或者将几个工具栏进行互相的组合!(这些就是我们常说的DOCK功能) 可视化的VCL元件皆支持DOCK功能! 在delphi中,所有继承自Tcontrol及TWinControl的VCL元件,都支持dock功能。 基本上,要进行dock动作至少需要两个元件,一个是被附着的dock site元件,另一个是附着在dock site的元件。DELPHI所提供的可视化元件中只有继承自TWinControl的VCL元件才具有dock site... 阅读全文
posted @ 2012-08-07 14:30 马儿快跑 阅读(314) 评论(0) 推荐(0)
摘要:Delphi的“动态窗体”技术实际应用 日期:2005年6月1日 作者:On2008 人气:613 查看:[大字体 中字体 小字体] 在Delphi可视化设计环境中,允许程序员在代码编辑器中以文本的方式浏览和修改DFM文件内容。当用File/Open命令直接打开DFM文件或者选择窗体设计窗口的弹出式菜单上的View as Text命令时,就会在编辑器中出现文本形式的信息。在一些资料中将这种文本形式称之为窗体设计脚本。Delphi提供的这种脚本编辑功能是对Delphi可视化设计的一大补充。当然这个脚本编辑能力是有限制的,比方说不能在脚本任意地添加和删除部件,因为代码和DFM脚本是紧密相连的,任意 阅读全文
posted @ 2012-08-06 12:30 马儿快跑 阅读(1181) 评论(0) 推荐(0)
摘要:在项目测试阶段,测试人员会输入一些特殊字符,比如:<table>、<./或<这样的字符时,页面就会出现错误, 如果是导出,导出的Excel也会出现问题,或者直接输出的页面会把用户输入的<、>、&及 都转化成<、>、&及空格,原因是用java代码直接取的并没有对特殊字符做转义。 因为Html中的<, >,&有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列。 & 的转义序列为 & amp 或 & #38; < 的转义序列为 阅读全文
posted @ 2012-08-01 10:53 马儿快跑 阅读(589) 评论(0) 推荐(0)
摘要:Delphi TStream 详细介绍Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。 下面介绍各种对象的数据和方法及使用方法。 TStream对象 TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TSt... 阅读全文
posted @ 2012-07-29 01:11 马儿快跑 阅读(3848) 评论(0) 推荐(0)
摘要:Stream对象又称流式对象Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件)在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。 下面介绍各种对象的数据和方法及使用方法。 TStream对象 TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TStream 对象... 阅读全文
posted @ 2012-07-27 18:15 马儿快跑 阅读(3007) 评论(0) 推荐(0)
摘要:Delphi中大家在使用 ListView和TreeView时,一般都会使用到Item的Data属性来保存大家自己的内部数据,这个Data的声明如下:property Data: Pointer;大家可以看到它就是一个指针,使用上一般类似如下代码(以ListView为)添加时 PViewItemState = ^TViewItemState; TViewItemState = record ViewItemId: integer; end;var nLoop: integer; li: TListItem; pp: PViewItemState;begin for nLoop := 0 to 阅读全文
posted @ 2012-07-27 16:02 马儿快跑 阅读(1229) 评论(0) 推荐(0)
摘要:listbox删除删除选中的某个:procedure TForm1.Button1Click(Sender: TObject); var i:integer;begin i:=0; while i<listbox1.Count do//删除掉前一个后,下一个会上移,所以用while if listbox1.selected[i] then listbox1.Items.delete(i) else i:=i+1;end; 删除listbox中所有的内容:procedure TForm1.Button2Click(Sender: TObject);var i:integer; begin 阅读全文
posted @ 2012-07-26 17:49 马儿快跑 阅读(14166) 评论(0) 推荐(0)
摘要:原来一直使用Delphi自带的TXMLDocument类来进行XML文件的读写,虽然麻烦了一点,但功能上来说还不错。只是有一个地方让我实在不舒服 - 每次创建TXMLDocument类实例的时候必须传入TComponent对象,这就意味着,如果我把对XML文件的读写封装到一个类里面,那么在创建这个自定义类的时候就必须也传入TComponent对象。我尝试过很多方法,但是都无法避免,最后试着上网找了找,于是就找到了NativeXML这个库。下载之后马上打开Demo看了看,cool,创建TNativeXML的时候只需要传入xml文件路径就可以,再往下看就让我开始惊喜了。它已经把大多数操作都封装好了 阅读全文
posted @ 2012-07-24 15:26 马儿快跑 阅读(659) 评论(0) 推荐(0)
摘要:键值表: 虚拟键码 键值 说明 VK_LBUTTON 01 Left mouse button VK_RBUTTON 02 Right mouse button VK_CANCEL 03 Control-break processing VK_MBUTTON 04 Middle mouse button (three-button mouse) ? 05-07 Undefined VK_BACK 08 BACKSPACE key VK_TAB 09 TAB key ? 0A-0B Undefined VK_CLEAR 0C CLEAR key VK_RETURN 0D ENTER key .. 阅读全文
posted @ 2012-07-24 09:41 马儿快跑 阅读(617) 评论(0) 推荐(0)
摘要:procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin if not (Key in ['0'..'9', '.', #8 ]) then begin Key := #0; end;end; 阅读全文
posted @ 2012-07-24 09:21 马儿快跑 阅读(346) 评论(0) 推荐(0)
摘要:类的声明 有两种声明办法 一、自定义类的父类delphi内建类 type 类名 = class(父类) 成员表达式 end; (1)保留字Class说明该类是dephi内建类,将继承父类的属性和方法 (2)“父类”默认是delphi的祖先类Tobject 二、完全自定义的类 Type 类名 = object(父类) 成员表达式 End; (1) 保留字object说明该类是完全自定义的类 (2) 自类也必须是完全自义的类 注意:用class自定义的类必须遵循delphi内建类的Tobject的特定的构造... 阅读全文
posted @ 2012-07-24 01:14 马儿快跑 阅读(4395) 评论(0) 推荐(0)
摘要:TStringList 常用操作//TStringList 常用方法与属性:var List: TStringList; i: Integer;begin List := TStringList.Create; List.Add('Strings1'); {添加} List.Add('Strings2'); List.Exchange(0,1); {置换} List.Insert(0,'Strings3'); {插入} i := List.IndexOf('Strings1'); {第一次出现的位置} List.Sort; {排序 阅读全文
posted @ 2012-07-23 15:29 马儿快跑 阅读(318) 评论(0) 推荐(0)