delphi技巧总结收集
Delphi常用总结
(2008-03-30 23:45:17)
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
标签:
杂谈 |
分类: Delphi程序大全 |
begin
if sdlgEXCEL.Execute then
begin
ExportGrid4ToEXCEL(sdlgEXCEL.FileName,cxGrid1,True,True);
end;
end;
var
NT:TNOTIFYICONDATA;
TNOTIFYICONDATA:系统托盘;
EnableMenuItem:修改菜单;
GetSystemMenu:获取系统菜单
begin
RzMaskEdit1.Text:='0';
Abort;
end;
begin
if ord(key)=27 then
begin
close();
end;
end;
Delphi流操作技巧总结
TMemoryStream的继承关系如下
TObject
|
TStream
|
TCustomMemoryStream
|
TMemoryStream
如何使用TMemoryStream?
其实TmemoryStream使用就跟TStream 一样
具体的属性,方法可看帮助。
下举一例:
如我想在内存中直接读写一个Bitmap,怎么办?
TmemoryStream帮了你大忙
var
BitmapMemoryStream:TMemoryStream;
Bitmap1:TBitmap;
procedure TForm.Button1Click(Sender:TObject);
begin
BitmapmemroyStream:=TmemoryStream.Create; file://建立MemoryStream
Bitmap1:=TBitmap.Create;
try
Bitmap1.LoadFromFile('d:/Bitmap1.bmp');
except
ShowMessage('Error On LoadFile bitmap1.bmp');
end;
end;
procedure TForm.Button2Click(Sneder:Tobject);
begin
if Assigned(Bitmap1) then
Bitmap1.SaveToStream(BitmapmemoryStream);
end;
procedure TForm.Button3Click(Sender:TObject);
begin
if BitmapMemoryStream<>nil then
begin
try
BitmapMemroyStream.SaveToFile('Bitmap1.str'); file://内存流保存,大小与
file://Bitmap1.bmp一样
except
showmessage('error on access memory!');
end;
end;
end;
procedure TForm.Button4Click(Sender:TObject);
var
Buffer:Array[0..53] of char;
begin
if Assigned( BitmapMemroyStream) then
try
BitmapMemroyStream.Seek(0,soFromBeginning);
BitmapMemoryStream.Read(Buffer,54);
if Buffer[0]='B' and Buffer[1]='M' then file://改写内存内容
begin
BitmapMemoryStream.Seek(0,soFromBeginning);
BitmapmemoryStream.Write('ICE',3);
Button3Click(Sender);//将改写的内容写入文件
end;
except
ShowMessage('error On Access memroyStream');
end;
end;
大家可看到用TMemoryStream对与内存读写多么方便,当然其实用不着先建一Bitmap
可以用LoadFromFile直接引导文件,但是如果对于其它的内存流却是可以用上述方法
上文只是抛转引玉,其它的一些功能大家可以看帮助,自己琢磨!
还有很多其它的流式对象,大致都差不多,一通百通!
如何将一个流的内容写入到剪贴板中,并处理
这个技巧是参考Delphi的剪贴板类的实现来完成的。将一个流的内容放入剪贴板,
首先要注册你自已的格式,使用RegisterClipboardFormat()函数
然后做下面三步:
1.创建一个内容流,并将内容写进去
2.创建一个全局的内容区,并将流的内容写入
3.调用ClipBoard.SetAsHandle()将内容写入剪贴板
将内容写入剪贴板中
var
hbuf : THandle;
bufptr : Pointer;
mstream : TMemoryStream;
begin
mstream := TMemoryStream.Create;
try
{-- 处理流的代码 --}
hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size);
try
bufptr := GlobalLock(hbuf);
try
Move(mstream.Memory^, bufptr^, mstream.size);
Clipboard.SetAsHandle(CF_MYFORMAT, hbuf);
finally
GlobalUnlock(hbuf);
end;
except
GlobalFree(hbuf);
raise;
end;
finally
mstream.Free;
end;
end;
请注意不要将分配的全局缓冲区释放,这个工作由剪贴板来完成,在读出数据中
你应该将它复制后处理。
将剪贴板内容读出来
var
hbuf : THandle;
bufptr : Pointer;
mstream : TMemoryStream;
begin
hbuf := Clipboard.GetAsHandle(CF_MYFORMAT);
if hbuf <> 0 then begin
bufptr := GlobalLock(hbuf);
if bufptr <> nil then begin
try
mstream := TMemoryStream.Create;
try
mstream.WriteBuffer(bufptr^, GlobalSize(hbuf));
mstream.Position := 0;
{-- 处理流的代码 --}
finally
mstream.Free;
end;
finally
GlobalUnlock(hbuf);
end;
end;
end;
end;
在Dephi中使用TStream读写数据的技巧
在Dephi中提供了一个抽象的数据类型TStream来支持对流式数据的操作。这些数据通常来自文件、数据库、内存对象、OLE对象等,TStream提供了统一、简洁的方法来进行数据的读写。在通常情况下,我们并不需要直接使用TStream类,对流式数据的读写封装在VCL控件的方法中。但是如果这些方法无法满足我们的要求,就需要自己手动控制数据的读写。
一、 TStream的常用的方法和属性:
---- 1. function Read(var Buffer; Count: Longint): Longint; virtual; abstract
---- 2. function Write(const Buffer; Count: Longint): Longint; virtual; abstract;
---- 3. function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract;
---- 4. property Position: Longint;
---- 5. property Size: Longint
---- Read,Write,Seek都是纯虚函数,提供了数据读写和定位的抽象的方法。Read方法将数据从Stream中读到Buffer缓冲区中,Write则实现相反的操作,返回值表示实际读写数据的大小。Seek提供了在Stream中移动数据指针的方法。参数Origin可以取soFromBeginning,soFromCurrent,soFromEnd 三个值,Offset是偏移量,返回值是当前Stream数据指针的位置。
---- Position表示了数据指针在Stream中的位置。这个属性是可读写的,它实际上就是通过调用Seek方法实现的,所以实际使用时使用这个属性更为方便一些。Size属性表示当前Stream的大小,对于不同的Stream,有些时候是只读的。
二、 Stream数据的读写。
---- 1. SaveToStream(Stream: TStream ); file://将类中的数据写到Stream的当前位置中
---- 2. LoadFromStream(Stream: TStream); file://从当前位置读入Stream里的数据
---- 实际使用时我们基本上只要使用上面两个函数就可以了。
三、 例子
---- TStream的继承树图如图1所示(略),实际使用时比较常用的是TFileStream,TMemoryStream,TblobStream,就以这三种流举一例说明具体用法。
---- 创建一个窗体Form1,放置三个按钮btnRead,btnInvert,btnSave和一个文件打开对话框OpenDialog1以及数据控件DataSource1,Table1,test.
---- 使用Dephi提供的Database Desktop创建一个表test,表里有一个字段域Image,数据库文件名存为test.db。在窗体上放置一个TDatabase控件dbTest,一个TTable控件Table1,一个DataSource控件DataSource1,一个TDBNavigator控件DBNavigator1。将dbTest与刚才Desktop创建的数据库相连,Table1的TableName属性设为test.db,DataSource1的DataSet属性设为Table1,DBNavigator1的DataSource属性设为DataSource1,VisibleButtons属性前四个设为TRUE。此外,将dbtest的Connected设为TRUE,Table1的Active属性设为TRUE,使得数据库一开始就处于打开状态。
---- 事件代码编写如下:
---- 1. btnRead的Click事件,这里演示了TFileStream的用法。
var
MS: TFileStream;
begin
if OpenDialog1.Execute then
begin
MS:=TFileStream.Create
(OpenDialog1.FileName, fmOpenRead);
Image1.Picture.Bitmap.LoadFromStream(MS);
MS.Free;
end;
end;
---- 2. btnInvert的Click事件,这里演示了TMemoryStream的用法。其中使用了Invert函数,这是一个简单的将图象反色的函数(仅对真彩图象有效),它返回一个指向处理过的图象数据块的指针。
var
M
S: TMemoryStream;
pImage: pointer;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
pImage:=Invert(MS.Memory, MS.size);
file://Memory属性是指向实际内存块的指针
MS.Write(pImage^,MS.size);
MS.Position:=0;
file://上一行代码使指针移到了Stream末尾,所以要复位
Image1.Picture.Bitmap.LoadFromStream(MS);
FreeMem(pImage);
MS.Free;
end;
Invert函数如下:
function TForm1.Invert
(pImage: pointer; size: Integer): pointer;
var
pData, pMem: PChar;
i: Integer;
begin
pMem:=AllocMem(size);
CopyMemory(pMem,pImage,size);
pData:=pMem+54;
for i:=0 to size-54-1 do
begin
pData^:=Char(not integer(pData^));
pData:=pData+1;
end;
Result:=pMem;
end;
---- 1. btnSave的Click事件,这里演示了TMemoryStream的另一种用法,将Stream中的数据写到数据库中去。
var
MS: TMemoryStream;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
Table1.Append;
file://在数据库中添加一条记录
TBlobField(Table1.FieldbyName
('image')).LoadFromStream(MS);
Table1.Post;
file://将所作的更新写入数据库
end;
---- 4. DBNavigator1的Click事件,这里演示了TBlobStream的用法,使用了和写入时不同的方法来读出数据库的图象数据。
var
MS: TStream;
begin
with Table1 do
MS:=CreateBlobStream
(FieldbyName('image'),bmRead);
Image1.Picture.Bitmap.
LoadFromStream(MS);
MS.Free;
end;
继 《Delphi + SDK 开发技巧》 和 《深入理解 Delphi 指针》 之后我们该进行总结了。
经过前面两篇文章的分析,应该对 Delphi 的指针概念包括内存组织形式已经相当清楚了。这里的总结就是提取分析精华,我们探究指针的原因是想 Delphi 的指针能像 C++ 那样使用,也就是如何使 Delphi 的指针像 C++ 指针那样能当数组指针来用。
终其原因,就是 C++ 中并没有严格规定普通指针和数组指针的区别,但 Delphi 中要明确指出来。
我们知道,数组指针是一个指针变量,它里面存放着数组在内存区的首地址,数组名就是指针,它可以使用 [] 运算符来取元素值。比如 p[2] := 5; p 是指针,存放着该数组在内存中的地址,无论是 C++ 还是 Delphi ,在这点上都是相通的。知道这种形式后,我们就来看看 Delphi 中怎么定义一个数组指针:
首先,你想定义一个指针,不管是什么类型,你先写上
type
TPMyArr = ^TMyArr;
表示我们定义一个指针类型。但还没完,TMyArr 我们还没定义,接下来就是要写出它的类型。很显然,我们这里要定义的是数组指针,因指针已经定义了,再定义一个数组就可以了。因此可以这么写
type
TPMyArr = ^TMyArr;
TMyArr = array [0..100] of Integer;
怎么样?Delphi 中定义东西还是蛮符合人的思维习惯的吧 —— 我们需要指针就先定义指针,没有类型马上给出类型。这样,一个指针就定义完了,可以拿到程序里使用它了。
那么我们会想,为什么要定义一个静态数组类型呢?明明指针当数组来用时不应该有长度限制的呀。的确,长度不应该有限制,但任何东西都不可能无限长吧,你如果需要访问的范围大些,可以把这数组定义的最大下标值改大些。你看在 Delphi 中有个 TByteArray 的字节数组,就定义得比较大,这个范围大家都应该够用了。数组的长度大小确定 还有个好处,就是将数组指针自增自减时可以使它移动一个数组的长度值,在上篇文章里大家通过调试应该看得很清楚了。
哦,那为什么不干脆定义这个数组为动态数组呢?要讨论这个问题,我们来一次正常思维推理吧。
在 C++ 中,只要一个指针指向一个内存区就可以像数组那样操作了。但是在 Delphi 中,因为类型严格,不能直接这么干,我们得定义一个数组指针。让我们接着看。
首先,一个数组需要有一块内存区(大小确定),对编译器来说就是一个数组类型(大小确定)。然后要用一个指针指向它,对编译器来说,就是定义指向这个类型的指针,我们称这个指针为 静态数组指针。数组长度已经确定了嘛。
清楚了没有?自始至终,我们的指针就一个,即 静态数组指针,没有第二个指针出现,而这个指针就指向一明确的内存区块,所以不可能用动态数组。
简单点说吧,为什么动态数组不可以呀,动态数组是什么?前面文章中已经调试过 N 次了,我想你马上就可以说出来,是的,就是指针呀。如果你使用动态数组,难道说你要的是指向指针的指针不成?这样解释应该清楚了吧?
另外要提一点的是,动态数组有自管理性,即 Delphi 会在编译时插入一些代码在源代码里维护这个数组,这对使用指针这种底层操作来说并不是件好事,有时会干扰你的意图,所以我们是不可以把它定义为数组指针来用的。
下面是数组指针的应用例子,我们来看一看:
procedure TForm1.Button2Click(Sender: TObject);
type
TPMyArr = ^TMyArr;
TMyArr = array [0..100] of Integer;
var
I: Integer;
PMyArr: TPMyArr;
p: Pointer;
begin
p := @I;
PMyArr := @I;
PMyArr[0] := 100;
TPMyArr(p)[0] := 200;
Caption := IntToStr(I);
end;
下面是使用动态数组指针来操作变量,这里的代码也说明动态数组不适合拿来做数组指针,这完全是它的自管理代码搞的鬼。
procedure TForm1.Button3Click(Sender: TObject);
type
TDArr = array of Integer;
var
// P: TDArr;
I: Integer;
P: TDArr; //这句放下面就不行了,会产生异常。 奇怪吧?
begin
P := @I;
P[0] := 100;
Caption := IntToStr(I);
end;
总结:要像 C++ 那样用指针操作数组,Delphi 中可以定义静态数组指针,然后指向你要操作的内存区块首地址,就可以像 C++ 那样随意操作内存了。
取数组在内存中的首地址,应该使用 @MyArr[0] 这种形式,无论它是在堆中还是在栈中,这样的写法能保证不会错,而且简单明了,因为它直接给出了内存地址值。不用担心效率问题,编译器都会做优化处理的,我们写的代码应该清晰简明地便于阅读就好。
实现用鼠标点住窗体的任意位置,拖动窗体
程序TForm1.FormMouseDown(发件人:TObject的;按钮:TMouseButton;
移位:TShiftState,X,Y:整数);
开始
releasecapture;
执行(WM_SYSCOMMAND,$ F012,0);
结束;
2。
/ /屏蔽系统功能键;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,无,0);
/ /恢复功能键
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,零,0);
3。
而Frm_Login.Login_Off =假做
Application.ProcessMessages; / /等待,并不断检测Frm_Login.Login_Off
ProcessMessages不允许应用程序进入空闲状态,而的handleMessage一样。
4。
/ /不在任务栏上显示图标
SetWindowLong函数(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
5。
刷新局部屏幕
Rect.Left:= X - 50;
Rect.Top:= Y - 50;
Rect.Right:= X +85;
Rect.Bottom:= Y +85;
RedrawWindow(0,@矩形,0,RDW_ERASE或RDW_INVALIDATE或RDW_INTERNALPAINT或RDW_ERASENOW或RDW_ALLCHILDREN);
睡眠(5)/ /若不延时,将不能刷新局部屏幕
6。
Alphablend:= TRUE; / /呵呵,这个就是让窗口变的透明的办法了
Alphablendvalue:= 100;
FormStyle:= fsStayOnTop / /让窗体总在最前面
7.function TRUNC(X:扩展):Int64的; / /将实际转为整数形
8.delphi + ADO远程连接SQL Server 2000的服务器的问题,
ADOConnection.ConnectionString:=
“供应商= SQLOLEDB.1;密码= YourPWD;用户ID = YourID;'+
“初始目录=数据库名,数据源=数据服务器名;'+
“网络图书馆= DBMSSOCN,网络地址=所在的IP,1433”;
ADOConnection.Open;
9,通过计算机名取得IP
VAR
HostEnt:PHostEnt;
WSADATA:TWSAData;
开始
调用WSAStartup(2,WSADATA);
HostEnt:=的gethostbyname(PChar类型(Edit2.Text));
与HostEnt ^做
SIP:=格式(“%d年%d%d月%d”,[字节(h_addr ^ [0]),字节(h_addr ^ [1]),字节(h_addr ^ [2]),字节(h_addr ^ [3 ])]);
WSACleanup;
10,自动填写IE的网页的输入框的内容}
{程序TForm1.PutData;
VAR
ShellWindow:IShellWindows;
nCount:整数;
spDisp:IDispatch的;
I,J,X:整数;
六:OleVariant;
IE1:IWebBrowser2的;
IDoc1:IHTMLDocument2;
IELC:IHTMLElementCollection;
S,S2:字符串;
HtmlInputEle:IHTMLInputElement;
HtmlSelEle:IHTMLSelectElement;
开始
ShellWindow:= CoShellWindows.Create;
nCount:= ShellWindow.Count;
对于i:= 0 nCount - 1做
开始
六:= I;
spDisp:= ShellWindow.Item(六);
如果spDisp =无再继续;
spDisp.QueryInterface(IWebBrowser2的,IE1);
如果IE1 <>无则
开始
IE1.Document.QueryInterface(IHTMLDocument2,iDoc1);
如果iDoc1 <>无则
开始
IELC:= idoc1.Get_all;
对于j:= 0 ielc.length - 1做
开始
Application.ProcessMessages;
spDisp:= ielc.item(J,0);
如果SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement,HtmlInputEle)),那么
与HtmlInputEle做
开始
S2:= Type_;
S2:=大写(S2);
/ /我把所有的输入都填上尝试,复选框都打勾
如果(StrComp(PChar类型(S2),“文”)= 0)或(StrComp(PChar类型(S2),“密码”)= 0),则
价值:='尝试'/ / S:= S +#9 +价值
否则,如果StrComp(PChar类型(S2),“CHECKBOX”)= 0,则
开始
检查:= TRUE;
结束;
结束;
如果SUCCEEDED(spDisp.QueryInterface(IHTMLselectelement,HtmlSelEle)),那么
与HtmlSelEle,Memo1.Lines做
开始
S:= S +#9 + IntToStr(selectedIndex值+1)/ /这个是获取数据了
结束;
结束; / /结束
Memo2.Lines.Add(S);
退出;
结束;
结束;
结束;
结束;
}
11访问作者主页:ShellExecute的(句柄,零,PChar类型('http://www.jijian.sdu.edu.cn/shaojian“),零,零,SW_SHOWNORMAL);
12,给MDI主窗口加背景
在MDI程序中,由于MDI的主窗口一般的功能是提供子窗口显示的位置和提供菜单,工具条,状态条等,而窗口的客户区则一般不会有其它的用途,如果在这里画上一些软件的标志,公司的标志或者其它的背景图案的话,不仅可以使MDI的主窗口更加充实,美观,而且还可以更加突出公司的形象和增加公司标志在客户心中的地位。
由于MDI主窗口的特性,使用普通的OnPaint和使用TImage等方法都不会产生作用。下面将用编写一个简单的MDI程序来介绍如何实现。
第一步:打开德尔福(Delphi的1,2,3都可以),创建一个新的工程。
第二步:将Form1中的FormStyle设置为fsMDIForm,设置成MDI的主窗口。
第三步:在Form1中上增加一个图像元件,并选择要设置的背景到形象的图片中。
第四步:在Form1中的私人中定义:
FClientInstance,
FPrevClientProc:TFarProc;
程序ClientWndProc(VAR消息:TMessage);
第五步:在实现(实施)中加入上述过程的具体内容:
程序TForm1.ClientWndProc(VAR消息:TMessage);
VAR
MYDC:HDC;
RO,钴:字;
开始
有消息做
案件味精
WM_ERASEBKGND:
开始
MYDC:= TWMEraseBkGnd(消息)DC;
反渗透:= 0 TO ClientHeight DIV Image1.Picture.Height DO
为协办:= 0至ClientWIDTH DIV Image1.Picture.Width DO
BitBlt函数(MYDC,CO * Image1.Picture.Width,RO * Image1.Picture.Height,
Image1.Picture.Width,Image1.Picture.Height,
Image1.Picture.Bitmap.Canvas.Handle,0,0,SRCCOPY);
结果:= 1;
结束;
其他
结果:= CallWindowProc(FPrevClientProc,ClientHandle,味精,WPARAM,LPARAM);
结束;
结束;
第六步:在Form1中的创建事件中加入:
FClientInstance:= MakeObjectInstance(ClientWndProc);
FPrevClientProc:=指针(GetWindowLong(ClientHandle,GWL_WNDPROC));
SetWindowLong函数(ClientHandle,GWL_WNDPROC,LongInt(FClientInstance));
上面的步骤已经完成了MDI主窗口背景图案的设置,下面可以增加一个MDIChild窗口,实现MDI程序。
第七步:新增加一个表格,并将FormStyle设置为fsMDIChild。
现在你可以编译运行这个程序,你会发现,图像元件并不会在表上显示出来,但是整个窗体的客户区域被图片中的图像所铺满。
(1)按下CTRL和其它键之后发生一事件。
程序TForm1.FormKeyDown(发件人:TObject的; VAR重点:字;
移位:TShiftState);
开始
如果(ssCtrl在Shift)和(键= 67),则
showmessage('的KeyDown按Ctrl + C');
结束;
(2)。DBGRID中用回车键代替Tab键。
程序TForm1.DBGrid1KeyPress(发件人:TObject的; VAR键:字符);
开始
如果键=#13然后
如果当时的ActiveControl = DBGrid1
开始
。TDBGrid中(的ActiveControl)的SelectedIndex:= TDBGrid中(的ActiveControl)的SelectedIndex + 1;
重点:=#0;
结束;
结束;
(3)。DBGRID中选择多行发生一事件。
程序TForm1.Button1Click(发件人:TObject的);
VAR
我:整数;
bookmarklist:Tbookmarklist;
书签:tbookmarkstr;
开始
书签:= adoquery1.Bookmark;
bookmarklist:= dbgrid1.SelectedRows;
试试
开始
对于i:= 0 bookmarklist.Count - 1做
开始
adoquery1.Bookmark:= bookmarklist [I];
与adoquery1做
开始
编辑;
。fieldbyname('千年发展目标“)AsString:= edit2.Text;
职位;
结束;
结束;
结束;
最终
adoquery1.Bookmark:=书签;
结束;
结束;
(4)表格的一个出现效果。
程序TForm1.Button1Click(发件人:TObject的);
VAR
R:thandle;
我:整数;
开始
对于i:= 1 TRUNC(width/1.414)做
开始
R:= CreateEllipticRgn(TRUNC(宽度/ 2)- I,TRUNC(身高/ 2)- I,TRUNC(宽度/ 2)+ I,TRUNC(身高/ 2)+ I);
SetWindowRgn(手柄,R,TRUE);
Application.ProcessMessages;
睡眠(1);
结束;
结束;
(5)用回车代替Tab键在编辑框中移动隹点。
程序TForm1.FormKeyPress(发件人:TObject的; VAR键:字符);
开始
如果key =#13则
开始
如果没有(的ActiveControl是Tmemo),那么
开始
关键:=#0;
keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0);
结束;
结束;
结束;
(6)。进度列加上色彩。
常量
{$ EXTERNALSYM PBS_MARQUEE}
PBS_MARQUEE = 08;
VAR
FORM1:TForm1;
实施
{$ R *. DFM}
使用
CommCtrl;
程序TForm1.Button1Click(发件人:TObject的);
开始
/ /设置背景颜色为蓝绿色
Progressbar1.Brush.Color:= clTeal;
/ /设置栏的颜色为黄色
SendMessage消息(ProgressBar1.Handle,PBM_SETBARCOLOR,0,clYellow);
结束;
(7)。住点移动时编辑框色彩不同。
程序TForm1.Edit1Enter(发件人:TObject的);
开始
(如TEDIT发件人)颜色:= clred;
结束;
程序TForm1.Edit1Exit(发件人:TObject的);
开始
(如TEDIT发件人)颜色:= clwhite;
结束;
(8)备份和恢复
程序TForm1.Button1Click(发件人:TObject的);
开始
如果OpenDialog1.Execute然后
开始
试试
adoconnection1.Connected:= FALSE;
adoconnection1.ConnectionString:='供应商= SQLOLEDB.1;坚持安全信息= FALSE;用户ID = SA;初始目录=掌握;资料来源=朋友 - YOFZKSCO;'+
“使用准备= 1程序;自动翻译= TRUE;数据包大小= 4096;工作站ID =朋友 - YOFZKSCO;用于数据加密=假;与列的排序规则标签时可能=假”;
adoconnection1.Connected:= TRUE;
与adoQuery1做
开始
关闭;
SQL.Clear;
SQL.Add(“备份数据库SFA到磁盘='''+ opendialog1.FileName +'''');
ExecSQL;
结束;
除非
ShowMessage ('±?·叶§ · U');
出口;
结束;
结束;
Application.MessageBox(1 § 2 ×英镑EY Ÿ ± ° Y3é1 |','IAE',MB_OK + MB_ICONINFORMATION????);
结束;
程序TForm1.Button2Click(发件人:TObject的);
开始
如果OpenDialog1.Execute然后
开始
试试
adoconnection1.Connected:= FALSE;
adoconnection1.ConnectionString:='供应商= SQLOLEDB.1;坚持安全信息= FALSE;用户ID = SA;初始目录=掌握;资料来源=朋友 - YOFZKSCO;'+
“使用准备= 1程序;自动翻译= TRUE;数据包大小= 4096;工作站ID =朋友 - YOFZKSCO;用于数据加密=假;与列的排序规则标签时可能=假”;
adoconnection1.Connected:= TRUE;
与adoQuery1做
开始
关闭;
SQL.Clear;
SQL.Add(“还原数据库SFA从磁盘='''+ opendialog1.FileName +'''');
ExecSQL;
结束;
除非
ShowMessage ('???' ê § · U');
出口;
结束;
结束;
Application.MessageBox(1 § 2 ×英镑EY Ÿ '3 E1 |','IAE',MB_OK + MB_ICONINFORMATION?????);
结束;
(9)。查找局域网上的SQLSERVER报务器。
使用Comobj;
程序TForm1.Button1Click(发件人:TObject的);
VAR
SQLSERVER:变异;
ServerList:变式;
我,nServers:整数;
sRetValue:字符串;
开始
SQLSERVER:= CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
nServers:= ServerList.Count;
对于i:= 1 nservers做
ListBox1.Items.Add(ServerList.Item(I));
SQLSERVER:= NULL;
serverList:= NULL;
结束;
(10)。窗体打开时的淡入效果。
程序TForm1.FormCreate(发件人:TObject的);
开始
AnimateWindow(手柄,400,AW_CENTER);
结束;
(11)。动态创建窗体。
程序TForm1.Button1Click(发件人:TObject的);
开始
试试
Form2的:= Tform2.Create(个体经营);
form2.ShowModal;
最终
form2.Free;
结束;
结束;
程序TForm1.FormClose(发件人:TObject的; VAR行动:TCloseAction);
开始
行动:= cafree;
结束;
程序TForm1.FormDestroy(发件人:TObject的);
开始
FORM1:=零;
结束;
(12)。复制文件。
程序TForm1.Button1Click(发件人:TObject的);
开始
试试
copyfileA(PChar类型('C:/ AAA.txt'),PChar类型('D:/ AAA.txt“),FALSE);
除非
showmessage('sfdsdf');
结束;
结束;
(13)。复制文件夹。
使用shellAPI;
程序TForm1.Button1Click(发件人:TObject的);
VAR
lpFileOp:TSHFileOpStruct;
开始
与lpFileOp做
开始
Wnd的内容:= Self.Handle;
wfunc:= FO_COPY;
pFrom中:= PChar类型('C:/ AAA');
PTO:= PChar类型('D:/ AAA');
FFLAGS:= FOF_ALLOWUNDO;
hNameMappings:=零;
lpszProgressTitle:=零;
fAnyOperationsAborted:= TRUE;
结束;
如果SHFileOperation(lpFileOp)<> 0,则
ShowMessage(“删除失败”);
结束;
(14)。改变DBGrid中的选定色。
程序TForm1.DBGrid1DrawDataCell(发件人:TObject的;常量矩形:TRect;
现场:TField;状态:TGridDrawState);
开始
如果gdSelected然后在状态
SetBkColor(dbgrid1.canvas.handle,clgreen)
其他
setbkcolor(dbgrid1.canvas.handle,clwhite);
dbgrid1.Canvas.TextRect(RECT,0,0,field.AsString);
dbgrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);
结束;
(15)。检测系统是否已安装了ADO。
使用注册表;
功能Tform1.ADOInstalled:布尔;
VAR
R:TRegistry;
年代:字符串;
开始
R:= TRegistry.create;
试试
用R做
开始
RootKey:= HKEY_CLASSES_ROOT;
OpenKey('/ ADODB.Connection / CurVer“,FALSE);
S:= ReadString ('');
如果s <> ''然后结果:= TRUE
否则结果:= FALSE;
CloseKey;
结束;
最终
r.free;
结束;
结束;
程序TForm1.Button1Click(发件人:TObject的);
开始
如果ADOInstalled然后showmessage('这台计算机已经安装了ADO');
结束;
(16)取利主机的IP地址。
使用WinSock;
程序TForm1.Button1Click(发件人:TObject的);
VAR
IP:字符串;
IPstr:字符串;
缓冲区:ARRAY [1 .. 32]的字符;
我:整数;
WSData:TWSAdata;
主持人:PHostEnt;
开始
如果调用WSAStartup(2,WSData)<> 0,则
开始
showmessage('WS2_32.DLL3 êˉê § · U??');
退出;
结束;
试试
如果GetHostname(@缓冲区[1],32)<> 0,则
开始
showmessage('?óDμ?μ?÷?ú ??.');
退出;
结束;
除非
showmessage('óD3é1 |??·μ???÷? Ú ??');
退出;
结束;
主持人:=的gethostbyname(@缓冲区[1]);
如果主机=无则
开始
showmessage('IPμ??·?a ??.');
退出;
年底
其他
开始
edit2.Text:= Host.h_name;
edit3.Text:= CHR(host.h_addrtype +64);
对于i:= 1至4做
开始
IP:= inttostr(ORD(host.h_addr ^ [I - 1]));
如果i <4,然后
ipstr:“'= ipstr + IP +
其他
edit1.Text:= ipstr + IP;
结束;
结束;
WSACleanup;
结束;
(17)取得计算机名。
功能tform1.get_name:字符串;
VAR计算机名:PChar类型,大小:DWORD;
开始
GetMem(计算机名,255);
大小:= 255;
如果GetComputerName(计算机名,大小)= false,则
结果:= ''
其他
结果:=计算机名;
FreeMem(计算机名);
结束;
程序TForm1.Button1Click(发件人:TObject的);
开始
label1.Caption:= get_name;
结束;
(18)。取得硬盘序列号。
功能tform1.GetHDSerialNumber:LongInt;
{$ IFDEF WIN32}
VAR
PDW:PDWORD;
MC,FL:DWORD;
{$ ENDIF}
开始
{$ IFDEF WIN32}
新(PDW);
GetVolumeInformation(“C:/',零,0,PDW,MC,FL,零,0);
结果:= PDW ^;
处置(PDW);
{$ ELSE}
结果:= GetWinFlags;
{$ ENDIF}
结束;
程序TForm1.Button1Click(发件人:TObject的);
开始
edit1.Text:= inttostr(gethdserialnumber);
结束;
(19)。限定光标移动范围。
程序TForm1.Button1Click(发件人:TObject的);
VAR
rect1:trect;
开始
rect1:= button2.BoundsRect;
mapwindowpoints(句柄,0,rect1,2);
clipcursor(@ rect1);
结束;
程序TForm1.Button2Click(发件人:TObject的);
VAR
screenrect:trect;
开始
screenrect:RECT =(0,0,screen.Width,screen.Height);
clipcursor(@ screenrect);
结束;
(20)。限制编辑框只能输入数字。
程序TForm1.Edit1KeyPress(发件人:TObject的; VAR键:字符);
开始
如果不是(在['0'.. '9 ','.',# 8]键),则
开始
关键:=#0;
的MessageBeep(0);
结束;
结束;
(21)。DBGrid的中根据任一条件某一格变色。
程序TForm_main.DBGridEh1DrawColumnCell(发件人:TObject的;
const的矩形:TRect; DataCol:整数;色谱柱:TColumnEh;
状态:TGridDrawState);
开始
如果(TRIM(DataModule1.ADOQuery1.FieldByName('dczt')。AsString)='OK'),那么
开始
如果datacol = 6则
开始
DbGrideh1.Canvas.Brush.Color:= clGradientActiveCaption;
DbGrideh1.DefaultDrawColumnCell(矩形,datacol,列,状态);
结束;
结束;
结束;
(22)。打开文字文件。
程序TfjfsglForm.SpeedButton4Click(发件人:TObject的);
VAR
MSWORD:变式;
STR:字符串;
开始
如果修剪(DataModule1.adoquery27.fieldbyname('fjmc')。asstring )<>''然后
开始
STR:=修剪(。DataModule1.ADOQuery27.fieldbyname('fjmc')AsString);
MSWORD:= CreateOLEObject(“Word.Application ');//
MSWord.Documents.Open('D:/ Program Files文件/共同文件/ SFA /'+ STR,TRUE); / /
MSWord.Visible:= 1; / /
STR :='';
MSWord.ActiveDocument.Range(0,0); / /
MSWord.ActiveDocument.Range.InsertAfter(STR );//? úWord?D??ó ×?·?'标题“
MSWord.ActiveDocument.Range.InsertParagraphAfter;
年底
其他
showmessage ('');
结束;
(23)字文件传入和传出数据库。
使用IdGlobal;
程序TdjhyForm.SpeedButton2Click(发件人:TObject的);
VAR
sfilename:字符串;
功能BlobContentTostring(常量名:字符串):字符串;
开始
与Tfilestream.Create(文件名,fmopenread)做
试试
中用SetLength(结果,大小);
阅读(指针(结果)^,大小);
最终
免费;
结束;
结束;
开始
如果opendialog1.Execute然后
开始
sfilename:= opendialog1.FileName;
DataModule1.ADOQuery14.Edit;
。DataModule1.ADOQuery14.FieldByName('字')AsString:= blobcontenttostring(sfilename);
DataModule1.ADOQuery14.Post;
结束;
结束;
程序TdjhyForm.SpeedButton1Click(发件人:TObject的);
VAR
sfilename:字符串;
BS:Tadoblobstream;
开始
BS:= Tadoblobstream.Create(TBLOBfield(DataModule1.ADOQuery14.FieldByName('字')),bmread);
试试
sfilename:= extractfilepath(application.ExeName)+修剪(。DataModule1.adoquery14.fieldbyname('hybh')AsString);
sfilename:= sfilename +'.'+' DOC“;
bs.SaveToFile(sfilename);
试试
djhyopenform:= Tdjhyopenform.Create(个体经营);
djhyopenform.olecontainer1.CreateObjectFromFile(sfilename,FALSE);
djhyopenform.OleContainer1.Iconic:= TRUE;
djhyopenform.ShowModal;
最终
djhyopenform.Free;
结束;
最终
bs.free;
结束;
结束;
(24)中文标题的提示框。
程序TdjhyForm.SpeedButton5Click(发件人:TObject的);
开始
如果Application.MessageBox('',MB_YESNO + Mb_IconWarning)= Id_yes然后DataModule1.ADOQuery14.Delete;
结束;
(25)。运行一应用程序文件。
WinExec(“HH.EXE D:/程序文件/共同文件/ MyshipperCRM电子销售帮助/ MyshipperCRM电子销售指南Help.chm”,SW_NORMAL);
1,关于MDI主窗体背景新解
在表格中添加图像控件
设BMP图象
名称为IMG_BK
在Foem的创建事件中写入
Self.brush.bitmap:= img_bk.picture.bitmap;
2,在标题栏处画VCL控件(一行解决问题!)
在形式的的OnPaint事件中
控件pointto(的GetDC(0),左,上);
3编辑中只输入数字
SetWindowLong函数(Edit1.Handle,GWL_STYLE,
GetWindowLong(Edit1.Handle,GWL_STYLE)或
ES_NUMBER);
4,类似MDI方式新解
在要设置孩子的OnCreate中方式下写入:
self.parent:='要设置为MainForm中的表“;
5。屏幕的刷新(只需一行!)
RedrawWindow(0,零,0,RDW_ERASE或RDW_INVALIDATE或RDW_ALLCHILDREN);
| |
--- ----
处理RGN(可刷新局部屏幕)
6,类似DOS下的CLS指令的WINDOWS指令!
paintdesktop(的GetDC(0));
7,扩展控件新功能
在编程中,我们经常要控制控件的动作,但该控件又没有提供该方法
这时,可通过发消息给该控件,以达到我们的目的!
如:
button1.perform(WM_KEYDOWN,13,0);
listbox1.perform(WM_VSCROLL,sb_linedown,0);
等等可少去重载之苦!!!!!
8。闪烁标题如打印机超时(一行)
形式放一定时器控件
一次事件中写入;
flashwindow(application.handle,TRUE);
9,在桌面上加个VCL控件!(不是画的,不可更新)
windows.setparent(控件句柄,0);
注:想放哪都行(如“开始处状态栏”)
10,关于“类似MDI方式新解(一行就行!!!!)'的修正
windows.setparent(self.handle,“要设置为MainForm中的表”);
11普通表格象MDI中主窗体始终在最底层
SetActiveWindow(0);
或SetwindowPos (...);
12执行下列语句开始的Windows屏幕保护程序
SendMessage消息(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);
13按钮的标题多行显示:
SetWindowLong函数(Button1.handle,GWL_STYLE,
GetWindowlong(Button1.Handle,GWL_STYLE)或
BS_MULTILINE);
必要时加上Button1.Invalidate;
14整死WINDOWS98。)
ASM INT19美元结束
/ /实现使窗口的关闭变灰(H:窗口的句柄)
功能TFrmPublic.GrayedCloseItem(H:HWND):布尔;
VAR
HM:HMENU;
开始
如果H <> 0,/ /有效句柄
开始
HM:= GetSystemMenu(H,假);
结果:= EnableMenuItem(HM,SC_CLOSE,MF_BYCOMMAND + MF_DISABLED + MF_GRAYED);
年底
其他
结果:= FALSE;
结束;
/ /实现使窗口的关闭有效(H:窗口的句柄)
功能TFrmPublic.EnableCloseItem(H:HWND):布尔;
VAR
HM:HMENU;
开始
如果H <> 0,/ /有效句柄
开始
HM:= GetSystemMenu(H,假);
结果:= EnableMenuItem(HM,SC_CLOSE,MF_BYCOMMAND + MF_ENABLED);
年底
其他
结果:= FALSE;
结束;
功能GetKbStatus():字符串;
/ /返回当前键盘状态,包括NumLoce,大写锁定,插入
/ /每个状态信息占两个字符,顺序为:NumLoce,大写锁定,插入
/ /版权所有 549 @ 11:29 2003-7-22
VAR状态:字符串;
KeyStates:TKeyboardState;
开始
GetKeyboardState(KeyStates);
如果奇(KeyStates [VK_NUMLOCK]),则
现状:='数字'
其他
现状:='光标“;
如果奇(KeyStates [VK_CAPITAL]),则
现状:=状态+“大写”
其他
现状:=状态+“小写”;
如果奇(KeyStates [VK_INSERT]),则
现状:=状态+'插入'
其他
现状:=状态+'改写';
结果:=状态;
结束;
给MDI主窗口加背景
在MDI程序中,由于MDI的主窗口一般的功能是提供子窗口显示的位置和提供菜单,工具条,状态条等,而窗口的客户区则一般不会有其它的用途,如果在这里画上一些软件的标志,公司的标志或者其它的背景图案的话,不仅可以使MDI的主窗口更加充实,美观,而且还可以更加突出公司的形象和增加公司标志在客户心中的地位。
由于MDI主窗口的特性,使用普通的OnPaint和使用TImage等方法都不会产生作用。下面将用编写一个简单的MDI程序来介绍如何实现。
第一步:打开德尔福(Delphi的1,2,3都可以),创建一个新的工程。
第二步:将Form1中的FormStyle设置为fsMDIForm,设置成MDI的主窗口。
第三步:在Form1中上增加一个图像元件,并选择要设置的背景到形象的图片中。
第四步:在Form1中的私人中定义:
FClientInstance,
FPrevClientProc:TFarProc;
程序ClientWndProc(VAR消息:TMessage);
第五步:在实现(实施)中加入上述过程的具体内容:
程序TForm1.ClientWndProc(VAR消息:TMessage);
VAR
MYDC:HDC;
RO,钴:字;
开始
有消息做
案件味精
WM_ERASEBKGND:
开始
MYDC:= TWMEraseBkGnd(消息)DC;
反渗透:= 0 TO ClientHeight DIV Image1.Picture.Height DO
为协办:= 0至ClientWIDTH DIV Image1.Picture.Width DO
BitBlt函数(MYDC,CO * Image1.Picture.Width,RO * Image1.Picture.Height,
Image1.Picture.Width,Image1.Picture.Height,
Image1.Picture.Bitmap.Canvas.Handle,0,0,SRCCOPY);
结果:= 1;
结束;
其他
结果:= CallWindowProc(FPrevClientProc,ClientHandle,味精,WPARAM,LPARAM);
结束;
结束;
第六步:在Form1中的创建事件中加入:
FClientInstance:= MakeObjectInstance(ClientWndProc);
FPrevClientProc:=指针(GetWindowLong(ClientHandle,GWL_WNDPROC));
SetWindowLong函数(ClientHandle,GWL_WNDPROC,LongInt(FClientInstance));
上面的步骤已经完成了MDI主窗口背景图案的设置,下面可以增加一个MDIChild窗口,实现MDI程序。
第七步:新增加一个表格,并将FormStyle设置为fsMDIChild。
现在你可以编译运行这个程序,你会发现,图像元件并不会在表上显示出来,但是整个窗体的客户区域被图片中的图像所铺满。
]
金额改大写:
功能XTOD(I:真实的):字符串;
CONST
D ='零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿';
瓦尔
M,K:字符串;
J:整数;
开始
K:= '';
米:= floattostr(INT(I * 100));
对于J:=长度Downto 1(M)不要
开始
K:= K + D [(strtoint(M [长度(M) - J + 1]))* 2 + 1] +
D [(strtoint(M [长度(M) - J + 1]))* 2 + 2] + D [(10 + J)* 2 - 1] +
D [(10 + J)* 2];
完;
结果:= K;
完;
DELPHI基础开发技巧
|
◇[DELPHI]网络邻居复制文件
|
使用 shellapi;
|
的CopyFile( PChar类型 ( “newfile.txt' ), PChar类型 ( '/ /计算机名/方向/ targer.txt“ ), 假 );
|
◇[DELPHI]产生鼠标拖动效果
|
通过的MouseMove事件,的DragOver事件,EndDrag事件实现,例如在面板上的 标签 :
|
VAR xpanel,ypanel,xlabel,ylabel: 整数 ;
|
PANEL的MouseMove事件的:xpanel:= X; ypanel:= Y;
|
面板的的DragOver事件:xpanel:= X; ypanel:= Y;
|
LABEL 的MouseMove事件的:xlabel:= X; ylabel:= Y;
|
LABEL 的EndDrag事件: 标签 。 左:= xpanel - xlabel; 标签 。 顶部:= ypanel - ylabel;
|
◇[DELPHI]取得WINDOWS目录
|
使用 shellapi;
|
VAR WINDIR: 数组 [ 0 .. 255 ] 的 字符 ;
|
getwindowsdirectory(WINDIR,SIZEOF(WINDIR));
|
或者从注册表中读取,位置:
|
HKEY_LOCAL_MACHINE / SOFTWARE / MICROSOFT / WINDOWS / CURRENTVERSION
|
SYSTEMROOT键,取得如:C:/ WINDOWS
|
◇[DELPHI]在FORM或其他容器上画线
|
VAR X,Y: 数组 [ 0 .. 50 ] 的 整数 ;
|
帆布 。 笔 。 颜色:= clred;
|
帆布 。 笔 。 风格:= psDash;
|
Form1上 。 画布 。 moveTo的(TRUNC(X [I]),TRUNC(Y [I]));
|
Form1上 。 画布 。 LineTo的(TRUNC(X [J]),TRUNC(Y [J]));
|
◇[DELPHI]字符串列表使用
|
VAR 提示:tstringlist;
|
技巧:= tstringlist 。 创建;
|
提示 。 loadfromfile( “FILENAME.TXT' );
|
EDIT1 。 文字:=技巧[ 0 ];
|
提示 。 添加( “最后一行除了字符串' );
|
提示 。 插入( 1 , 'NO 2行插入字符串' );
|
提示 。 的SaveToFile( “newfile.txt' );
|
提示 。 自由;
|
◇[DELPHI]简单的剪贴板操作
|
richedit1 。 全选;
|
richedit1 。 copytoclipboard;
|
richedit1 。 cuttoclipboard;
|
EDIT1 。 pastefromclipboard;
|
◇[DELPHI]关于文件,目录操作
|
CHDIR( “C:/ abcdir' );转到目录
|
MKDIR( “ 目录名称” );建立目录
|
RMDIR( “ 目录名称” );删除目录
|
GetCurrentDir; / /取当前目录名,无'/'
|
GETDIR( 0 ,S); / /取工作目录名S:='C:/ abcdir“;
|
Deletfile( “abc.txt” ); / /删除文件
|
Renamefile( “old.txt” , “new.txt” ); / /文件更名
|
ExtractFilename(filelistbox1 。 文件名 ); / /取文件名
|
ExtractFileExt(filelistbox1 。 文件名 ); / /取文件后缀
|
◇[DELPHI]处理文件属性
|
ATTR:= filegetattr(filelistbox1 。 文件名 );
|
如果 (ATTR 和 faReadonly)= faReadonly 然后 ... / /只读
|
如果 (ATTR 和 faSysfile)= faSysfile 然后 ... / /系统
|
如果 (ATTR 和 faArchive)= faArchive 然后 ... / /存档
|
如果 (ATTR 和 faHidden)= faHidden 然后 ... / /隐藏
|
◇[DELPHI]执行程序外文件
|
WINEXEC / /调用可执行文件
|
winexec(“命令 。 COM / C复制*.* C:/',SW_Normal);
|
winexec( “ 开始abc.txt” );
|
的ShellExecute或ShellExecuteEx / /启动文件关联程序
|
功能 executefile( const的 文件名 ,PARAMS,DEFAULTDIR: 字符串 ; showCmd: 整数 ):THandle;
|
ExecuteFile( 'C:/ ABC / a.txt“ , “x.abc' ,'C:/ ABC /', 0 );
|
ExecuteFile( “ http://tingweb.yeah.net ' , '' , '' , 0 );
|
ExecuteFile( “MAILTO:tingweb@wx88.net' , '' , '' , 0 );
|
◇[DELPHI]取得系统运行的进程名
|
VAR hCurrentWindow:HWND; szText: 数组 [ 0 .. 254 ] 的 字符 ;
|
开始
|
hCurrentWindow:= Getwindow(处理,GW_HWndFrist);
|
而 hCurrentWindow <> 0 做
|
开始
|
如果 GetWindowText函数(hcurrnetwindow,@ sztext, 255 )> 0 ,然后 listBox1的 。 项 。 添加(strpas(@ sztext));
|
hCurrentWindow:= Getwindow(hCurrentwindow,GW_HWndNext);
|
结束 ;
|
结束 ;
|
◇[DELPHI]关于汇编的嵌入
|
ASM 结束 ;
|
可以任意修改EAX,ECX,EDX;不能修改ESI,EDI,ESP,EBP,EBX。
|
◇[DELPHI]关于类型转换函数
|
FloatToStr / /浮点转字符串
|
FloatToStrF / /带格式的浮点转字符串
|
IntToHex / /整数转16进制
|
TimeToStr
|
DateToStr
|
DateTimeToStr
|
FmtStr / /按指定格式输出字符串
|
的FormatDateTime( 'YYYY - MM - DD,HH - MM - SS“ , 日期);
|
◇[DELPHI]字符串的过程和函数
|
插入(OBJ,目标,POS) 。/ /字符串目标插入在POS机的位置如插入结果大于目标的最大长度,多出字符将被截掉如名次在255以外,会产生运行错例如, ST:=“布莱恩”,则插入('OK',ST,2)会使ST变为“BrOKian”。
|
删除(ST,POS,NUM); / /从ST串中的POS(整型)位置开始删去个数为序号(整型)个字符的子字串例如,ST:=“布莱恩”,则删除(ST,3,2)将变为BRN。
|
STR(值,ST); / /将数值值(整型或实型)转换成字符串放在ST中例如,A = 2.5E4时,则STR(A:10,ST)将使ST的值为“25000”。
|
瓦尔 (ST, VAR ,代码); 。/ /把字符串表达式ST转换为对应整型或实型数值,存放在VAR中圣必须是一个表示数值的字符串,并符合数值常数的规则在转换过程中,如果没有检测出错误,变量代码置为0,否则置为第一个出错字符的位置例如,ST:= 25.4E3,X是一个实型变量,则VAL(ST,X,代码)将使X值为25400,代码值为0。
|
复制(ST 。 POS 。 NUM) / /返回ST串中一个位置POS(整型)处开始的,含有NUM(整型)个字符的子串如果POS大于ST字符串的长度,那就会返回一个空串,如果POS在255以外,会引起运行错误例如,ST:=“布莱恩”,则复制(ST,2,2)返回'里“。
|
CONCAT(ST1,ST2,ST3 ... ...,STN); / /把所有自变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值如果结果的长度255,将产生运行错误,例如,ST1:='布赖恩',ST2:='',ST3:='威尔弗雷德“,则CONCAT(ST1,ST2,ST3)返回”布赖恩威尔弗雷德“。
|
长度(ST) / /返回字符串表达式的长度例如ST,ST:=“布莱恩”,则长度(ST)返回值为5。
|
POS(OBJ,目标); / /返回字符串obj的目标在目标字符串的第一次出现的位置,如果目标没有匹配的串,POS函数的返回值为0例如,目标:='布赖恩威尔弗雷德“,则POS(“威尔”,目标)的返回值是7,POS('hurbet“,目标)的返回值是0。
|
◇[DELPHI]关于处理注册表
|
使用 注册表;
|
VAR 章:Tregistry;
|
章:= Tregistry 。 创建;
|
章 。 rootkey:= “HKEY_CURRENT_USER” ;
|
章 。 openkey( “ 控制面板/桌面” , 假的 );
|
章 。 WriteString( “ 标题墙纸' , '0' );
|
章 。 writeString( “ 壁纸” ,filelistbox1 。 文件名 );
|
章 。 closereg;
|
章 。 自由;
|
◇[DELPHI]关于键盘常量名
|
VK_BACK / VK_TAB / VK_RETURN / VK_SHIFT / VK_CONTROL / VK_MENU / VK_PAUSE / VK_ESCAPE
|
/ VK_SPACE / VK_LEFT / VK_RIGHT / VK_UP / VK_DOWN
|
F1 - F12: 70美元 ( 112 ) - 70亿美元 ( 123 )
|
AZ: 41美元 ( 65 ) - $ 5A ( 90 )
|
0 - 9 : 30美元 ( 48 ) - 39美元 ( 57 )
|
◇[DELPHI]初步判断程序母语
|
DELPHI软件的DOS提示:此 程序 必须是在Win32下运行。
|
VC + +软件的DOS提示:此 程序 不能运行 在 DOS模式。
|
◇[DELPHI]操作曲奇
|
响应 。 。饼干(“名称”)域:= ' http://www.086net.com “ ;
|
与 响应 。 饼干 。 加 做
|
开始
|
名称:= '用户名' ;
|
价值:= '用户名' ;
|
年底
|
◇[DELPHI]增加到文档菜单连接
|
使用 shellapi,shlOBJ;
|
shAddToRecentDocs(shArd_path, PChar类型 (文件路径)); / /增加连接
|
shAddToRecentDocs(shArd_path, 无 ); / /清空
|
◇[杂类]备份智能ABC输入法词库
|
WINDOWS / SYSTEM /用户 。 REM
|
WINDOWS / SYSTEM / tmmr 。 REM
|
◇[DELPHI]判断鼠标按键
|
如果 GetAsyncKeyState(VK_LButton)<> 0 ,然后 ... / /左键
|
如果 GetAsyncKeyState(VK_MButton)<> 0 ,然后 ... / /中键
|
如果 GetAsyncKeyState(VK_RButton)<> 0 ,然后 ... / /右键
|
◇[DELPHI]设置窗体的最大显示
|
onFormCreate事件
|
自我 。 宽度:=屏幕 。 宽度;
|
自我 。 高度:=屏幕 。 高度;
|
◇[DELPHI]按键接受消息
|
的OnCreate事件中处理:应用程序 。 的onMessage:= MyOnMessage;
|
程序 TForm1 。 MyOnMessage( VAR 味精:TMSG; VAR 手柄: 布尔 );
|
开始
|
如果 味精 。 消息= 256 然后 ... / /任何键
|
如果 味精 。 消息= 112 然后 ... / / F1
|
如果 味精 。 消息= 113 然后 ... / / F2
|
结束 ;
|
◇[杂类]隐藏共享文件夹
|
共享效果:可访问,但不可见(在资源管理,网络邻居中)
|
取共享名为:方向$
|
访问: / /计算机/ dirction /
|
◇[Java脚本]的Java Script网页常用效果
|
网页 60 秒定时关闭
|
关闭窗口
|
关闭
|
定时转URL
|
数据源,一个是MQIS,一个是LocalSever,任选一个选后点击配置按钮,不知你的SQL7 0.0
|
是不是安装在本地机器上,如果是的话直接进行下一步,如果不是,在服务器一栏中填上
|
服务器,然后进行下一步,填写登录ID和密码(登录ID,和密码是在SQL7 0.0 中的用户选项
|
中设的)。
|
第二步,配置BDE:
|
打开Delphi中的BDE,然后点击MQIS或LocalServer,就会提示用户名和密码,这和
|
ODBC的用户名和密码是一样的,填上就行了。
|
第三步,配置程序:
|
如果用的是TTable,就在TTable的数据库名中选择MQIS或LocalServer,然后在
|
的TableName中选择销售就行了,然后将活动改为 真 ,德尔福弹出提示对话,填入用户
|
名和密码。
|
如果用的是的TQuery,在的TQuery上点击右键,再击“SQL生成器”,这是以界面方式配置
|
SQL语句,或者在的TQuery的SQL中填入SQL语句,最后,别忘了将活动改为 真 。
|
在运行也可能配置的TQuery,具体见德尔福帮助。
|
□◇[DELPHI]得到图像上某一点的RGB值
|
程序 TForm1 。 Image1MouseDown(发件人:TObject的;按钮:TMouseButton;
|
移位:TShiftState,X,Y: 整数 );
|
VAR
|
红,绿,蓝: 字节 ;
|
我: 整数 ;
|
开始
|
我:=较受欢迎 。 帆布 。 像素[X,Y];
|
蓝色:= GetBValue(I);
|
绿色:= GetGValue(一):
|
红色:= GetRValue(I);
|
Label1的 。 标题:= inttostr(红色);
|
Label2的 。 标题:= inttostr(绿色);
|
Label3 。 标题:= inttostr(蓝色);
|
结束 ;
|
□◇[DELPHI]关于日期格式分解转换
|
VAR 年,月,日: 字 ; now2:Tdatatime;
|
now2:= DATE();
|
decodedate(now2,年,月,日);
|
lable1 。 文字:= inttostr(年)+ '年' + inttostr(月)+ '月' + inttostr(天)+ “日” ;
|
◇[DELPHI]如何判断当前网络连接方式
|
判断结果是MODEM,局域网或是代理服务器方式。
|
使用 WININET;
|
功能 ConnectionKind: 布尔 ;
|
VAR 标志:DWORD;
|
开始
|
结果:=的InternetGetConnectedState(@标志, 0 );
|
如果 结果 则
|
开始
|
如果 (标志 和 INTERNET_CONNECTION_MODEM)= INTERNET_CONNECTION_MODEM 然后
|
开始
|
showmessage( '调制解调器' );
|
结束 ;
|
如果 (标志 和 INTERNET_CONNECTION_LAN)= INTERNET_CONNECTION_LAN 然后
|
开始
|
showmessage( '网络' );
|
结束 ;
|
如果 (标志 和 INTERNET_CONNECTION_PROXY)= INTERNET_CONNECTION_PROXY 然后
|
开始
|
showmessage( '代理' );
|
结束 ;
|
如果 (标志 和 INTERNET_CONNECTION_MODEM_BUSY)= INTERNET_CONNECTION_MODEM_BUSY 然后
|
开始
|
showmessage( '调制解调器忙“ );
|
结束 ;
|
结束 ;
|
结束 ;
|
◇[DELPHI]如何判断字符串是否是有效EMAIL地址
|
功能 IsEMail(电邮: 弦乐 ): 布尔 ;
|
VAR 年代: 字符串 ; ETpos: 整数 ;
|
开始
|
ETpos:= POS( “@” , 电子邮件);
|
如果 ETpos> 1 则
|
开始
|
S:=复制(电子邮件,ETpos + 1 ,长度(电子邮件));
|
如果 (POS( '。' ,S)> 1 ) 和 (POS( '。' ,S)<长度(S)) ,然后
|
结果:= 真正的 其他 结果:= 虚假的 ;
|
年底
|
其他
|
结果:= 虚假的 ;
|
结束 ;
|
◇[DELPHI]判断系统是否连接INTERNET
|
需要引入URL 。 DLL中的InetIsOffline函数。
|
函数申明为:
|
功能 InetIsOffline(标志: 整数 ): 布尔 ,STDCALL;外部 “URL.DLL” ;
|
然后就可以调用函数判断系统是否连接到互联网
|
如果 InetIsOffline( 0 ), 然后 ShowMessage( “ 没有连接!” )
|
其他 ShowMessage( '连接!' );
|
该函数返回 TRUE, 如果本地系统没有连接到互联网。
|
附:
|
大多数装有IE或OFFICE97的系统都有此DLL可供调用。
|
InetIsOffline
|
BOOL InetIsOffline(
|
DWORD dwFlags中,
|
);
|
◇[DELPHI]简单地播放和暂停WAV文件
|
使用 mmsystem;
|
功能 PlayWav( const的 文件名 : 字符串 ): 布尔 ;
|
开始
|
结果:= PlaySound( PChar类型 (文件名 ), 0 ,SND_ASYNC);
|
结束 ;
|
程序 StopWav;
|
VAR
|
缓冲区: 数组 [ 0 .. 2 ] 的 字符 ;
|
开始
|
缓冲区[ 0 ]:=# 0 ;
|
PlaySound(缓冲, 0 ,SND_PURGE);
|
结束 ;
|
◇[DELPHI]取机器的BIOS信息
|
与 Memo1 。 行 不
|
开始
|
新增( “MainBoardBiosName:” + ^ I + 字符串 ( PCHAR (PTR( $ FE061 ))));
|
新增( “MainBoardBiosCopyRight:” + ^ I + 字符串 ( PCHAR (PTR( $ FE091 ))));
|
新增( “MainBoardBiosDate:” + ^ I + 字符串 ( PCHAR (PTR( $ FFFF5 ))));
|
新增( “MainBoardBiosSerialNo:” + ^ I + 字符串 ( PCHAR (PTR( $ FEC71 ))));
|
结束 ;
|
◇[DELPHI]网络下载文件
|
使用 URLMON;
|
功能 DownloadFile(来源,目的地: 字符串 ): 布尔 ;
|
开始
|
试试
|
结果:= UrlDownloadToFile( 零 , PChar类型 (源), PChar类型 (DEST), 0 , 零 )= 0 ;
|
除非
|
结果:= 假 ;
|
结束 ;
|
结束 ;
|
如果 DownloadFile( “ http://www.borland.com/delphi6.zip ,“ C:/的Kylix 。 压缩“) , 然后
|
ShowMessage( '下载成功“ )
|
其他 ShowMessage( '下载unsuccesful“ )
|
◇[DELPHI]解析服务器IP地址
|
使用 Winsock的
|
功能 IPAddrToName(IPADDR: 字符串 ): 字符串 ;
|
VAR
|
SockAddrIn:TSockAddrIn;
|
HostEnt:PHostEnt;
|
WSADATA:TWSAData;
|
开始
|
调用WSAStartup( 101美元 ,WSADATA);
|
SockAddrIn 。 sin_addr 。 s_addr:= inet_addr( PChar类型 (IPADDR));
|
HostEnt:= gethostbyaddr(@ SockAddrIn 。 sin_addr 。 S_addr, 4 ,AF_INET);
|
如果 HostEnt <> 无 则 结果是:= StrPas(Hostent ^ h_name) 其他 结果:= '' ;
|
结束 ;
|
◇[DELPHI]取得快捷方式中的连接
|
功能 ExeFromLink( 常量 linkname: 字符串 ): 字符串 ;
|
VAR
|
FDir,
|
FName参数,
|
ExeName: PChar类型 ;
|
Z: 整数 ;
|
开始
|
ExeName:= StrAlloc(MAX_PATH);
|
FName参数:= StrAlloc(MAX_PATH);
|
FDir:= StrAlloc(MAX_PATH);
|
StrPCopy(FName参数,ExtractFileName(linkname));
|
StrPCopy(FDir,ExtractFilePath(linkname));
|
Z:= FindExecutable(FName参数,FDir,ExeName);
|
如果 Z> 32 则
|
结果:= StrPas(ExeName)
|
其他
|
结果:= '' ;
|
StrDispose(FDir);
|
StrDispose(FName参数);
|
StrDispose(ExeName);
|
结束 ;
|
◇[DELPHI]控制TCombobox的自动完成
|
{'排序'属性的TCombobox为true}
|
VAR lastKey: 字 ; / /全局变量
|
/ / TCombobox的的OnChange事件
|
程序 TForm1 。 AutoCompleteChange(发件人:TObject的);
|
VAR
|
SearchStr: 字符串 ;
|
RETVAL: 整数 ;
|
开始
|
SearchStr:=(发件人 的 。TCombobox)文本;
|
如果 lastKey <> VK_BACK 然后 / /退格:VK_BACK或08美元
|
开始
|
RETVAL:=(发件人 的 。TCombobox)执行(CB_FINDSTRING - 1 , LongInt ( PChar类型 (SearchStr)));
|
如果 RETVAL> CB_Err 然后
|
开始
|
(发件人 的 。TCombobox)的ItemIndex:= RETVAL;
|
(发件人 的 。TCombobox)SelStart的:=长度(SearchStr);
|
(发件人 的 。TCombobox)并将SelLength:=
|
(长((发件人 的 。TCombobox)文本) -长度(SearchStr));
|
结束 ; / / RETVAL> CB_Err
|
结束 ; / / lastKey <> VK_BACK
|
lastKey:= 0 ; / /复位lastKey
|
结束 ;
|
/ / TCombobox的OnKeyDown事件
|
程序 TForm1 。 AutoCompleteKeyDown(发件人:TObject的; VAR 重点: 字 ;
|
移位:TShiftState);
|
开始
|
lastKey:=键;
|
结束 ;
|
◇[DELPHI]如何清空一个目录
|
功能 EmptyDirectory(TheDirectory: 字符串 ;递归: 布尔 ):
|
布尔 ;
|
VAR
|
SearchRec:TSearchRec;
|
RES: 整数 ;
|
开始
|
结果:= 假 ;
|
TheDirectory:= NormalDir(TheDirectory);
|
RES:=使用FindFirst(TheDirectory + '*.*' ,faAnyFile,SearchRec);
|
试试
|
而 RES = 0 做
|
开始
|
如果 (SearchRec 。 名称<> '。' ) 和 (SearchRec 。 名称<> '..' ), 然后
|
开始
|
如果 ((SearchRec 。 的Attr 和 faDirectory)> 0 ) 和 递归
|
然后 开始
|
EmptyDirectory(TheDirectory + SearchRec 。 名, 真 );
|
RemoveDirectory( PChar类型 (TheDirectory + SearchRec 。 名称));
|
年底
|
否则 开始
|
删除文件( PChar类型 (TheDirectory + SearchRec 。 名称))
|
结束 ;
|
结束 ;
|
RES:= FindNext(SearchRec);
|
结束 ;
|
结果:= 真 ;
|
最终
|
FindClose(SearchRec 。 FindHandle);
|
结束 ;
|
结束 ;
|
◇[DELPHI]如何计算一个目录的大小
|
功能 GetDirectorySize( 常量 ADirectory: 字符串 ): 整数 ;
|
VAR
|
导演:TSearchRec;
|
RET: 整数 ;
|
路径: 字符串 ;
|
开始
|
结果:= 0 ;
|
路径:= ExtractFilePath(ADirectory);
|
RET:= sysutils的 。 使用FindFirst(ADirectory,faAnyFile,DIR);
|
如果 惩戒<> NO_ERROR 然后 退出;
|
试试
|
而 RET = NO_ERROR 做
|
开始
|
公司(结果,导演 。 尺寸);
|
如果 (目录 。 的Attr 在 [faDirectory]) 和 (目录 。 名称[ 1 ] <> '。' ) ,然后
|
公司(结果,GetDirectorySize(路径+目录 。 名称+ '/ *.*“ ));
|
RET:= sysutils的 。 FindNext(目录);
|
结束 ;
|
最终
|
sysutils的 。 FindClose(目录);
|
结束 ;
|
结束 ;
|
◇[DELPHI]安装程序如何添加到卸载列表
|
操作注册表,如下:
|
1 ,在HKEY_LOCAL_MACHINE / SOFTWARE / MICROSOFT / WINDOWS / CURRENTVERSION /卸载键下建立一个主键,名称任意。
|
例HKEY_LOCAL_MACHINE / SOFTWARE / MICROSOFT / WINDOWS / CURRENTVERSION /卸载/ MyUninstall
|
2 ,在HKEY_LOCAL_MACHINE / SOFTWARE / MICROSOFT / WINDOWS / CURRENTVERSION /卸载/ MyUnistall下键两个串值,
|
这两个串值的名称是特定的:的DisplayName和UninstallString。
|
3 给串的DisplayName赋值为显示在“删除应用程序列表”中的名称,如。 “针对卸载之一” ;
|
给串UninstallString赋值为执行的删除命令,如C:/ WIN97 / UNINST 。 EXE - F“C:/ TestPro / aimTest 。 ISU“
|
◇[DELPHI]截获WM_QUERYENDSESSION关机消息
|
键入
|
TForm1 = 类 (TForm)
|
程序 WMQueryEndSession( VAR 消息:TWMQueryEndSession);消息WM_QUERYENDSESSION;
|
程序 CMEraseBkgnd( VAR 消息:TWMEraseBkgnd);消息WM_ERASEBKGND;
|
民营
|
{}私人声明
|
市民
|
{公开声明}
|
结束 ;
|
程序 TForm1 。 WMQueryEndSession( VAR 消息:TWMQueryEndSession);
|
开始
|
Showmessage( “ 计算机即将关闭” );
|
结束 ;
|
◇[DELPHI]获取网上邻居
|
程序 getnethood(); / / NT做服务器,WIN98上调试通过。
|
VAR
|
A,I: 整数 ;
|
ERRCODE: 整数 ;
|
netres: 数组 [ 0 .. 1023 ] 的 NETRESOURCE;
|
enumhandle:thandle;
|
enumentries:DWORD;
|
BUFFERSIZE:DWORD;
|
年代: 字符串 ;
|
mylistitems:tlistitems;
|
mylistitem:tlistitem;
|
alldomain:以TStrings;
|
开始 / / listcomputer是一个ListView列出所有电脑; ControlCenter的是一种形式。
|
alldomain:= tstringlist 。 创建;
|
与 netres [ 0 ] 做 开始
|
dwscope:= RESOURCE_GLOBALNET;
|
dwtype:= RESOURCETYPE_ANY;
|
dwdisplaytype:= RESOURCEDISPLAYTYPE_DOMAIN;
|
dwusage:= RESOURCEUSAGE_CONTAINER;
|
lplocalname:= 零 ;
|
lpremotename:= 零 ;
|
lpcomment:= 零 ;
|
lpprovider:= 零 ;
|
结束 ; / /获取所有的域
|
ERRCODE:= wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@ netres [ 0 ],enumhandle);
|
如果 ERRCODE = NO_ERROR 然后 开始
|
enumentries:= 1024 ;
|
BUFFERSIZE:= SIZEOF(netres);
|
ERRCODE:= wnetenumresource(enumhandle,enumentries,@ netres [ 0 ],BUFFERSIZE);
|
结束 ;
|
A:= 0 ;
|
mylistitems:= ControlCenter的 。 lstcomputer 。 项目;
|
mylistitems 。 清除;
|
而 ( 字符串 (netres [A]。lpprovider)<> '' ) 和 (ERRCODE = NO_ERROR) 做
|
开始
|
alldomain 。 添加(netres [A] lpremotename);
|
A:= A + 1 ;
|
结束 ;
|
wnetcloseenum(enumhandle);
|
/ /获取所有的计算机
|
mylistitems:= ControlCenter的 。 lstcomputer 。 项目;
|
mylistitems 。 清除;
|
为 I:= 0 至 alldomain 。 计数, 1 做
|
开始
|
与 netres [ 0 ] 做 开始
|
dwscope:= RESOURCE_GLOBALNET;
|
dwtype:= RESOURCETYPE_ANY;
|
dwdisplaytype:= RESOURCEDISPLAYTYPE_SERVER;
|
dwusage:= RESOURCEUSAGE_CONTAINER;
|
lplocalname:= 零 ;
|
lpremotename:= PChar类型 (alldomain [I]);
|
lpcomment:= 零 ;
|
lpprovider:= 零 ;
|
结束 ;
|
ERRCODE:= WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@ netres [ 0 ],EnumHandle);
|
如果 ERRCODE = NO_ERROR 然后
|
开始
|
EnumEntries:= 1024 ;
|
的bufferSize:=一下SizeOf(NetRes);
|
ERRCODE:= WNetEnumResource(EnumHandle,EnumEntries,@ NetRes [ 0 ]的bufferSize);
|
结束 ;
|
A:= 0 ;
|
而 ( 字符串 (netres [A]。lpprovider)<> '' ) 和 (ERRCODE = NO_ERROR) 做
|
开始
|
mylistitem:= mylistitems 。 添加;
|
mylistitem 。 的ImageIndex:= 0 ;
|
mylistitem 。 标题:=大写(stringreplace( 字符串 (NetRes [A] lpremotename), '/ /' , '' ,[rfReplaceAll]));
|
A:= A + 1 ;
|
结束 ;
|
wnetcloseenum(enumhandle);
|
结束 ;
|
结束 ;
|
◇[DELPHI]获取某一计算机上的共享目录
|
程序 getsharefolder( const的 计算机名: 字符串 );
|
VAR
|
ERRCODE,A: 整数 ;
|
netres: 数组 [ 0 .. 1023 ] 的 NETRESOURCE;
|
enumhandle:thandle;
|
enumentries,BUFFERSIZE:DWORD;
|
年代: 字符串 ;
|
mylistitems:tlistitems;
|
mylistitem:tlistitem;
|
mystrings:tstringlist;
|
开始
|
与 netres [ 0 ] 做 开始
|
dwscope:= RESOURCE_GLOBALNET;
|
dwtype:= RESOURCETYPE_DISK;
|
dwdisplaytype:= RESOURCEDISPLAYTYPE_SHARE;
|
dwusage:= RESOURCEUSAGE_CONTAINER;
|
lplocalname:= 零 ;
|
lpremotename:= PChar类型 (计算机名);
|
lpcomment:= 零 ;
|
lpprovider:= 零 ;
|
结束 ; / /获取根结点
|
ERRCODE:= wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@ netres [ 0 ],enumhandle);
|
如果 ERRCODE = NO_ERROR 然后
|
开始
|
EnumEntries:= 1024 ;
|
的bufferSize:=一下SizeOf(NetRes);
|
ERRCODE:= WNetEnumResource(EnumHandle,EnumEntries,@ NetRes [ 0 ]的bufferSize);
|
结束 ;
|
wnetcloseenum(enumhandle);
|
A:= 0 ;
|
mylistitems:= ControlCenter的 。 lstfile 。 项目;
|
mylistitems 。 清除;
|
而 ( 字符串 (netres [A]。lpprovider)<> '' ) 和 (ERRCODE = NO_ERROR) 做
|
开始
|
与 mylistitems 做
|
开始
|
mylistitem:=补充;
|
mylistitem 。 的ImageIndex:= 4 ;
|
mylistitem 。 标题:= extractfilename(。netres [A] lpremotename);
|
结束 ;
|
A:= A + 1 ;
|
结束 ;
|
结束 ;
|
◇[DELPHI]得到硬盘序列号
|
VAR SerialNum:PDWORD; A,B:DWORD;缓冲: 数组 [ 0 .. 255 ] 的 字符 ;
|
开始
|
如果 GetVolumeInformation(“C:/',缓冲,一下SizeOf(缓冲区),SerialNum,A,B, 无 , 0 ), 然后 Label1的 。 标题:= IntToStr(SerialNum ^);
|
结束 ;
|
◇[DELPHI] MEMO的自动翻页
|
程序 ScrollMemo(备注:TMemo;方向: 字符 );
|
开始
|
案件 方向 的
|
“D” : 开始
|
SendMessage消息(备注 。 手柄, {HWND的备忘录控制}
|
WM_VSCROLL, Windows消息} {
|
SB_PAGEDOWN, 滚动命令} {
|
0 ) {}不使用
|
结束 ;
|
“U” : 开始
|
SendMessage消息(备注 。 手柄, {HWND的备忘录控制}
|
WM_VSCROLL, Windows消息} {
|
SB_PAGEUP, 滚动命令} {
|
0 ); } {未使用
|
结束 ;
|
结束 ;
|
结束 ;
|
程序 TForm1 。 Button1Click(发件人:TObject的);
|
开始
|
ScrollMemo(Memo1, “D” ); / /上翻页
|
结束 ;
|
程序 TForm1 。 Button1Click(发件人:TObject的);
|
开始
|
ScrollMemo(Memo1, “U” ); / /下翻页
|
结束 ;
|
◇[DELPHI] DBGrid的中回车到下个位置(Tab键)
|
程序 TForm1 。 DBGrid1KeyPress(发件人:TObject的; VAR 键: 字符 );
|
开始
|
如果 钥匙=# 13 然后
|
如果 DBGrid1 。 列 。 电网 。 的SelectedIndex <DBGrid1 。 列 。 计数- 1 则
|
DBGrid1 。 列[DBGrid1 。 列 。 电网 。 的SelectedIndex + 1 ]。领域 。 FocusControl
|
其他
|
开始
|
表1 。 下一步;
|
DBGrid1 。 专栏[ 0 ]字段。 。 FocusControl;
|
结束 ;
|
结束 ;
|
◇[DELPHI]如何安装控件
|
安装方法:
|
1 对于单个控件,组件- >安装组件..--> PAS或DCU文件- >安装
|
2 对于带*. DPK文件的控件包, 文件 - >打开(下拉列表框中选*. DPK) - >安装即可。
|
3 对于带*. DPL文件的控件包,安装软件包- >添加- > DPL文件名 即可。
|
4 ,如果以上安装按钮为失效的话,试试编译按钮。
|
5 ,是运行时库则在选项下的包下的runtimepackes加之。
|
如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi中的LIB目录中,有两种方法可以解决:
|
1 ,把安装的原文件拷入到Delphi中的LIB目录下。
|
2 或者工具- >环境选项中把控件原代码路径加入到Delphi中的LIB目录中即可。
|
◇[DELPHI]目录完全删除(DELTREE)
|
程序 TForm1 。 DeleteDirectory(strDir: 字符串 );
|
VAR
|
SR:TSearchRec;
|
FileAttrs: 整数 ;
|
strfilename: 字符串 ;
|
strPth: 字符串 ;
|
开始
|
strpth:= Getcurrentdir();
|
FileAttrs:= faAnyFile;
|
如果 使用FindFirst(strpth + '/'+ strdir +' / *.*', FileAttrs,SR)= 0 则
|
开始
|
如果 (SR 。 的Attr 和 FileAttrs)= SR 。 的Attr 然后
|
开始
|
strfilename:= SR 。 名称;
|
如果 fileexists(strpth + '/'+ strdir +' /'+ strfilename) 则
|
删除文件(strpth + '/'+ strdir +' /'+ strfilename);
|
结束 ;
|
而 FindNext(SR)= 0 做
|
开始
|
如果 (SR 。 的Attr 和 FileAttrs)= SR 。 的Attr 然后
|
开始
|
strfilename:= SR 。 名称;
|
如果 fileexists(strpth + '/'+ strdir +' /'+ strfilename) 则
|
删除文件(strpth + '/'+ strdir +' /'+ strfilename);
|
结束 ;
|
结束 ;
|
FindClose(SR);
|
removedir(strpth +'/'+ strdir);
|
结束 ;
|
结束 ;
|
◇[DELPHI]取得TMemo控件当前光标的行和列信息到Tpoint中
|
1, 功能 ReadCursorPos(SourceMemo:TMemo):TPoint;
|
VAR 点:TPoint;
|
开始
|
点 。 Y:= SendMessage消息(SourceMemo 。 手柄,EM_LINEFROMCHAR,SourceMemo 。 SelStart的, 0 );
|
点 。 X:= SourceMemo 。 (SourceMemo SelStart的,SendMessage消息 。 手柄,EM_LINEINDEX,点 , Y, 0 );
|
结果:=点;
|
结束 ;
|
2。 LineLength:= SendMessage消息(memol.handle,EM - LINELENGTH,CPOS, 0 ); / /行长
|
◇[DELPHI]读硬盘序列号
|
功能 GetDiskSerial(DiskChar: 字符 ): 字符串 ;
|
VAR
|
SerialNum:PDWORD;
|
A,B:DWORD;
|
缓冲液: 数组 [ 0 .. 255 ] 的 字符 ;
|
开始
|
结果:=“”;
|
如果 GetVolumeInformation( PChar类型 (diskchar +“:/”),缓冲,一下SizeOf(缓冲区),SerialNum,
|
A,B, 无 , 0 ), 然后
|
结果:= IntToStr(SerialNum ^);
|
结束 ;
|
◇[INTERNET] CSS常用综合技巧
|
1 ,P:第一字母 {字体大小:300%;浮动:左} / /首字会比普通字体加大三倍。
|
2 / /连接一个外部样式表
|
3 。嵌入一个样式表
|
4 / /内联样式
|
宋体 / / SPAN接受STYLE,CLASS和ID属性
|
DIV 可以包含段落,标题,表格甚至其它部分
|
5 。 CLASS 属性
|
/ /定义见3。
|
6 ,ID属性
|
/ /定义见3。
|
7 。属性列表
|
字体风格:字体风格:[一般|倾斜|斜;
|
字体大小:字体大小:[XX小| X -小|小|中|大| X -大| XX -大|大|小| <长度> | <百分比>]
|
文本修饰:文本装饰:[下划线| |划线| |行通| |闪烁]
|
文本转换:文本转换:[无|利用|大写|小写]
|
背景颜色:背景色:[<颜色> |透明]
|
背景图象:背景图像:[|无]
|
行高:行高:[一般| <数字> | <长度> | <百分比>]
|
边框样式:边框风格:[无|点|虚线|固体| 双 |槽|脊|插图|开始]
|
漂浮:浮动:[左|右|无]
|
8 。长度单位
|
相对单位:
|
EM(EM,元素的字体的高度)
|
EX(x -高度,字母“X”的高度)
|
PX(像素,相对于屏幕的分辨率)
|
绝对长度:
|
在 (英寸, 1 英寸= 2.54 厘米)
|
公分(厘米, 1 厘米= 10 毫米)
|
毫米(米)
|
PT(点, 1 点= 1 / 72 英寸)
|
PC(帕, 1 帕= 12 点)
|
◇[DELPHI] VCL制作简要步骤
|
1 。创建部件属性方法事件
|
(建立库单元,继承为新的类型,添加属性,方法,事件,注册部件,建立包文件)
|
2 ,消息处理
|
3 ,异常处理
|
4 。部件可视
|
◇[DELPHI]动态连接库的装载
|
静态装载: 程序 名称;外部 “lib.dll” ;
|
动态装载: VAR 处理:Thandle;
|
处理:= LoadLibrary的( “lib.dll' );
|
如果 处理<> 0 则
|
开始
|
{的doSomething}
|
FreeLibrary则(句柄);
|
结束 ;
|
◇[DELPHI]指针变量和地址
|
VAR X,Y: 整数 ,P:^ 整数 ; / /指向整数变量的指针
|
X:= 10 ; / /变量赋值
|
P:= @ X; / /变量x的地址
|
Y:= P ^; / /为Ÿ赋值指针P
|
@ @ 程序 / /返回过程变量的内存地址
|
◇[DELPHI]判断字符是汉字的一个字符
|
ByteType( “ 你好哈哈吗' , 1 )= mbLeadByte / /是第一个字符
|
ByteType( “ 你好哈哈吗' , 2 )= mbTrailByte / /是第二个字符
|
ByteType( “ 你好哈哈吗' , 5 )= mbSingleByte / /不是中文字符
|
◇[DELPHI]备忘录的定位操作
|
memo1 。 线 。 删除( 0 ) / /删除第1行
|
memo1 。 SelStart的:= 10 / /定位10字节处
|
◇[DELPHI]获得双字节字符内码
|
功能 getit(S: 字符串 ): 整数 ;
|
开始
|
结果:= 字节 (S [ 1 ])* 百美元 + 字节 (S [ 2 ]);
|
结束 ;
|
使用:getit( “ 计” ) / / $ bcc6即十进制48326
|
◇[DELPHI]调用地址数据存储过程
|
存储过程如下:
|
创建 过程 addrecord(
|
RECORD1 VARCHAR( 10 )
|
RECORD2 VARCHAR( 20 )
|
)
|
作为
|
开始
|
插入到表名(field1,field2欲)值(:RECORD1:RECORD2)
|
年底
|
执行存储过程:
|
EXECUTE 程序 addrecord(“urrecord1”,“urrecord2”)
|
◇[DELPHI]将文件存到BLOB字段中
|
功能 blobcontenttostring( 常量 名: 字符串 ): 字符串 ;
|
开始
|
与 tfilestream 。 创建(文件名 ,fmopenread) 做
|
试试
|
中用SetLength(结果,大小);
|
阅读( 指针 (结果)^,大小);
|
最终
|
免费;
|
结束 ;
|
结束 ;
|
/ /保存字段
|
开始
|
如果 (opendialog1 。 执行) ,然后
|
开始
|
sFileName:= OpenDialog1 。 文件名;
|
adotable1 。 编辑;
|
adotable1 。 fieldbyname( “Visio的” 。)asstring:= Blobcontenttostring(文件名 );
|
adotable1 。 职务;
|
结束 ;
|
◇[DELPHI]把文件全部复制到剪贴板
|
使用 shlobj,ACTIVEX,clipbrd;
|
程序 Tform1 。 copytoclipbrd( VAR 文件名 : 字符串 );
|
VAR
|
FE:TFormatEtc;
|
中等:TStgMedium;
|
dropfiles:PDropFiles;
|
PFILE: PChar类型 ;
|
开始
|
FE 。 cfFormat:= CF_HDROP;
|
FE 。 dwAspect:= DVASPECT_CONTENT;
|
FE 。 tymed:= TYMED_HGLOBAL;
|
中 。 HGLOBAL:=的GlobalAlloc(GMEM_SHARE 或 GMEM_ZEROINIT,一下SizeOf(TDropFiles)+长度(文件名 )+ 1 );
|
如果 中等 。 HGLOBAL <> 0 ,然后 开始
|
中 。 tymed:= TYMED_HGLOBAL;
|
dropfiles:= GlobalLock(中等 。 HGLOBAL);
|
试试
|
。dropfiles ^ PFILES:=一下SizeOf(TDropFiles);
|
dropfiles ^ fwide:= 假 ;
|
longint (PFILE):= longint (dropfiles)+一下SizeOf(TDropFiles);
|
StrPCopy(PFILE,文件名);
|
公司(PFILE,长度(文件名 )+ 1 );
|
PFILE ^:=# 0 ;
|
最终
|
GlobalUnlock(中等 。 HGLOBAL);
|
结束 ;
|
剪贴板 。 SetAsHandle(CF_HDROP,中等 。 HGLOBAL);
|
结束 ;
|
结束 ;
|
◇[DELPHI]列举当前系统运行进程
|
使用 TLHelp32;
|
程序 TForm1 。 Button1Click(发件人:TObject的);
|
VAR lppe:TProcessEntry32;
|
发现: 布尔 ;
|
手:THandle;
|
开始
|
手:= CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0 );
|
发现:= Process32First(手,lppe);
|
同时 发现 做
|
开始
|
ListBox1中 。 项 。 添加(StrPas(lppe 。 szExeFile));
|
发现:= Process32Next(手,lppe);
|
结束 ;
|
结束 ;
|
◇[DELPHI]根据BDETable1建立新表表2
|
表2:= TTable 。 创建( 零 );
|
试试
|
表2 。 数据库名:=表1 。 数据库名;
|
表2 。 FieldDefs 。 分配(表1 。 FieldDefs);
|
表2 。 IndexDefs 。 分配(表1 。 IndexDefs);
|
表2 , 表名:= 'NEW_TABLE“ ;
|
表2 。 CreateTable();
|
最终
|
表2 , 免费();
|
结束 ;
|
◇[DELPHI]最菜理解DLL建立和引用
|
/ /先看DLL源(文件 - >新建 - > DLL)
|
库 Project1的;
|
使用
|
SysUtils中声明,类;
|
功能 addit(F: 整数 ,S: 整数 ): 整数 ;出口;
|
开始
|
makeasum:= F + S;
|
结束 ;
|
出口
|
addit;
|
结束 。
|
/ /调用(IN UR PROJECT)
|
实施
|
功能 addit(F: 整数 ,S: 整数 ): 整数 ;远;外部 'Project1的“ ; / /申明
|
{调用就是addit(2,4),结果显示6}
|
◇[DELPHI]动态读取程序自身大小
|
功能 GesSelfSize: 整数 ;
|
VAR
|
F: 文件 的 字节 ;
|
开始
|
filemode:= 0 ;
|
assignfile(F,应用 。 exename);
|
复位(F);
|
结果:=文件大小(F) / /单位是字节
|
closefile(F);
|
结束 ;
|
◇[DELPHI]读取BIOS信息
|
与 Memo1 。 行 不
|
开始
|
新增( “MainBoardBiosName:” + ^ I + 字符串 ( PCHAR (PTR( $ FE061 ))));
|
新增( “MainBoardBiosCopyRight:” + ^ I + 字符串 ( PCHAR (PTR( $ FE091 ))));
|
新增( “MainBoardBiosDate:” + ^ I + 字符串 ( PCHAR (PTR( $ FFFF5 ))));
|
新增( “MainBoardBiosSerialNo:” + ^ I + 字符串 ( PCHAR (PTR( $ FEC71 ))));
|
结束 ;
|
◇[DELPHI]动态建立MSSQL别名
|
程序 TForm1 。 Button1Click(发件人:TObject的);
|
VAR 我清单:TStringList;
|
开始
|
我清单:= TStringList 。 创建;
|
试试
|
与 我清单 做
|
开始
|
添加( “SERVER NAME = 210.242.86.2” );
|
添加( “数据库名称= DB' );
|
添加( “USER NAME = SA' );
|
结束 ;
|
会议1 。 AddAlias( “TESTSQL” , “MSSQL” , 我清单); / /ミMSSQL
|
会议1 。 SaveConfigFile;
|
最终
|
我清单 , 免费;
|
会议1 。 活动:= 真 ;
|
数据库1 。 数据库名:= 'DB' ;
|
数据库1 。 AliasName:= 'TESTSQL“ ;
|
数据库1 。 的LoginPrompt:= 假 ;
|
数据库1 。 PARAMS 。 添加( “USER NAME = SA' );
|
数据库1 。 PARAMS 。 添加( “PASSWORD =' );
|
数据库1 。 连接:= 真 ;
|
结束 ;
|
结束 ;
|
程序 TForm1 。 Button2Click(发件人:TObject的);
|
开始
|
数据库1 。 连接:= 假 ;
|
会议1 。 DeleteAlias( “TESTSQL' );
|
结束 ;
|
◇[DELPHI]播放背景音乐
|
使用 mmsystem
|
/ /播放音乐
|
MCISendString( “OPEN E:/ 1.MID型SEQUENCER ALIAS NN' , '' , 0 , 0 );
|
MCISendString( “PLAY NN 0' , '' , 0 , 0 );
|
MCISendString( “ 关闭动画' , '' , 0 , 0 );
|
结束 ;
|
/ /停止播放
|
MCISendString( “OPEN E:/ 1.MID型SEQUENCER ALIAS NN' , '' , 0 , 0 );
|
MCISendString( “STOP NN' , '' , 0 , 0 );
|
MCISendString( “ 关闭动画' , '' , 0 , 0 );
|
◇[DELPHI]接口和类的一个范例代码
|
键入 {接口和类申明:区别在于不能在接口中申明数据成员,任何非公有的方法,公共方法不使用公共关键字}
|
Isample = 接口 / /定义Isample接口
|
功能 的GetString: 字符串 ;
|
结束 ;
|
Tsample = 类 (TInterfacedObject,Isample)
|
市民
|
功能 的GetString: 字符串 ;
|
结束 ;
|
/ /函数定义
|
功能 Tsample 。 GetString的: 字符串 ;
|
开始
|
结果:= “什么节目是” ;
|
结束 ;
|
/ /调用类对象
|
VAR 样本:Tsample;
|
开始
|
示例:= Tsample 。 创建;
|
showmessage(样品 。 GetString的+ “类的对象!” );
|
样品 。 自由;
|
结束 ;
|
/ /调用接口
|
VAR sampleinterface:Isample;
|
示例:Tsample;
|
开始
|
示例:= Tsample 。 创建;
|
sampleInterface:=样品; / /接口的实现必须使用类
|
{以上两行也可表达成sampleInterface:= Tsample.create;}
|
showmessage(sampleInterface 。 GetString的+ “接口!” );
|
/ / sample.free; {和局部类不同,接口中的类自动释放}
|
sampleInterface:= 零 ; {释放接口对象}
|
结束 ;
|
◇[DELPHI]任务条就看不当程序
|
VAR
|
ExtendedStyle: 整数 ;
|
开始
|
应用 。 初始化;
|
ExtendedStyle:= GetWindowLong(应用程序 。 手柄,GWL_EXSTYLE);
|
SetWindowLong函数(应用程序 。 手柄,GWL_EXSTYLE,ExtendedStyle 或 WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);
|
应用 。 CreateForm(TForm1,Form1中);
|
应用 。 运行;
|
结束 。
|
◇[DELPHI] ALT + CTRL + DEL看不到程序
|
在 实施 后添加声明:
|
函数 RegisterServiceProcess(dwProcessId和,dwType: 整数 ): 整数 ; STDCALL;外部 “KERNEL32.DLL” ;
|
RegisterServiceProcess(GetCurrentProcessID, 1 ); / /隐藏
|
RegisterServiceProcess(GetCurrentProcessID, 0 ); / /显示
|
◇[DELPHI]检测光驱符号
|
VAR 驱动器: 字符 ;
|
cdromID: 整数 ;
|
开始
|
为 驱动器:= 'D' 到 'Z' 做
|
开始
|
cdromID:= GetDriveType( PChar类型 (驱动器+':/'));
|
如果 cdromID = 5 然后 showmessage( '你的光驱为:“ +驱动器+ '!盘“ );
|
结束 ;
|
结束 ;
|
◇[DELPHI]检测声卡
|
如果 auxGetNumDevs()<= 0 则 showmessage( '没有声卡找到!“ ) 其他 showmessage( “ 任何声卡找到!” );
|
◇[DELPHI]在字符串网格中画图
|
StringGrid 。 OnDrawCell事件
|
与 StringGrid1 。 帆布 做
|
画(矩形 , 左,矩形 , 顶,Image1的 。 图片 。 图形);
|
◇[SQL SERVER] SQL中代替像语句的另一种写法
|
比如查找用户名包含有“C”的所有用户,可以用
|
使用MyDatabase的
|
从表1中选择其中username LIKE'%C%*“
|
下面是完成上面功能的另一种写法:
|
使用MyDatabase的
|
从表1中选择其中CHARINDEX(* 'C' , 用户名)> 0
|
这种方法理论上比上一种方法多了一个判断语句,即> 0 ,但这个判断过程是最快的,我想信 80 %以上的运算都是花在查找字
|
符串及其它的运算上,所以运用CHARINDEX函数也没什么大不了。用这种方法也有好处,那就是对%,|等在不能直接用像
|
查找到的字符中可以直接在这CHARINDEX中运用,如下:
|
使用MyDatabase的
|
从表1中选择其中CHARINDEX(* '%' ,用户名)> 0
|
也可以写成:
|
使用MyDatabase的
|
从表1中选择其中CHARINDEX(* 字符 ( 37 ),用户名)> 0
|
ASCII的字符即为%
|
◇[DELPHI] SQL显示多数据库/表
|
SELECT DISTINCT一个 。 边壕,一 , 兴明,B , 从“建杰公子 。 DBF“的,”公子 。 DBF“B
|
其中A , 边壕= B 。 边壕
|
◇[DELPHI] RFC(请求 对于 评论)相关
|
IETF(互联网工程任务组)维护RFC文档HTTP: / / www.ietf.cnri.reston.va.us/
|
RFC882:报文头标结构
|
RFC1521:MIME第一部分,传输报文方法
|
RFC1945:多媒体文档传输文档
|
◇[DELPHI] TNMUUProcessor的使用
|
VAR inStream中,outStream:TFileStream;
|
开始
|
inStream中:= TFileStream 。 创建(INFILE 。 TXT,fmOpenRead);
|
outStream:= TFileStream(OUTFILE 。 TXT,fmCreate);
|
NMUUE 。 方法:= uuCode; {UUENCODE /解码}
|
/ / NMUUE.Method:= uuMIME;} {MIME
|
NMUUE 。 InputStream中:=河道;
|
NMUUE 。 OutputStream的:= OutStream;
|
NMUUE 。 编码; } {编码处理
|
/ / NMUUE.Decode;} {解码处理
|
inStream中 。 自由;
|
outStream 。 自由;
|
结束 ;
|
◇[DELPHI] TFileStream的操作
|
/ /从文件流当前位置读计数字节到缓冲区BUFFER
|
函数 读取( VAR 缓冲区;数: longint ): longint ;覆盖;
|
/ /将缓冲区BUFFER读到文件流中
|
函数 写 ( 常量 缓冲区;数: longint ): longint ;覆盖;
|
/ /设置文件流当前读写指针为OFFSET
|
函数 求(偏移: longint ;来源: 字 ): longint ;覆盖;
|
来源= {soFromBeginning,soFromCurrent,soFromEnd}
|
/ /从另一文件流中当前位置复制COUNT到当前文件流当前位置
|
功能 copyfrom(来源:TStream;数: longint ): longint ;
|
/ /读指定文件到文件流
|
VAR myFStream:TFileStream;
|
开始
|
myFStream:= TFileStream 。 创建(OpenDialog1 。 文件名 ,fmOpenRead);
|
结束 ;
|
[JavaScript的]检测是否安装IE插件和QuickTime的冲击波
|
VAR myPlugin =航海家 。 插件[“冲击波”;
|
如果 (myPlugin)
|
文件 。 writeln (“你已经安装了冲击波!”)
|
其他
|
文件 。 writeln (“你尚未安装冲击波!”)
|
VAR myPlugin =航海家 。 插件[“QuickTime的”];
|
如果 (myPlugin)
|
文件 。 writeln (“你已经安装了QuickTime的!”)
|
其他
|
文件 。 writeln (“你尚未安装QuickTime的!”)
|
/ / Delphi的控件数组的简易实现
|
程序 TForm1 。 Edit1Enter(发件人:TObject的);
|
开始
|
(发件人 作为 。TEDIT)颜色:= ClInfo;
|
文件 : / /改变编辑获得焦点时的背景颜色为黄色
|
结束 ;
|
程序 TForm1 。 Edit1Exit(发件人:TObject的);
|
开始
|
(发件人 作为 。TEDIT)颜色:= ClWhite;
|
文件 : / /改变编辑失去焦点时的背景颜色为白色
|
结束 ;
|
文件 : / /设置窗体中所有的编辑背景颜色为ClLime
|
程序 TForm1 。 Button1的(发件人:TObject的);
|
VAR
|
指数: 整数 ;
|
开始
|
对于 指数:= 0 至 ControlCount - 1 做
|
开始
|
如果 组件[索引] 是 TEDIT 然后
|
开始
|
(组件[索引] 作为 。TEDIT)颜色:= ClLime;
|
年底
|
delphi技巧总结收集相关推荐
- 原生态纯JavaScript 100大技巧大收集---你值得拥有
原生态纯JavaScript 100大技巧大收集---你值得拥有 1.原生JavaScript实现字符串长度截取 function cutstr(str, len) {var temp;var ico ...
- 原生态纯JavaScript 100大技巧大收集
来自:http://yonghu.blog.51cto.com/8166136/1346946 1.原生JavaScript实现字符串长度截取 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
- DevExpress VCL for Delphi 各版本收集下载(最新支持Delphi 10.3.3 RIO)
点此下载 最新更新: DevExpress VCL 18.1.6 Full Sources 下载包含以下内容: DevExpress VCL for Delphi 帮助文档,CHM格式: DevExp ...
- Joomla 模板常用技巧函数收集
在 平时开发 Joomla 模板的时候收集了一些极为常见也非常有用的函数,现列出来方便制作 Joomla 模板时查阅,具体内容将不断更新,需要注意的是该页代码在模板中使用时均需嵌套在 <?php ...
- 101个Google技巧终极收集
可能我们用了很久Google都还不知道我们一直在被那个只有十多个链接的Google首页欺骗了,Google那个简单的输入框下还隐藏了多少秘密呢?让这101个Google搜索技巧提示你,或许它可以帮助你 ...
- DevExpress VCL for Delphi 各版本收集下载(最新支持Delphi XE 7)
DevExpress VCL for Delphi 帮助文档,CHM格式: http://maxwoods.400gb.com/u/758954/6239515 DevExpress VCL 5.7: ...
- DevExpress VCL for Delphi 各版本收集下载
更多VCL组件请到:http://maxwoods.400gb.com/u/758954/1974711 DevExpress VCL 5.7:http://www.ctdisk.com/file/7 ...
- delphi res 使用
一.引子: 现在的Windows应用程序几乎都使用图标.图片.光标.声音等,我们称它们为资源(Resource).最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便程序需要的时候调 ...
- Delphi编程中资源文件的应用
Delphi编程中资源文件的应用 2008-02-03 14:08Dephi中资源文件的应用 /转自 http://chamlly.spaces.live.com/blog/cns!548f73d87 ...
- *,vol.Delphi.Setup.Hash.MD5
; ; Created by AccuHash 2.0 (http://www.accuhash.com) ; 90edfa2397c70aa543d992d18341cd32 *1一键GHOST硬盘 ...
最新文章
- C语言实现RC4序列密码
- 填写各类表格时有时在多个选择前有小方框 在其中打勾
- 教务处管理系统c语言编程,基于C语言的教务管理系统的设计
- linux备份文件到ftp上,Linux服务器下用FTP上传下载备份文件
- VS2015 新Web项目(C#6)出现CS1617错误的解决
- 微软Surface Pro 8曝光:搭载第11代酷睿处理器和Win11系统
- linux device attr,DEVICE_ATTR的使用
- MySQL8.0.12 EXPLAIN EXTENDED 报错问题
- mybatis自定义插件
- 化学堵水剂处理油井出水问题
- echarts地图插入图片
- 分析TVS管数字移动电路中的设计与应用
- php扑克牌随机发,PHP实现随机发放扑克牌
- 用Acrobat打印小册子
- 数据防泄密工作企业该如何开展
- 北航2012年软件工程硕士自主招生简章
- 求助!!!pycharm第一次安装后启动时报错怎么解决
- 使用BIOS进行键盘输入和磁盘读写
- NPOI导出数据,设置格式,锁定单元格
- Amdahl(阿姆达尔定律) Law
热门文章
- swiper 切换时间_改变Swiper切换和animate.js动画的时间曲线
- 为什么电子计算机奏出美妙的交响,《延安,我把你追寻》教学设计
- 如何在旋转屏幕后不再重建Activity
- 计算机专业保研英语自我介绍,计算机保研面试英文自我介绍.doc
- ORACLE RAC 11.2.0.4 一节点出现Suspending MMON slave action kewrmrfsa_ for 82800 seconds
- 讲台计算机的英语怎么读,讲台的英语单词怎么写,英语怎么拼写!
- iOS开发百度导航SDK的使用入门
- chromium下载编译过程
- 部门年终总结会议有必要开吗?
- 第一次团队作业——团队选题报告