随笔分类 - DELPHI
摘要:近日做的程式需要取得字符点阵数据的功能,研究了一下,费了点周折才成功,现将方法总结如下。 取得字符点阵主要用GetGlyphOutline函数:DWORD GetGlyphOutline( UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm, DWORD cbBuffer, LPVOID lpBuffer, const MAT2 FAR* lpmat2 )他需要类型为GLYPHMETRICS、MAT2的变量;MAT2 结构要手动填充, GLYPHMETRICS结构则由GetGlyphOutline填充;GLYPHMETRICS包含了点阵数据的一些有用的信
阅读全文
摘要://-----下面是一个支持任意表的 SQL SERVER2000分页存储过程//----分页存储过程开始创建-----------------------------------------------------------------------------------------------------------IF EXISTS (SELECT name FROM sysobjects WHERE name = 'PageShowOne' AND type = 'P') DROP PROCEDURE PageShowOneGOCREATE Proc
阅读全文
摘要:unit Fuck_CAD_Unit;interfaceuses Windows, TLHelp32,SysUtils;const MyKernel='SnowmanLockScreenHook.Dll'; //释放完得文件名,可以自己改 Winlogon='winlogon.exe'; MyKernelSize=9216; MyKernelBuf:Array [0..9215] of Byte = ( $4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00, $B8,$00,$00,$00
阅读全文
摘要:把主菜单作以下调整:OnMeasureItem指向MeasureMainItem、OnAdvancedDrawItem指向DrawMainItem,子菜单的OnMeasureItem指向MeasureSubItem、OnAdvancedDrawItem指向DrawSubItem,调整颜色或使用默认颜色即可达到效果//调整主菜单项尺寸procedure TForm1.MeasureMainItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer);begin Width := Width + 6; Height := H
阅读全文
摘要:越来越多的程序使用了多国语言切换,虽然Delphi自带多语言包的添加和配置,但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。我们从一个例子出发,看看怎么实现语言的切换。首先建立一个新工程。放置如下组件:(如图) MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Label1: TLabel; Button1: TButton; CheckBox1: TCheckBox; CheckBox2: TChe
阅读全文
摘要:数说明:f文件名、s写入或读取的文件内容、hs文件头、b是否读写文件头。UTF-8文件写入函数程序代码 程序代码procedureSaveUTF(f:string;s:string;b:boolean=true);varms:TMemoryStream;hs:String;beginifs=''thenexit;ms:=TMemoryStream.Create;ifbthenbegin hs:=#$EF#$BB#$BF; ms.Write(hs[1],3);end;s:=AnsiToUtf8(s);ms.Write(s[1],Length(s));ms.Position:=0;
阅读全文
摘要:问题的提出最近要编写一个考试系统,使得考生能自主地取得试卷并进入考试,考试期间系统自动计时并在考试结束后自动回卷到服务器。取卷、回卷功能都已实现,但在整个考试过程中能成功地准确计时,必须使得程序不在中途被关闭掉。退一步来说,即使程序中途被关闭,也要自动地重新起动,并以之前已保存的时间记录继续工作。解决的思路对于这种监控用的程序除了程序的交互界面要做得不能让用户退出外,更应该注意到用户使用诸如“任务管理器”等“暴力”的手段来终止程序。而对付这种终止程序的方法一般来说有以下两种方法:第一种方法,把监控程序的进程伪装起来。例如把进程的名称改为与系统进程相仿的名字,让用户不敢终止或忽略这个进程,更甚者
阅读全文
摘要:1. 枚举局域网内所有的SQLSERVER实例 函数: function GetAllServerInstances :TStringList; var oApplication , oSeverNameList : Variant ; i : integer ; sNameList : TStringList ; begin sNameList := TStringList.Create ; oApplication := CreateOLEObject ('SQLDMO.Application') ; oSeverNameList := oApplication.ListA
阅读全文
摘要:delphi实现延时的方法,很多人首先就想到用timer控件,这里我们不用timer控件看如何来实现? 首先介绍一下settimer函数的使用: 例如:settimer(self.handle,0,1000,@timerfun); 参数依次为: 1.调用函数的handle,windows会定时发送WM_TIMER消息给此handle 2.timer的标识,可设置为0 3.定时器的值,单位是毫秒 4.回调函数 //回调函数:当定时器到点后,就会调用该函数,该函数的格式有一定的讲究,可以参照以下写: procedure timerfun(handle:Thandle;msg:word;idente
阅读全文
摘要:1。MouseMove事件中加入:// ReleaseCapture;// Perform(WM_SYSCOMMAND, $F017, 0);2.MouseDown事件中加入:// POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);// POSTMESSAGE(Self.Handle,274,61458,0);3.MouseDown事件中加入:// ReleaseCapture;// Perform(WM_SYSCOMMAND, $F012, 0);4.截获WM_NCHITTEST消息procedure WMNCHITTEST(var Msg:TWMNCHIT
阅读全文
摘要:procedure TForm1.FormCreate(Sender: TObject);var ExSty:DWORD;begin ExSty:=GetWindowLong(Handle,GWL_EXSTYLE); ExSty:=ExSty or WS_EX_TRANSPARENT or WS_EX_LAYERED; SetWindowLong(Handle,GWL_EXSTYLE,ExSty); SetLayeredWindowAttributes(Handle,cardinal(clBtnFace),125,LWA_ALPHA); MoveWindow(Handle,Screen.Wid
阅读全文
摘要://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; {排序} List.Sorted :=
阅读全文
摘要://TStringList 常用方法与属性:varList: TStringList;i: Integer;beginList := TStringList.Create;List.Add('Strings1'); {添加}List.Add('Strings2');List.Exchange(0,1); {置换}List.Insert(0,'Strings3'); {插入}i := List.IndexOf('Strings1'); {第一次出现的位置}List.Sort; {排序}List.Sorted := True; {指定
阅读全文