编程论坛's Archiver

xu2000 发表于 2006-10-12 22:43

[转载]先人的DELPHI基础开发技巧

<P>[DELPHI]网络邻居复制文件<br>uses shellapi;<br>copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);</P>
<P>◇[DELPHI]产生鼠标拖动效果<br>通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABEL:<br>var xpanel,ypanel,xlabel,ylabel:integer;<br>PANEL的MouseMove事件:xpanel:=x;ypanel:=y;<br>PANEL的DragOver事件:xpanel:=x;ypanel:=y;<br>LABEL的MouseMove事件:xlabel:=x;ylabel:=y;<br>LABEL的EndDrag事件:label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;</P>
<P>◇[DELPHI]取得WINDOWS目录<br>uses shellapi;<br>var windir:array[0..255] of char;<br>getwindowsdirectory(windir,sizeof(windir));<br>或者从注册表中读取,位置:<br>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion<br>SystemRoot键,取得如:C:\WINDOWS</P>
<P>◇[DELPHI]在form或其他容器上画线<br>var x,y:array [0..50] of integer;<br>canvas.pen.color:=clred;<br>canvas.pen.style:=psDash;<br>form1.canvas.moveto(trunc(x[i]),trunc(y[i]));<br>form1.canvas.lineto(trunc(x[j]),trunc(y[j]));</P>
<P>◇[DELPHI]字符串列表使用<br>var tips:tstringlist;<br>tips:=tstringlist.create;<br>tips.loadfromfile('filename.txt');<br>edit1.text:=tips[0];<br>tips.add('last line addition string');<br>tips.insert(1,'insert string at NO 2 line');<br>tips.savetofile('newfile.txt');<br>tips.free;</P>
<P>◇[DELPHI]简单的剪贴板操作<br>richedit1.selectall;<br>richedit1.copytoclipboard;<br>richedit1.cuttoclipboard;<br>edit1.pastefromclipboard;</P>
<P>◇[DELPHI]关于文件、目录操作<br>Chdir('c:\abcdir');转到目录<br>Mkdir('dirname');建立目录<br>Rmdir('dirname');删除目录<br>GetCurrentDir;//取当前目录名,无'\'<br>Getdir(0,s);//取工作目录名s:='c:\abcdir';<br>Deletfile('abc.txt');//删除文件<br>Renamefile('old.txt','new.txt');//文件更名<br>ExtractFilename(filelistbox1.filename);//取文件名<br>ExtractFileExt(filelistbox1.filename);//取文件后缀</P>
<P>◇[DELPHI]处理文件属性<br>attr:=filegetattr(filelistbox1.filename);<br>if (attr and faReadonly)=faReadonly then ... //只读<br>if (attr and faSysfile)=faSysfile then ... //系统<br>if (attr and faArchive)=faArchive then ... //存档<br>if (attr and faHidden)=faHidden then ... //隐藏</P>
<P>◇[DELPHI]执行程序外文件<br>WINEXEC//调用可执行文件<br>winexec('command.com /c copy *.* c:\',SW_Normal);<br>winexec('start abc.txt');<br>ShellExecute或ShellExecuteEx//启动文件关联程序<br>function executefile(const filename,params,defaultDir:string;showCmd:integer):THandle;<br>ExecuteFile('C:\abc\a.txt','x.abc','c:\abc\',0);<br>ExecuteFile('http://tingweb.yeah.net','','',0);<br>ExecuteFile('mailto:tingweb@wx88.net','','',0);</P>
<P>◇[DELPHI]取得系统运行的进程名<br>var hCurrentWindow:HWnd;szText:array[0..254] of char;<br>begin<br>hCurrentWindow:=Getwindow(handle,GW_HWndFrist);<br>while hCurrentWindow &lt;&gt; 0 do<br>begin<br>if Getwindowtext(hcurrnetwindow,@sztext,255)&gt;0 then listbox1.items.add(strpas(@sztext));<br>hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);<br>end;<br>end;<br><br>◇[DELPHI]关于汇编的嵌入<br>Asm End;<br>可以任意修改EAX、ECX、EDX;不能修改ESI、EDI、ESP、EBP、EBX。<br><br>◇[DELPHI]关于类型转换函数<br>FloatToStr//浮点转字符串<br>FloatToStrF//带格式的浮点转字符串<br>IntToHex//整数转16进制<br>TimeToStr<br>DateToStr<br>DateTimeToStr<br>FmtStr//按指定格式输出字符串<br>formatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);<br><br>◇[DELPHI]字符串的过程和函数 <br>Insert(obj,target,pos);//字符串target插入在pos的位置。如插入结果大于target最大长度,多出字符将被截掉。如Pos在255以外,会产生运行错。例如,st:='Brian',则Insert('OK',st,2)会使st变为'BrOKian'。 <br>Delete(st,pos,Num);//从st串中的pos(整型)位置开始删去个数为Num(整型)个字符的子字串。例如,st:='Brian',则Delete(st,3,2)将变为Brn。 <br>Str(value,st);//将数值value(整型或实型)转换成字符串放在st中。例如,a=2.5E4时,则str(a:10,st)将使st的值为' 25000'。 <br>Val(st,var,code);//把字符串表达式st转换为对应整型或实型数值,存放在var中。St必须是一个表示数值的字符串,并符合数值常数的规则。在转换过程中,如果没有检测出错误,变量code置为0,否则置为第一个出错字符的位置。例如,st:=25.4E3,x是一个实型变量,则val(st,x,code)将使X值为25400,code值为0。 <br>Copy(st.pos.num);//返回st串中一个位置pos(整型)处开始的,含有num(整型)个字符的子串。如果pos大于st字符串的长度,那就会返回一个空串,如果pos在255以外,会引起运行错误。例如,st:='Brian',则Copy(st,2,2)返回'ri'。 <br>Concat(st1,st2,st3……,stn);//把所有自变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果的长度255,将产生运行错误。例如,st1:='Brian',st2:=' ',st3:='Wilfred',则Concat(st1,st2,st3)返回'Brian Wilfred'。 <br>Length(st);//返回字符串表达式st的长度。例如,st:='Brian',则Length(st)返回值为5。 <br>Pos(obj,target);//返回字符串obj在目标字符串target的第一次出现的位置,如果target没有匹配的串,Pos函数的返回值为0。例如,target:='Brian Wilfred',则Pos('Wil',target)的返回值是7,Pos('hurbet',target)的返回值是0。 <br><br>◇[DELPHI]关于处理注册表<br>uses Registry;<br>var reg:Tregistry;<br>reg:=Tregistry.create;<br>reg.rootkey:='HKey_Current_User';<br>reg.openkey('Control Panel\Desktop',false);<br>reg.WriteString('Title Wallpaper','0');<br>reg.writeString('Wallpaper',filelistbox1.filename);<br>reg.closereg;<br>reg.free;<br><br>◇[DELPHI]关于键盘常量名<br>VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE<br>/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN<br>F1--F12:$70(112)--$7B(123)<br>A-Z:$41(65)--$5A(90)<br>0-9:$30(48)--$39(57)<br>◇[DELPHI]初步判断程序母语<br>DELPHI软件的DOS提示:This Program Must Be Run Under Win32.<br>VC++软件的DOS提示:This Program Cannot Be Run In DOS Mode.<br><br>◇[DELPHI]操作Cookie<br>response.cookies("name").domain:='http://www.086net.com';<br>with response.cookies.add do<br>begin<br>name:='username';<br>value:='username';<br>end<br></P>
[align=right][color=#000066][此贴子已经被作者于2006-10-12 22:49:44编辑过][/color][/align]

xu2000 发表于 2006-10-12 22:52

◇[DELPHI]增加到文档菜单连接<BR>uses shellapi,shlOBJ;<BR>shAddToRecentDocs(shArd_path,pchar(filepath));//增加连接<BR>shAddToRecentDocs(shArd_path,nil);//清空<BR><BR>◇[杂类]备份智能ABC输入法词库<BR>windows\system\user.rem<BR>windows\system\tmmr.rem<BR><BR>◇[DELPHI]判断鼠标按键<BR>if GetAsyncKeyState(VK_LButton)&lt;&gt;0 then ... //左键<BR>if GetAsyncKeyState(VK_MButton)&lt;&gt;0 then ... //中键<BR>if GetAsyncKeyState(VK_RButton)&lt;&gt;0 then ... //右键<BR><BR>◇[DELPHI]设置窗体的最大显示<BR>onformCreate事件<BR>self.width:=screen.width;<BR>self.height:=screen.height;<BR>◇[杂类]隐藏共享文件夹<BR>共享效果:可访问,但不可见(在资源管理、网络邻居中)<BR>取共享名为:direction$<BR>访问://computer/dirction/<BR><BR>◇[Java Script]Java Script网页常用效果<BR>网页60秒定时关闭<BR>&lt;script language="java script"&gt;&lt;!--<BR>settimeout('window.close();',60000)<BR>--&gt;&lt;/script&gt;<BR>关闭窗口<BR>&lt;a href="/" onclick="javascript:window.close();return false;"&gt;关闭&lt;/a&gt;<BR>定时转URL<BR>&lt;meta http-equiv="refresh" content="40;url=http://www.086net.com"&gt;<BR>设为首页<BR>&lt;a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#"&gt;设为首页&lt;/a&gt;<BR>收藏本站<BR>&lt;a href="javascript:window.external.addfavorite('http://086net.com','[未名码头]')"&gt;收藏本站&lt;/a&gt;<BR>加入频道<BR>&lt;a href="javascript:window.external.addchannel('http://086net.com')"&gt;加入频道&lt;/a&gt;<BR><BR>◇[DELPHI]文本编辑相关<BR>checkbox1.checked:=not checkbox1.checked;<BR>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//粗体<BR>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//斜体<BR>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//下划线<BR>memo1.alignment:=taLeftJustify;//居左<BR>memo1.alignment:=taRightJustify;//居右<BR>memo1.alignment:=taCenter;//居中<BR><BR>◇[DELPHI]随机产生文本色<BR>randomize;//随机种子<BR>memo1.font.color:=rgb(random(255),random(255),random(255));<BR><BR>◇[DELPHI]DELPHI5 UPDATE升级补丁序列号<BR>1000003185<BR>90X25fx0<BR><BR>◇[DELPHI]文件名的非法字符过滤<BR>for i:=1 to length(s) do<BR>if s[i] in ['\','/',':','*','?','&lt;','&gt;','|'] then<BR><BR>◇[DELPHI]转换函数的定义及说明 <BR>datetimetofiledate (datetime:Tdatetime):longint; 将Tdatetime格式的日期时间值转换成DOS格式的日期时间值 <BR>datetimetostr (datetime:Tdatetime):string; 将Tdatatime格式变量转换成字符串,如果datetime参数不包含日期值,返回字符串日期显示成为00/00/00,如果datetime参数中没有时间值,返回字符串中的时间部分显示成为00:00:00 AM <BR>datetimetostring (var result string;<BR>const format:string;<BR>datetime:Tdatetime); 根据给定的格式字符串转换时间和日期值,result为结果字符串,format为转换格式字符串,datetime为日期时间值 <BR>datetostr (date:Tdatetime) 使用shortdateformat全局变量定义的格式字符串将date参数转换成对应的字符串 <BR>floattodecimal (var result:Tfloatrec;value:<BR>extended;precision,decimals:<BR>integer); 将浮点数转换成十进制表示 <BR>floattostr (value:extended):string 将浮点数value转换成字符串格式,该转换使用普通数字格式,转换的有效位数为15位。 <BR>floattotext (buffer:pchar;value:extended;<BR>format:Tfloatformat;precision,<BR>digits:integer):integer; 用给定的格式、精度和小数将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数,buffer是非0结果的字符串缓冲区。 <BR>floattotextfmt (buffer:pchar;value:extended;<BR>format:pchar):integer 用给定的格式将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数。 <BR>inttohex (value:longint;digits:integer):<BR>string; 将给定的数值value转换成十六进制的字符串。参数digits给出转换结果字符串包含的数字位数。 <BR>inttostr (value:longint):string 将整数转换成十进制形式字符串 <BR>strtodate (const S:string):Tdatetime 将字符串转换成日期值,S必须包含一个合法的格式日期的字符串。 <BR>strtodatetime (const S:string):Tdatetime 将字符串S转换成日期时间格式,S必须具有MM/DD/YY HH:MM:SS[AM|PM]格式,其中日期和时间分隔符与系统时期时间常量设置相关。如果没有指定AM或PM信息,表示使用24小时制。 <BR>strtofloat (const S:string):extended; 将给定的字符串转换成浮点数,字符串具有如下格式:<BR>[+|-]nnn…[.]nnn…[&lt;+|-&gt;&lt;E|e&gt;&lt;+|-&gt;nnnn] <BR>strtoint (const S:string):longint 将数字字符串转换成整数,字符串可以是十进制或十六进制格式,如果字符串不是一个合法的数字字符串,系统发生ECONVERTERROR异常 <BR>strtointdef (const S:string;default:<BR>longint):longint; 将字符串S转换成数字,如果不能将S转换成数字,strtointdef函数返回参数default的值。 <BR>strtotime (const S:string):Tdatetime 将字符串S转换成TDATETIME值,S具有HH:MM:SS[AM|PM]格式,实际的格式与系统的时间相关的全局变量有关。 <BR>timetostr (time:Tdatetime):string; 将参数TIME转换成字符串。转换结果字符串的格式与系统的时间相关常量的设置有关。 <BR><BR>◇[DELPHI]程序不出现在ALT+CTRL+DEL<BR>在implementation后添加声明:<BR>function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';<BR>RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏<BR>RegisterServiceProcess(GetCurrentProcessID, 0);//显示<BR>用ALT+DEL+CTRL看不见<BR><BR>◇[DELPHI]程序不出现在任务栏<BR>uses windows<BR>var<BR>Extendedstyle : Integer;<BR>begin<BR>Application.Initialize;<BR>//============================================================== <BR>Extendedstyle := GetWindowLong (Application.Handle, GWL_EXstyle);<BR>SetWindowLong(Application.Handle, GWL_EXstyle, Extendedstyle OR WS_EX_TOOLWINDOW<BR>AND NOT WS_EX_APPWINDOW);<BR>//=============================================================== <BR>Application.Createform(Tform1, form1);<BR>Application.Run;<BR>end. <BR><BR>◇[DELPHI]如何判断拨号网络是开还是关<BR>if GetSystemMetrics(SM_NETWORK) AND $01 = $01 then <BR>showmessage('在线!')<BR>else showmessage('不在线!');<BR><BR>◇[DELPHI]实现IP到域名的转换<BR>function GetDomainName(Ip:string):string;<BR>var <BR>pH:PHostent;<BR>data:twsadata;<BR>ii:dword;<BR>begin<BR>WSAStartup($101, Data);<BR>ii:=inet_addr(pchar(ip));<BR>pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);<BR>if (ph&lt;&gt;nil) then<BR>result:=pH.h_name<BR>else <BR>result:='';<BR>WSACleanup;<BR>end;<BR><BR>◇[DELPHI]处理“右键菜单”方法<BR>var<BR>reg: TRegistry;<BR>begin<BR>reg := TRegistry.Create;<BR>reg.RootKey:=HKEY_CLASSES_ROOT;<BR>reg.OpenKey('*\shell\check\command', true);<BR>reg.WriteString('', '"' + application.ExeName + '" "%1"');<BR>reg.CloseKey;<BR>reg.OpenKey('*\shell\diary', false);<BR>reg.WriteString('', '操作(&amp;C)');<BR>reg.CloseKey;<BR>reg.Free;<BR>showmessage('DONE!');<BR>end;<BR><BR>◇[DELPHI]发送虚拟键值ctrl V<BR>procedure sendpaste;<BR>begin<BR>keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);<BR>keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);<BR>keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);<BR>keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);<BR>end;<BR><BR>◇[DELPHI]当前的光驱的盘符 <BR>procedure getcdrom(var cd:char);<BR>var<BR>str:string;<BR>drivers:integer;<BR>driver:char;<BR>i,temp:integer;<BR>begin<BR>drivers:=getlogicaldrives;<BR>temp:=(1 and drivers);<BR>for i:=0 to 26 do<BR>begin<BR>if temp=1 then<BR>begin<BR>driver:=char(i+integer('a'));<BR>str:=driver+':';<BR>if getdrivetype(pchar(str))=drive_cdrom then<BR>begin<BR>cd:=driver;<BR>exit;<BR>end;<BR>end;<BR>drivers:=(drivers shr 1);<BR>temp:=(1 and drivers);<BR>end;<BR>end;<BR><BR>◇[DELPHI]字符的加密与解密 <BR>function cryptstr(const s:string; stype: dword):string;<BR>var<BR>i: integer;<BR>fkey: integer;<BR>begin<BR>result:='';<BR>case stype of<BR>0: setpass;<BR>begin<BR>randomize;<BR>fkey := random($ff);<BR>for i:=1 to length(s) do<BR>result := result+chr( ord(s[i]) xor i xor fkey);<BR>result := result + char(fkey);<BR>end;<BR>1: getpass<BR>begin<BR>fkey := ord(s[length(s)]);<BR>for i:=1 to length(s) - 1 do<BR>result := result+chr( ord(s[i]) xor i xor fkey);<BR>end;<BR>end;<BR><BR>□◇[DELPHI]向其他应用程序发送模拟键<BR>var<BR>h: THandle;<BR>begin<BR>h := FindWindow(nil, '应用程序标题');<BR>PostMessage(h, WM_KEYDOWN, VK_F9, 0);//发送F9键<BR>end;<BR><BR>□◇[DELPHI]DELPHI 支持的DAO数据格式<BR>td.Fields.Append(td.CreateField ('dbBoolean',dbBoolean,0));<BR>td.Fields.Append(td.CreateField ('dbByte',dbByte,0));<BR>td.Fields.Append(td.CreateField ('dbInteger',dbInteger,0));<BR>td.Fields.Append(td.CreateField ('dbLong',dbLong,0));<BR>td.Fields.Append(td.CreateField ('dbCurrency',dbCurrency,0));<BR>td.Fields.Append(td.CreateField ('dbSingle',dbSingle,0));<BR>td.Fields.Append(td.CreateField ('dbDouble',dbDouble,0));<BR>td.Fields.Append(td.CreateField ('dbDate',dbDate,0));<BR>td.Fields.Append(td.CreateField ('dbBinary',dbBinary,0));<BR>td.Fields.Append(td.CreateField ('dbText',dbText,0));<BR>td.Fields.Append(td.CreateField ('dbLongBinary',dbLongBinary,0));<BR>td.Fields.Append(td.CreateField ('dbMemo',dbMemo,0));<BR>td.Fields['ID'].Set_Attributes(dbAutoIncrField);//自增字段<BR><BR>

xu2000 发表于 2006-10-12 22:53

□◇[DELPHI]DELPHI配置MS SQL 7和BDE步骤<BR>第一步,配置ODBC: <BR>先在ODBC 中设数据源,安装过SQL Server7.0 后,ODBC中有一项"系统DSN"应该有两项<BR>数据源,一个是MQIS,一个是LocalSever,任选一个选后点击配置按钮,不知你的SQL7.0<BR>是不是安装在本地机器上,如果是的话直接进行下一步,如果不是,在服务器一栏中填上<BR>Server,然后进行下一步,填写登录ID 和密码(登录ID,和密码是在SQL7.0中的用户选项<BR>中设的)。<BR>第二步,配置BDE:<BR>打开Delphi的BDE,然后点击MQIS 或 LocalServer,就会提示用户名和密码,这和<BR>ODBC的用户名和密码是一样的,填上就行了。<BR>第三步,配置程序:<BR>如果用的是TTable,就在TTable的DatabaseName中选择MQIS 或LocalServer,然后在<BR>TableName中选择Sale就行了,然后将Active改为True,Delphi弹出提示对话,填入用户<BR>名和密码。<BR>如果用的是TQuery,在TQuery上点击右键,再击"SQL Builder",这是以界面方式配置<BR>SQL语句,或者在TQuery的SQL中填入SQL语句。最后,别忘了将Active改为True。<BR>在运行也可能配置TQuery,具体见Delphi帮助。<BR><BR>□◇[DELPHI]得到图像上某一点的RGB值<BR>procedure Tform1.Image1MouseDown(Sender: TObject; Button: TMouseButton;<BR>Shift: TShiftState; X, Y: Integer);<BR>var<BR>red,green,blue:byte ;<BR>i:integer;<BR>begin<BR>i:= image1.Canvas.Pixels[x,y];<BR>Blue:= GetBvalue(i);<BR>Green:= GetGvalue(i): <BR>Red:= GetRvalue(i); <BR>Label1.Caption:=inttostr(Red);<BR>Label2.Caption:=inttostr(Green);<BR>Label3.Caption:=inttostr(Blue);<BR>end;<BR><BR>□◇[DELPHI]关于日期格式分解转换<BR>var year,month,day:word;now2:Tdatatime;<BR>now2:=date();<BR>decodedate(now2,year,month,day);<BR>lable1.Text :=inttostr(year)+'年'+inttostr(month)+'月'+inttostr(day)+'日'; <BR><BR>◇[DELPHI]如何判断当前网络连接方式<BR>判断结果是MODEM、局域网或是代理服务器方式。<BR>uses wininet; <BR>Function ConnectionKind :boolean; <BR>var flags: dword; <BR>begin <BR>Result := InternetGetConnectedState(@flags, 0); <BR>if Result then <BR>begin <BR>if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then <BR>begin <BR>showmessage('Modem'); <BR>end; <BR>if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then <BR>begin <BR>showmessage('LAN'); <BR>end; <BR>if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then <BR>begin <BR>showmessage('Proxy'); <BR>end; <BR>if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then <BR>begin <BR>showmessage('Modem Busy'); <BR>end; <BR>end; <BR>end; <BR><BR>◇[DELPHI]如何判断字符串是否是有效EMAIL地址<BR>function IsEMail(EMail: String): Boolean; <BR>var s: String;ETpos: Integer; <BR>begin <BR>ETpos:= pos('@', EMail); <BR>if ETpos &gt; 1 then <BR>begin <BR>s:= copy(EMail,ETpos+1,Length(EMail)); <BR>if (pos('.', s) &gt; 1) and (pos('.', s) &lt; length(s)) then <BR>Result:= true else Result:= false; <BR>end <BR>else <BR>Result:= false; <BR>end; <BR><BR>◇[DELPHI]判断系统是否连接INTERNET<BR>需要引入URL.DLL中的InetIsOffline函数。 <BR>函数申明为:<BR>function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL'; <BR>然后就可以调用函数判断系统是否连接到INTERNET<BR>if InetIsOffline(0) then ShowMessage('not connected!') <BR>else ShowMessage('connected!'); <BR>该函数返回TRUE如果本地系统没有连接到INTERNET。<BR>附:<BR>大多数装有IE或OFFICE97的系统都有此DLL可供调用。<BR>InetIsOffline<BR>BOOL InetIsOffline(<BR>DWORD dwFlags, <BR>);<BR><BR>◇[DELPHI]简单地播放和暂停WAV文件<BR>uses mmsystem;<BR><BR>function PlayWav(const FileName: string): Boolean; <BR>begin <BR>Result := PlaySound(PChar(FileName), 0, SND_ASYNC); <BR>end; <BR><BR>procedure StopWav; <BR>var <BR>buffer: array[0..2] of char; <BR>begin <BR>buffer[0] := #0; <BR>PlaySound(Buffer, 0, SND_PURGE); <BR>end; <BR><BR>◇[DELPHI]取机器BIOS信息<BR>with Memo1.Lines do <BR>begin <BR>Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); <BR>Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); <BR>Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); <BR>Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); <BR>end; <BR><BR>◇[DELPHI]网络下载文件<BR>uses UrlMon;<BR><BR>function DownloadFile(Source, Dest: string): Boolean; <BR>begin <BR>try <BR>Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; <BR>except <BR>Result := False; <BR>end; <BR>end; <BR><BR>if DownloadFile('http://www.borland.com/delphi6.zip, 'c:\kylix.zip') then <BR>ShowMessage('Download succesful') <BR>else ShowMessage('Download unsuccesful') <BR><BR>◇[DELPHI]解析服务器IP地址<BR>uses winsock <BR><BR>function IPAddrToName(IPAddr : String): String; <BR>var <BR>SockAddrIn: TSockAddrIn; <BR>HostEnt: PHostEnt; <BR>WSAData: TWSAData; <BR>begin <BR>WSAStartup($101, WSAData); <BR>SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr)); <BR>HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); <BR>if HostEnt&lt;&gt;nil then result:=StrPas(Hostent^.h_name) else result:=''; <BR>end; <BR><BR>◇[DELPHI]取得快捷方式中的连接<BR>function ExeFromLink(const linkname: string): string; <BR>var <BR>FDir, <BR>FName, <BR>ExeName: PChar; <BR>z: integer; <BR>begin <BR>ExeName:= StrAlloc(MAX_PATH); <BR>FName:= StrAlloc(MAX_PATH); <BR>FDir:= StrAlloc(MAX_PATH); <BR>StrPCopy(FName, ExtractFileName(linkname)); <BR>StrPCopy(FDir, ExtractFilePath(linkname)); <BR>z:= FindExecutable(FName, FDir, ExeName); <BR>if z &gt; 32 then <BR>Result:= StrPas(ExeName) <BR>else <BR>Result:= ''; <BR>StrDispose(FDir); <BR>StrDispose(FName); <BR>StrDispose(ExeName); <BR>end; <BR><BR>◇[DELPHI]控制TCombobox的自动完成<BR>{'Sorted' property of the TCombobox to true } <BR>var lastKey: Word; //全局变量<BR>//TCombobox的OnChange事件 <BR>procedure Tform1.AutoCompleteChange(Sender: TObject); <BR>var <BR>SearchStr: string; <BR>retVal: integer; <BR>begin <BR>SearchStr := (Sender as TCombobox).Text; <BR>if lastKey &lt;&gt; VK_BACK then // backspace: VK_BACK or $08 <BR>begin <BR>retVal := (Sender as TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr))); <BR>if retVal &gt; CB_Err then <BR>begin <BR>(Sender as TCombobox).ItemIndex := retVal; <BR>(Sender as TCombobox).SelStart := Length(SearchStr); <BR>(Sender as TCombobox).SelLength := <BR>(Length((Sender as TCombobox).Text) - Length(SearchStr)); <BR>end; // retVal &gt; CB_Err <BR>end; // lastKey &lt;&gt; VK_BACK <BR>lastKey := 0; // reset lastKey <BR>end; <BR>//TCombobox的onKeyDown事件<BR>procedure Tform1.AutoCompleteKeyDown(Sender: TObject; var Key: Word; <BR>Shift: TShiftState); <BR>begin <BR>lastKey := Key; <BR>end; <BR><BR>◇[DELPHI]如何清空一个目录 <BR>function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :<BR>Boolean;<BR>var<BR>SearchRec : TSearchRec;<BR>Res : Integer;<BR>begin<BR>Result := False;<BR>TheDirectory := NormalDir(TheDirectory);<BR>Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);<BR>try<BR>while Res = 0 do<BR>begin<BR>if (SearchRec.Name &lt;&gt; '.') and (SearchRec.Name &lt;&gt; '..') then<BR>begin<BR>if ((SearchRec.Attr and faDirectory) &gt; 0) and Recursive<BR>then begin<BR>EmptyDirectory(TheDirectory + SearchRec.Name, True);<BR>RemoveDirectory(PChar(TheDirectory + SearchRec.Name));<BR>end<BR>else begin<BR>DeleteFile(PChar(TheDirectory + SearchRec.Name))<BR>end;<BR>end;<BR>Res := FindNext(SearchRec);<BR>end;<BR>Result := True;<BR>finally<BR>FindClose(SearchRec.FindHandle);<BR>end;<BR>end;<BR><BR>◇[DELPHI]如何计算一个目录的大小 <BR>function GetDirectorySize(const ADirectory: string): Integer;<BR>var<BR>Dir: TSearchRec;<BR>Ret: integer;<BR>Path: string;<BR>begin<BR>Result := 0;<BR>Path := ExtractFilePath(ADirectory);<BR>Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);<BR>if Ret &lt;&gt; NO_ERROR then exit;<BR>try<BR>while ret=NO_ERROR do<BR>begin<BR>inc(Result, Dir.Size);<BR>if (Dir.Attr in [faDirectory]) and (Dir.Name[1] &lt;&gt; '.') then<BR>Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));<BR>Ret := Sysutils.FindNext(Dir);<BR>end;<BR>finally<BR>Sysutils.FindClose(Dir);<BR>end;<BR>end;<BR><BR>◇[DELPHI]安装程序如何添加到Uninstall列表<BR>操作注册表,如下:<BR>1.在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall键下建立一个主键,名称任意。<BR>例HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyUninstall<BR>2.在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyUnistall下键两个串值,<BR>这两个串值的名称是特定的:DisplayName和UninstallString。<BR>3.给串DisplayName赋值为显示在“删除应用程序列表”中的名称,如'Aiming Uninstall one';<BR>给串UninstallString赋值为执行的删除命令,如 C:\WIN97\uninst.exe -f"C:\TestPro\aimTest.isu"<BR><BR>◇[DELPHI]截获WM_QUERYENDSESSION关机消息<BR>type<BR>Tform1 = class(Tform)<BR>procedure WMQueryEndSession(var <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT>: TWMQueryEndSession); <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>message</FONT> WM_QUERYENDSESSION;<BR>procedure CMEraseBkgnd(var <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT>:TWMEraseBkgnd);<FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT> WM_ERASEBKGND;<BR>private<BR>{ Private declarations }<BR>public<BR>{ Public declarations }<BR>end;<BR><BR>procedure Tform1.WMQueryEndSession(var <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT>: TWMQueryEndSession);<BR>begin<BR>Showmessage('computer is about to shut down');<BR>end;<BR><BR>◇[DELPHI]获取网上邻居<BR>procedure getnethood();//NT做服务器,WIN98上调试通过。<BR>var<BR>a,i:integer;<BR>errcode:integer;<BR>netres:array[0..1023] of netresource;<BR>enumhandle:thandle;<BR>enumentries:dword;<BR>buffersize:dword;<BR>s:string;<BR>mylistitems:tlistitems;<BR>mylistitem:tlistitem;<BR>alldomain:tstrings;<BR>begin //listcomputer is a listview to list all computers;controlcenter is a form.<BR>alldomain:=tstringlist.Create ;<BR>with netres[0] do begin<BR>dwscope :=RESOURCE_GLOBALNET;<BR>dwtype :=RESOURCETYPE_ANY;<BR>dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;<BR>dwusage :=RESOURCEUSAGE_CONTAINER;<BR>lplocalname :=nil;<BR>lpremotename :=nil;<BR>lpcomment :=nil;<BR>lpprovider :=nil;<BR>end; // 获取所有的域<BR>errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);<BR>if errcode=NO_ERROR then begin<BR>enumentries:=1024;<BR>buffersize:=sizeof(netres);<BR>errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);<BR>end;<BR>a:=0;<BR>mylistitems :=controlcenter.lstcomputer.Items ;<BR>mylistitems.Clear ;<BR>while (string(netres[a].lpprovider)&lt;&gt;'') and (errcode=NO_ERROR) do<BR>begin<BR>alldomain.Add (netres[a].lpremotename);<BR>a:=a+1;<BR>end;<BR>wnetcloseenum(enumhandle);<BR>// 获取所有的计算机<BR>mylistitems :=controlcenter.lstcomputer.Items ;<BR>mylistitems.Clear ;<BR>for i:=0 to alldomain.Count-1 do<BR>begin<BR>with netres[0] do begin<BR>dwscope :=RESOURCE_GLOBALNET;<BR>dwtype :=RESOURCETYPE_ANY;<BR>dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;<BR>dwusage :=RESOURCEUSAGE_CONTAINER;<BR>lplocalname :=nil;<BR>lpremotename :=pchar(alldomain[i]);<BR>lpcomment :=nil;<BR>lpprovider :=nil;<BR>end;<BR>ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);<BR>if errcode=NO_ERROR then<BR>begin<BR>EnumEntries:=1024;<BR>BufferSize:=SizeOf(NetRes);<BR>ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);<BR>end;<BR>a:=0;<BR>while (string(netres[a].lpprovider)&lt;&gt;'') and (errcode=NO_ERROR) do<BR>begin<BR>mylistitem :=mylistitems.Add ;<BR>mylistitem.ImageIndex :=0;<BR>mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'\\','',[rfReplaceAll]));<BR>a:=a+1;<BR>end;<BR>wnetcloseenum(enumhandle);<BR>end;<BR>end;<BR><BR>◇[DELPHI]获取某一计算机上的共享目录<BR>procedure getsharefolder(const computername:string);<BR>var<BR>errcode,a:integer;<BR>netres:array[0..1023] of netresource;<BR>enumhandle:thandle;<BR>enumentries,buffersize:dword;<BR>s:string;<BR>mylistitems:tlistitems;<BR>mylistitem:tlistitem;<BR>mystrings:tstringlist;<BR>begin<BR>with netres[0] do begin<BR>dwscope :=RESOURCE_GLOBALNET;<BR>dwtype :=RESOURCETYPE_DISK;<BR>dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;<BR>dwusage :=RESOURCEUSAGE_CONTAINER;<BR>lplocalname :=nil;<BR>lpremotename :=pchar(computername);<BR>lpcomment :=nil;<BR>lpprovider :=nil;<BR>end; // 获取根结点<BR>errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);<BR>if errcode=NO_ERROR then<BR>begin<BR>EnumEntries:=1024;<BR>BufferSize:=SizeOf(NetRes);<BR>ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);<BR>end;<BR>wnetcloseenum(enumhandle);<BR>a:=0;<BR>mylistitems:=controlcenter.lstfile.Items ;<BR>mylistitems.Clear ;<BR>while (string(netres[a].lpprovider)&lt;&gt;'') and (errcode=NO_ERROR) do<BR>begin<BR>with mylistitems do<BR>begin<BR>mylistitem:=add;<BR>mylistitem.ImageIndex :=4;<BR>mylistitem.Caption :=extractfilename(netres[a].lpremotename);<BR>end;<BR>a:=a+1;<BR>end;<BR>end;<BR><BR>◇[DELPHI]得到硬盘序列号<BR>var SerialNum : pdword; a, b : dword; Buffer : array [0..255] of char; <BR>begin <BR>if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^); <BR>end; <BR><BR>◇[DELPHI]MEMO的自动翻页<BR>Procedure ScrollMemo(Memo : TMemo; Direction : char); <BR>begin <BR>case direction of <BR>'d': begin <BR>SendMessage(Memo.Handle, { HWND of the Memo Control } <BR>WM_VSCROLL, { Windows <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT> } <BR>SB_PAGEDOWN, { Scroll Command } <BR>0) { Not Used } <BR>end; <BR><BR>'u' : begin <BR>SendMessage(Memo.Handle, { HWND of the Memo Control } <BR>WM_VSCROLL, { Windows <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>Message</FONT> } <BR>SB_PAGEUP, { Scroll Command } <BR>0); { Not Used } <BR>end; <BR>end; <BR>end; <BR><BR>procedure Tform1.Button1Click(Sender: TObject); <BR>begin <BR>ScrollMemo(Memo1,'d'); //上翻页<BR>end; <BR>procedure Tform1.Button1Click(Sender: TObject); <BR>begin <BR>ScrollMemo(Memo1,'u'); //下翻页<BR>end; <BR><BR>◇[DELPHI]DBGrid中回车到下个位置(Tab键)<BR>procedure Tform1.DBGrid1KeyPress(Sender: TObject; var Key: Char);<BR>begin<BR>if Key = #13 then<BR>if DBGrid1.Columns.Grid.SelectedIndex &lt; DBGrid1.Columns.Count - 1 then<BR>DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl<BR>else<BR>begin <BR>Table1.next;<BR>DBGrid1.Columns[0].field.FocusControl;<BR>end;<BR>end;<BR>

xu2000 发表于 2006-10-12 22:53

<P>◇[DELPHI]如何安装控件<BR>安装方法:<BR>1.对于单个控件,Component--&gt;install component..--&gt;PAS或DCU文件--&gt;install<BR>2.对于带*.dpk文件的控件包,File--&gt;open(下拉列表框中选*.dpk)--&gt;install即可.<BR>3.对于带*.dpl文件的控件包,Install Packages--&gt;Add--&gt;dpl文件名即可。<BR>4.如果以上Install按钮为失效的话,试试Compile按钮。<BR>5.是run time lib则在option下的packages下的runtimepackes加之.<BR>如果编译时提示文件找不到的话,一般是控件的安装目录不在delphi的Lib目录中,有两种方法可以解决:<BR>1.把安装的原文件拷入到delphi的Lib目录下。<BR>2.或者Tools--&gt;Environment Options中把控件原代码路径加入到Delphi的Lib目录中即可。<BR><BR>◇[DELPHI]目录完全删除(deltree)<BR>procedure Tform1.DeleteDirectory(strDir:String); <BR>var <BR>sr: TSearchRec; <BR>FileAttrs: Integer; <BR>strfilename:string; <BR>strPth:string; <BR>begin <BR>strpth:=Getcurrentdir(); <BR>FileAttrs := faAnyFile; <BR>if FindFirst(strpth+'\'+strdir+'\*.*', FileAttrs, sr) = 0 then <BR>begin <BR>if (sr.Attr and FileAttrs) = sr.Attr then <BR>begin <BR>strfilename:=sr.Name; <BR>if fileexists(strpth+'\'+strdir+'\'+strfilename) then <BR>deletefile(strpth+'\'+strdir+'\'+strfilename); <BR>end; <BR>while FindNext(sr) = 0 do <BR>begin <BR>if (sr.Attr and FileAttrs) = sr.Attr then <BR>begin <BR>strfilename:=sr.name; <BR>if fileexists(strpth+'\'+strdir+'\'+strfilename) then <BR>deletefile(strpth+'\'+strdir+'\'+strfilename); <BR>end; <BR>end; <BR>FindClose(sr); <BR>removedir(strpth+'\'+strdir); <BR>end; <BR>end;<BR><BR>◇[DELPHI]取得TMemo 控件当前光标的行和列信息到Tpoint中 <BR>1.function ReadCursorPos(SourceMemo: TMemo): TPoint; <BR>var Point: TPoint; <BR>begin <BR> point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0); <BR> point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0); <BR> Result := Point;<BR>end; <BR>2.LineLength:=SendMessage(memol.handle,EM—LINELENGTH,Cpos,0);//行长<BR><BR>◇[DELPHI]读硬盘序列号 <BR>function GetDiskSerial(DiskChar: Char): string;<BR>var<BR>SerialNum : pdword;<BR>a, b : dword;<BR>Buffer : array [0..255] of char;<BR>begin<BR>result := "";<BR>if GetVolumeInformation(PChar(diskchar+":\"), Buffer, SizeOf(Buffer), SerialNum,<BR>a, b, nil, 0) then<BR> Result := IntToStr(SerialNum^);<BR>end;<BR><BR>◇[INTERNET]CSS常用综合技巧<BR>1。P:first-letter { font-size: 300%; float: left }//首字会比普通字体加大三倍。<BR>2。&lt;LINK REL=styleSheet HREF="basics.css" TITLE="Contemporary"&gt;//连接一个外部样式表<BR>3。嵌入一个样式表<BR>&lt;style TYPE="text/css" MEDIA=screen&gt;<BR>&lt;!--<BR>@import url(http://www.htmlhelp.com/style.css);//外部导入一个样式表<BR>@import url(/stylesheets/punk.css);//同上<BR>BODY { background: url(foo.gif) red; color: black }<BR>.punk { color: lime; background: #ff80c0 }//引用见5。<BR>#wdg97 { font-size: larger }//引用见6。<BR>--&gt;<BR>&lt;/style&gt;<BR>4。&lt;P style="color: red; font-family: 'New Century Schoolbook', serif"&gt; //内联样式<BR>&lt;SPAN style="font-family: Arial"&gt;Arial&lt;/SPAN&gt;//SPAN接受style、CLASS和ID属性<BR>&lt;DIV CLASS=note&gt;&lt;P&gt;DIV可以包含段落、标题、表格甚至其它部分&lt;/P&gt;&lt;/DIV&gt;<BR>5。&lt;H1 CLASS=punk&gt;CLASS属性&lt;/H1&gt;//定义见3。<BR>6。&lt;P ID=wdg97&gt;ID属性&lt;/P&gt;//定义见3。<BR>7。属性列表<BR>字体风格:font-style: [normal | italic | oblique];<BR>字体大小:font-size: [xx-small | x-small | small | medium | large | x-large | xx-large | larger | smaller | &lt;长度&gt; | &lt;百分比&gt;]<BR>文本修饰:text-decoration:[ underline || overline || line-through || blink ]<BR>文本转换:text-transform:[none | capitalize | uppercase | lowercase]<BR>背景颜色:background-color:[&lt;颜色&gt; | transparent]<BR>背景图象:background-image:[&lt;URLs&gt; | none]<BR>行高:line-height: [normal | &lt;数字&gt; | &lt;长度&gt; | &lt;百分比&gt;]<BR>边框样式:border-style: [ none | dotted | dashed | solid | double | groove | ridge | inset | outset ]<BR>漂浮:float: [left | right | none]<BR>8。长度单位<BR>相对单位:<BR>em (em,元素的字体的高度) <BR>ex (x-height,字母 "x" 的高度) <BR>px (像素,相对于屏幕的分辨率) <BR>绝对长度:<BR>in (英寸,1英寸=2.54厘米) <BR>cm (厘米,1厘米=10毫米) <BR>mm (米) <BR>pt (点,1点=1/72英寸) <BR>pc (帕,1帕=12点) <BR><BR>◇[DELPHI]VCL制作简要步骤<BR>1.创建部件属性方法事件<BR>(建立库单元,继承为新的类型,添加属性、方法、事件,注册部件,建立包文件)<BR>2.消息处理<BR>3.异常处理<BR>4.部件可视<BR><BR>◇[DELPHI]动态连接库的装载<BR>静态装载:procedure name;external 'lib.dll';<BR>动态装载:var handle:Thandle;<BR>handle:=loadlibrary('lib.dll');<BR>if handle&lt;&gt;0 then<BR>begin<BR>{dosomething}<BR>freelibrary(handle);<BR>end;<BR><BR>◇[DELPHI]指针变量和地址<BR>var x,y:integer;p:^integer;//指向INTEGER变量的指针<BR>x:=10;//变量赋值<BR>p:=@x;//变量x的地址<BR>y:=p^;//为Y赋值指针P<BR>@@procedure//返回过程变量的内存地址<BR><BR>◇[DELPHI]判断字符是汉字的一个字符<BR>ByteType('你好haha吗',1) = mbLeadByte//是第一个字符<BR>ByteType('你好haha吗',2) = mbTrailByte//是第二个字符<BR>ByteType('你好haha吗',5) = mbSingleByte//不是中文字符<BR><BR>◇[DELPHI]memo的定位操作<BR>memo1.lines.delete(0)//删除第1行<BR>memo1.selstart:=10//定位10字节处<BR><BR>◇[DELPHI]获得双字节字符内码<BR>function getit(s: string): integer;<BR>begin<BR>Result := byte(s[1]) * $100 + byte(s[2]);<BR>end;<BR>使用:getit('计')//$bcc6 即十进制 48326<BR><BR>◇[DELPHI]调用ADD数据存储过程<BR>存储过程如下:<BR>create procedure addrecord(<BR>record1 varchar(10)<BR>record2 varchar(20)<BR>)<BR>as<BR>begin<BR>insert into tablename (field1,field2) values(:record1,:record2)<BR>end<BR>执行存储过程:<BR>EXECUTE procedure addrecord("urrecord1","urrecord2") <BR><BR>◇[DELPHI]将文件存到blob字段中<BR>function blobcontenttostring(const filename: string):string;<BR>begin<BR>with tfilestream.create(filename,fmopenread) do<BR>try<BR>setlength(Result,size);<BR>read(Pointer(Result)^,size);<BR>finally<BR>free;<BR>end;<BR>end;<BR>//保存字段<BR>begin<BR>if (opendialog1.execute) then<BR>begin<BR>sFileName:=OpenDialog1.FileName;<BR>adotable1.edit;<BR>adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(FileName);<BR>adotable1.post;<BR>end;<BR><BR>◇[DELPHI]把文件全部复制到剪贴板<BR>uses shlobj,activex,clipbrd;<BR>procedure Tform1.copytoclipbrd(var FileName:string);<BR>var<BR>FE:TformatEtc;<BR>Medium: TStgMedium;<BR>dropfiles:PDropFiles;<BR>pfile:PChar;<BR>begin<BR>FE.cfformat := CF_HDROP;<BR>FE.dwAspect := DVASPECT_CONTENT;<BR>FE.tymed := TYMED_HGLOBAL;<BR>Medium.hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_ZEROINIT, SizeOf(TDropFiles)+length(FileName)+1);<BR>if Medium.hGlobal&lt;&gt;0 then begin<BR>Medium.tymed := TYMED_HGLOBAL;<BR>dropfiles := GlobalLock(Medium.hGlobal);<BR>try<BR>dropfiles^.pfiles := SizeOf(TDropFiles);<BR>dropfiles^.fwide := False;<BR>longint(pFile) := longint(dropfiles)+SizeOf(TDropFiles);<BR>StrPCopy(pFile,FileName);<BR>Inc(pFile, Length(FileName)+1);<BR>pFile^ := #0;<BR>finally<BR>GlobalUnlock(Medium.hGlobal);<BR>end;<BR>Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal);<BR>end;<BR>end;<BR><BR>◇[DELPHI]列举当前系统运行进程<BR>uses TLHelp32;<BR>procedure Tform1.Button1Click(Sender: TObject);<BR>var lppe: TProcessEntry32;<BR>found : boolean;<BR>Hand : THandle;<BR>begin<BR>Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);<BR>found := Process32First(Hand,lppe);<BR>while found do<BR>begin<BR>ListBox1.Items.Add(StrPas(lppe.szExeFile));<BR>found := Process32Next(Hand,lppe);<BR>end;<BR>end;<BR><BR>◇[DELPHI]根据BDETable1建立新表Table2<BR>Table2:=TTable.Create(nil);<BR>try<BR>Table2.DatabaseName:=Table1.DatabaseName;<BR>Table2.FieldDefs.Assign(Table1.FieldDefs);<BR>Table2.IndexDefs.Assign(Table1.IndexDefs);<BR>Table2.TableName:='new_table';<BR>Table2.CreateTable();<BR>finally<BR>Table2.Free();<BR>end;<BR><BR>◇[DELPHI]最菜理解DLL建立和引用<BR>//先看DLL source(FILE--&gt;NEW--&gt;DLL)<BR>library project1;<BR>uses<BR>SysUtils, Classes;<BR>function addit(f:integer;s:integer):integer;export;<BR>begin<BR>makeasum:=f+s;<BR>end;<BR>exports<BR>addit;<BR>end.<BR>//调用(IN ur PROJECT)<BR>implementation<BR>function addit(f:integer;s:integer):integer;far;external 'project1';//申明<BR>{调用就是addit(2,4);结果显示6}<BR><BR>◇[DELPHI]动态读取程序自身大小<BR>function GesSelfSize: integer;<BR>var<BR>f: file of byte;<BR>begin<BR>filemode := 0;<BR>assignfile(f, application.exename);<BR>reset(f);<BR>Result := filesize(f);//单位是字节<BR>closefile(f);<BR>end;<BR><BR>◇[DELPHI]读取BIOS信息<BR>with Memo1.Lines do <BR>begin <BR>Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); <BR>Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); <BR>Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); <BR>Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); <BR>end; <BR><BR>◇[DELPHI]动态建立MSSQL别名<BR>procedure Tform1.Button1Click(Sender: TObject);<BR>var MyList: TStringList;<BR>begin<BR>MyList := TStringList.Create;<BR>try<BR>with MyList do<BR>begin<BR>Add('SERVER NAME=210.242.86.2');<BR>Add('DATABASE NAME=db');<BR>Add('USER NAME=sa');<BR>end;<BR>Session1.AddAlias('TESTSQL', 'MSSQL', MyList); //?ミMSSQL??<BR>Session1.SaveConfigFile;<BR>finally<BR>MyList.Free;<BR>Session1.Active:=True;<BR>Database1.DatabaseName:='DB';<BR>Database1.AliasName:='TESTSQL';<BR>Database1.LoginPrompt:=False;<BR>Database1.Params.Add('USER NAME=sa');<BR>Database1.Params.Add('PASSWORD=');<BR>Database1.Connected:=True;<BR>end;<BR>end;<BR><BR>procedure Tform1.Button2Click(Sender: TObject);<BR>begin<BR>Database1.Connected:=False;<BR>Session1.DeleteAlias('TESTSQL'); ??<BR>end; <BR><BR>◇[DELPHI]播放背景音乐<BR>uses mmsystem<BR>//播放音乐<BR>MCISendString('OPEN e:\1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0);<BR>MCISendString('PLAY NN FROM 0', '', 0, 0);<BR>MCISendString('CLOSE ANIMATION', '', 0, 0);<BR>end;<BR>//停止播放<BR>MCISendString('OPEN e:\1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0);<BR>MCISendString('STOP NN', '', 0, 0);<BR>MCISendString('CLOSE ANIMATION', '', 0, 0);<BR><BR>◇[DELPHI]接口和类的一个范例代码<BR>Type{接口和类申明:区别在于不能在接口中申明数据成员、任何非公有的方法、公共方法不使用PUBLIC关键字}<BR>Isample=interface//定义Isample接口<BR>function getstring:string;<BR>end;<BR>Tsample=class(TInterfacedObject,Isample)<BR>public<BR>function getstring:string;<BR>end;<BR>//function定义<BR>function Tsample.getstring:string;<BR>begin<BR>result:='what show is ';<BR>end;<BR>//调用类对象<BR>var sample:Tsample;<BR>begin<BR>sample:=Tsample.create;<BR>showmessage(sample.getstring+'class object!');<BR>sample.free;<BR>end;<BR>//调用接口<BR>var sampleinterface:Isample;<BR>sample:Tsample;<BR>begin<BR>sample:=Tsample.create;<BR>sampleInterface:=sample;//Interface的实现必须使用class<BR>{以上两行也可表达成sampleInterface:=Tsample.create;}<BR>showmessage(sampleInterface.getstring+'Interface!');<BR>//sample.free;{和局部类不同,Interface中的类自动释放}<BR>sampleInterface:=nil;{释放接口对象}<BR>end;<BR><BR>◇[DELPHI]任务条就看不当程序<BR>var<BR>Extendedstyle : Integer;<BR>begin<BR>Application.Initialize;<BR>Extendedstyle := GetWindowLong (Application.Handle, GWL_EXstyle);<BR>SetWindowLong(Application.Handle, GWL_EXstyle, Extendedstyle OR WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);<BR>Application.Createform(Tform1, form1);<BR>Application.Run;<BR>end. <BR><BR>◇[DELPHI]ALT+CTRL+DEL看不到程序<BR>在implementation后添加声明:<BR>function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';<BR>RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏<BR>RegisterServiceProcess(GetCurrentProcessID, 0);//显示<BR><BR>◇[DELPHI]检测光驱符号 <BR>var drive:char;<BR>cdromID:integer;<BR>begin<BR>for drive:='d' to 'z' do<BR>begin<BR>cdromID:=GetDriveType(pchar(drive+':\'));<BR>if cdromID=5 then showmessage('你的光驱为:'+drive+'盘!');<BR>end;<BR>end;<BR><BR>◇[DELPHI]检测声卡<BR>if auxGetNumDevs()&lt;=0 then showmessage('No soundcard found!') else showmessage('Any soundcard found!');<BR><BR>◇[DELPHI]在字符串网格中画图<BR>StringGrid.OnDrawCell事件<BR>with StringGrid1.Canvas do <BR>Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic); <BR><BR>◇[SQL SERVER]SQL中代替Like语句的另一种写法<BR>比如查找用户名包含有"c"的所有用户, 可以用 <BR>use mydatabase <BR>select * from table1 where username like'%c%" <BR>下面是完成上面功能的另一种写法: <BR>use mydatabase <BR>select * from table1 where charindex('c',username)&gt;0 <BR>这种方法理论上比上一种方法多了一个判断语句,即&gt;0, 但这个判断过程是最快的, 我想信80%以上的运算都是花在查找字 <BR>符串及其它的运算上, 所以运用charindex函数也没什么大不了. 用这种方法也有好处, 那就是对%,|等在不能直接用like <BR>查找到的字符中可以直接在这charindex中运用, 如下: <BR>use mydatabase <BR>select * from table1 where charindex('%',username)&gt;0 <BR>也可以写成: <BR>use mydatabase <BR>select * from table1 where charindex(char(37),username)&gt;0 <BR>ASCII的字符即为% <BR><BR>◇[DELPHI]SQL显示多数据库/表<BR>SELECT DISTINCT A.bianhao,a.xingming, b.gongzi FROM "jianjie.dbf" a, "gongzi.DBF" b <BR>WHERE A.bianhao=b.bianhao<BR><BR>◇[DELPHI]RFC(Request For Comment)相关<BR>IETF(Internet Engineering Task Force)维护RFC文档http://www.ietf.cnri.reston.va.us<BR>RFC882:报文头标结构<BR>RFC1521:MIME第一部分,传输报文方法<BR>RFC1945:多媒体文档传输文档<BR><BR>◇[DELPHI]TNMUUProcessor的使用<BR>var inStream,outStream:TFileStream;<BR>begin<BR>inStream:=TFileStream.create(infile.txt,fmOpenRead);<BR>outStream:=TFileStream(outfile.txt,fmCreate);<BR>NMUUE.Method:=uuCode;{UUEncode/Decode}<BR>//NMUUE.Method:=uuMIME;{MIME}<BR>NMUUE.InputStream:=InStream;<BR>NMUUE.OutputStream:=OutStream;<BR>NMUUE.Encode;{编码处理}<BR>//NMUUE.Decode;{解码处理}<BR>inStream.free;<BR>outStream.free;<BR>end;<BR></P>

xu2000 发表于 2006-10-12 22:55

<P>◇[DELPHI]TFileStream的操作<BR>//从文件流当前位置读count字节到缓冲区BUFFER<BR>function read(var buffer;count:longint):longint;override;<BR>//将缓冲区BUFFER读到文件流中<BR>function write(const buffer;count:longint):longint;override;<BR>//设置文件流当前读写指针为OFFSET<BR>function seek(offset:longint;origin:word):longint;override;<BR>origin={soFromBeginning,soFromCurrent,soFromEnd}<BR>//从另一文件流中当前位置复制COUNT到当前文件流当前位置<BR>function copyfrom(source:TStream;count:longint):longint;<BR>//读指定文件到文件流<BR>var myFStream:TFileStream;<BR>begin<BR>myFStream:=TFileStream.create(OpenDialog1.filename,fmOpenRead);<BR>end;<BR><BR>[javascript]检测是否安装IE插件Shockwave&amp;Quicktime<BR>&lt;script LANGUAGE="javascript"&gt;<BR>var myPlugin = navigator.plugins["Shockwave"];<BR>if (myPlugin)<BR>document.writeln("你已经安装了 Shockwave!")<BR>else<BR>document.writeln("你尚未安装 Shockwave!")<BR>&lt;/script&gt;&lt;br&gt;<BR>&lt;script LANGUAGE="javascript"&gt;<BR>var myPlugin = navigator.plugins["Quicktime"];<BR>if (myPlugin)<BR>document.writeln("你已经安装了Quicktime!")<BR>else<BR>document.writeln("你尚未安装 Quicktime!")<BR>&lt;/script&gt;<BR><BR><BR>[INTERNET]表格中引用IFRAME效果<BR>&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;<BR>&lt;tr&gt;<BR>&lt;td&gt;&lt;ILAYER id="ad1" visibility="hidden" height="60"&gt;&lt;/ILAYER&gt; &lt;NOLAYER&gt; &lt;IFRAME SRC="i:\jinhtml\zj\h21.htm" width="500" height="200" marginwidth="0" marginheight="110" hspace="10" vspace="20" frameborder="0" scrolling="1"&gt;&lt;/IFRAME&gt; &lt;/NOLAYER&gt; &lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR><BR>◇[DELPHI]WebBrowser控件技巧<BR>1。实现打印功能<BR>var vaIn, vaOut: OleVariant;<BR>WebBrowser.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);<BR>2。WebBrowser从流中读取页面<BR>function Tform1.LoadFromStream(const AStream: TStream): HRESULT;<BR>begin<BR>AStream.seek(0, 0);<BR>Result := (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));<BR>end;<BR>3。"about:" protocol will let you Navigate to an HTML string:<BR>procedure Tform1.LoadHTMLString(sHTML: String);<BR>var Flags, TargetFrameName, PostData, Headers: OleVariant;<BR>WebBrowser1.Navigate('about:' + sHTML, Flags, TargetFrameName, PostData, Headers)<BR>4。"res:" protocol will let you Navigate to an HTML file stored as a resource. More informations is available from the Microsoft site:<BR>procedure Tform1.LoadHTMLResource;<BR>var Flags, TargetFrameName, PostData, Headers: OleVariant;<BR>WebBrowser1.Navigate('res://' + Application.ExeName + '/myhtml', Flags, TargetFrameName, PostData, Headers)<BR>使用brcc32.exe建立资源文件 (*.rc) <BR>MYHTML 23 ".\html\myhtml.htm"<BR>MOREHTML 23 ".\html\morehtml.htm"<BR>{$R HTML.RES} //html.rc被编译成html.res<BR>5。保存完整的HTML文件<BR>var<BR>HTMLDocument: IHTMLDocument2;<BR>Persistfile: IPersistFile;<BR>begin<BR>HTMLDocument := WebBrowser1.Document as IHTMLDocument2;<BR>PersistFile := HTMLDocument as IPersistFile;<BR>PersistFile.Save(StringToOleStr('test.htm'), True);<BR>while HTMLDocument.readyState &lt;&gt; 'complete' do<BR>Application.ProcessMessages;<BR>end;<BR><BR>◇[DELPHI]安装WebBrowser控件(内嵌IE控件)<BR>你必须先确定系统已安装Internet Explorer4或以后版本,DELPHI菜单--Component- - Import ActiveX Contro,列表中选择Microsoft Internet Controls"并ADD到一个已存在的包文件中,WebBrowser控件将显示在ActiveX控件面板。 <BR><BR>◇[DELPHI]实现windows2000半透明窗体<BR>function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明<BR>procedure Tform1.formCreate(Sender: TObject);<BR>var l:longint;<BR>begin<BR>l:=getWindowLong(Handle, GWL_EXstyle);<BR>l := l Or $80000;<BR>SetWindowLong (handle, GWL_EXstyle, l);<BR>SetLayeredWindowAttributes(handle, 0, 180, 2);<BR>end;<BR><BR>◇[DELPHI]程序显示广告WebBrowser加载图片<BR>var Flag, frame, pData, Header: OLEVariant;<BR>begin<BR>WebBrowser1.Navigate('http://www.chineseall.com/images/logo.jpg', flag, frame,pData, Header)<BR>end;<BR><BR>◇[DELPHI]计算一个目录的大小<BR>function GetDirectorySize(const ADirectory: string): Integer; <BR>var <BR>Dir: TSearchRec; <BR>Ret: integer; <BR>Path: string; <BR>begin <BR>Result := 0; <BR>Path := ExtractFilePath(ADirectory); <BR>Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir); <BR>if Ret &lt;&gt; NO_ERROR then <BR>exit; <BR>try <BR>while ret=NO_ERROR do <BR>begin <BR>inc(Result, Dir.Size); <BR>//如果是目录,且不是'.'或'..'则进行递归调用<BR>if (Dir.Attr in [faDirectory]) and (Dir.Name[1] &lt;&gt; '.') then <BR>Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*')); <BR>Ret := Sysutils.FindNext(Dir); <BR>end; <BR>finally <BR>Sysutils.FindClose(Dir); <BR>end; <BR>end; <BR><BR>◇[DELPHI]清空一个目录<BR>function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :<BR>Boolean;<BR>var<BR>SearchRec : TSearchRec;<BR>Res : Integer;<BR>begin<BR>Result := False;<BR>TheDirectory := NormalDir(TheDirectory);<BR>Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);<BR>try<BR>while Res = 0 do<BR>begin<BR>if (SearchRec.Name &lt;&gt; '.') and (SearchRec.Name &lt;&gt; '..') then<BR>begin<BR>if ((SearchRec.Attr and faDirectory) &gt; 0) and Recursive<BR>then begin<BR>EmptyDirectory(TheDirectory + SearchRec.Name, True);<BR>RemoveDirectory(PChar(TheDirectory + SearchRec.Name));<BR>end<BR>else begin<BR>DeleteFile(PChar(TheDirectory + SearchRec.Name))<BR>end;<BR>end;<BR>Res := FindNext(SearchRec);<BR>end;<BR>Result := True;<BR>finally<BR>FindClose(SearchRec.FindHandle);<BR>end;<BR>end;<BR><BR>◇[DELPHI]发布ADO程序之安装ADO<BR>运行一次 MDac_typ.exe ,这个文件在微软的 Windows、IE、Office、Visual Studio 中都有。<BR>安装程序所安装后的目录与程序中设置的目录路径一样,C:\Program Files\Common Files\System\ado文件夹中有没有ADO组件,装ACCESS2000就有ADO2.1,没有则安装MS OFfice2000,编译要去掉project-&gt;Option-&gt;Packages对话框中的Build With RunTime Library的勾。<BR><BR>◇[DELPHI]拦截Windows系统消息:WM_CLOSE消息<BR>procedure WMClose(var Msg: TMessage);<FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>message</FONT> WM_CLOSE;<BR>procedure TMainform.WMClose(var Msg: TMessage);<BR>begin<BR>m_bCloseNoQuery := false;<BR>inherited;<BR>end;<BR><BR> <BR><BR>来自:Adnil, 时间:2002-3-26 14:54:00, ID:1003492<BR><BR>强!<BR>大致看了一下,提两个修改意见:<BR><BR>◇[DELPHI]设置窗体的最大显示<BR>onformCreate事件<BR>self.width:=screen.width;<BR>self.height:=screen.height;<BR>修改:<BR>self.windowstate := wsmaxmized;<BR><BR>◇[DELPHI]文件名的非法字符过滤<BR>for i:=1 to length(s) do<BR>if s[i] in ['\','/',':','*','?','&lt;','&gt;','|'] then<BR>修改:<BR>try<BR>slist := tstringlist.create;<BR>slist.savetofile(s);<BR>result := true;<BR>deletefile(s);<BR>except<BR>result := false;<BR>end;<BR>利用异常机制,这样可以兼容linux的文件命名。<BR><BR><BR>追加部分<BR><BR>◇[DELPHI]配置ODBC的代码<BR>var<BR>reg: TRegistry;<BR>Driver: string;<BR>begin<BR>//建立和更新odbc数据源<BR>//查找ODBCINST.INI键,如果sql server的驱动程序没有安装,则提示退出<BR>//如果存在,则进行配置<BR>reg := TRegistry.Create;<BR>try<BR>  with reg do<BR>  begin<BR>    RootKey := HKEY_LOCAL_MACHINE;<BR>    if OpenKey('Software\ODBC\ODBCINST.INI\SQL Server', False) then<BR>    begin //如果存在sql server 驱动程序<BR>      Driver := ReadString('Driver');<BR>      CloseKey;<BR>      if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources', True) then<BR>      begin //注册一个DSN名称<BR>        WriteString(Edit_DataSource.Text, 'SQL Server');<BR>      end<BR>      else<BR>      begin //创建键值失败<BR>        Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINformATION or MB_OK);<BR>        exit;<BR>      end;<BR>      CloseKey;<BR>      //end 建立dsn<BR>      if OpenKey('Software\ODBC\ODBC.INI\' + Edit_DataSource.Text, True) then<BR>      begin<BR>        WriteString('Database', Edit_DataSource.Text);<BR>        WriteString('Driver', Driver);<BR>        WriteString('LastUser', Edit_LoginUser.Text);<BR>        WriteString('Server', Edit_Ip.Text);<BR>      end<BR>      else<BR>      begin //创建键值失败<BR>        Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINformATION or MB_OK);<BR>        exit;<BR>      end;<BR>      CloseKey;<BR>    end<BR>    else<BR>      Application.MessageBox('在当前机器上没有安装 SQL Server的ODBC 驱动程序!,请安装相应的驱动程序', '驱动程序出错', MB_ICONINformATION or MB_OK);<BR>    CloseKey;<BR>  end;<BR>finally<BR>  reg.Free;<BR>end;<BR>end;<BR><BR>◇[DELPHI]验证邮件地址有效函数<BR>function IsValidEmail(const value: string): boolean; <BR>function CheckAllowed(const s: string): boolean; <BR>var <BR>  i: integer; <BR>begin <BR>  Result:= false; <BR>  for i:= 1 to Length(s) do <BR>  begin <BR>    // illegal char in s -&gt; no valid address <BR>    if not (s[i] in ['a'..'z','A'..'Z','0'..'9','_','-','.']) then <BR>      Exit; <BR>  end; <BR>  Result:= true; <BR>end; <BR>var <BR>i: integer; <BR>namePart, serverPart: string; <BR>begin // of IsValidEmail <BR>Result:= false; <BR>i:= Pos('@', value); <BR>if (i = 0) or (pos('..', value) &gt; 0) then <BR>  Exit; <BR>namePart:= Copy(value, 1, i - 1); <BR>serverPart:= Copy(value, i + 1, Length(value)); <BR>if (Length(namePart) = 0)         // @ or name missing <BR>  or ((Length(serverPart) &lt; 4))   // name or server missing or <BR>  then Exit;                      // too short <BR>i:= Pos('.', serverPart); <BR>// must have dot and at least 3 places from end <BR>if (i = 0) or (i &gt;= (Length(serverPart) - 2)) then <BR>  Exit; <BR>Result:= CheckAllowed(namePart) and CheckAllowed(serverPart); <BR>end;<BR><BR>◇[DELPHI]设定IE的默认打开主页<BR>procedure SetStartPage(StartPage:string);<BR>var<BR>Reg:TRegistry;<BR>begin<BR>Reg:=TRegistry.Create;<BR>Reg.RootKey:=HKEY_CURRENT_USER;<BR>Reg.OpenKey(StartPagePath,False);<BR>Reg.WriteString('Start Page',StartPage);<BR>Reg.Free;<BR>end;<BR><BR>◇[DELPHI]form边缘特效<BR>procedure Tform1.formCreate(Sender: TObject);<BR>var<BR>Region1 : array of tPoint;<BR>Region1hrgn : hRgn;<BR>Begin<BR>SetLength(Region1,59);<BR>Region1[0].X:=12; Region1[0].Y:=6;<BR>Region1[1].X:=484; Region1[1].Y:=6;<BR>Region1[2].X:=484; Region1[2].Y:=7; <BR>Region1[3].X:=486; Region1[3].Y:=7;<BR>Region1[4].X:=486; Region1[4].Y:=8; <BR>Region1[5].X:=487; Region1[5].Y:=8; <BR>Region1[6].X:=487; Region1[6].Y:=9; <BR>Region1[7].X:=488; Region1[7].Y:=9; <BR>Region1.X:=488; Region1.Y:=10; <BR>Region1[9].X:=489; Region1[9].Y:=10;<BR>Region1[10].X:=489; Region1[10].Y:=12; <BR>Region1[11].X:=490; Region1[11].Y:=12; <BR>Region1[12].X:=490; Region1[12].Y:=285; <BR>Region1[13].X:=489; Region1[13].Y:=285; <BR>Region1[14].X:=489; Region1[14].Y:=287; <BR>Region1[15].X:=488; Region1[15].Y:=287;<BR>Region1[16].X:=488; Region1[16].Y:=288; <BR>Region1[17].X:=487; Region1[17].Y:=288; <BR>Region1[18].X:=487; Region1[18].Y:=289; <BR>Region1[19].X:=486; Region1[19].Y:=289; <BR>Region1[20].X:=486; Region1[20].Y:=290;<BR>Region1[21].X:=484; Region1[21].Y:=290;<BR>Region1[22].X:=484; Region1[22].Y:=291;<BR>Region1[23].X:=101; Region1[23].Y:=291;<BR>Region1[24].X:=100; Region1[24].Y:=290;<BR>Region1[25].X:=99; Region1[25].Y:=290; <BR>Region1[26].X:=98; Region1[26].Y:=289; <BR>Region1[27].X:=97; Region1[27].Y:=288; <BR>Region1[28].X:=96; Region1[28].Y:=287; <BR>Region1[29].X:=95; Region1[29].Y:=286; <BR>Region1[30].X:=95; Region1[30].Y:=284;<BR>Region1[31].X:=94; Region1[31].Y:=283; <BR>Region1[32].X:=94; Region1[32].Y:=200; <BR>Region1[33].X:=93; Region1[33].Y:=199; <BR>Region1[34].X:=93; Region1[34].Y:=198; <BR>Region1[35].X:=92; Region1[35].Y:=197; <BR>Region1[36].X:=91; Region1[36].Y:=196;<BR>Region1[37].X:=90; Region1[37].Y:=195; <BR>Region1[38].X:=89; Region1[38].Y:=194; <BR>Region1[39].X:=88; Region1[39].Y:=194; <BR>Region1[40].X:=87; Region1[40].Y:=193; <BR>Region1[41].X:=14; Region1[41].Y:=193; <BR>Region1[42].X:=13; Region1[42].Y:=192;<BR>Region1[43].X:=12; Region1[43].Y:=192; <BR>Region1[44].X:=11; Region1[44].Y:=191; <BR>Region1[45].X:=10; Region1[45].Y:=190; <BR>Region1[46].X:=9; Region1[46].Y:=189; <BR>Region1[47].X:=8; Region1[47].Y:=188;<BR>Region1[48].X:=8; Region1[48].Y:=187; <BR>Region1[49].X:=7; Region1[49].Y:=186;<BR>Region1[50].X:=7; Region1[50].Y:=184;<BR>Region1[51].X:=6; Region1[51].Y:=183; <BR>Region1[52].X:=6; Region1[52].Y:=12;<BR>Region1[53].X:=7; Region1[53].Y:=11;<BR>Region1[54].X:=7; Region1[54].Y:=10;<BR>Region1[55].X:=8; Region1[55].Y:=9; <BR>Region1[56].X:=9; Region1[56].Y:=8;<BR>Region1[57].X:=10; Region1[57].Y:=7;<BR>Region1[58].X:=11; Region1[58].Y:=7; <BR>Region1hrgn:=CreatePolygonRgn(Region1[0],59,2);<BR>SetWindowRgn(Handle, Region1hrgn, True);<BR>end;<BR><BR>◇[DELPHI]LISTVIEW实现隔行背景颜色<BR>procedure Tform1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;<BR>Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;<BR>var DefaultDraw: Boolean);<BR>begin<BR>if item.Index mod 2 = 1 then<BR>begin<BR> sender.Canvas.Brush.Color:=clYellow;<BR> end<BR>  else<BR>   sender.Canvas.Brush.Color:=clwhite;<BR>end;<BR><BR>◇[DELPHI]判断机器是否网络状态<BR>uses WinInet;<BR>procedure Tform1.Button1Click(Sender: TObject);<BR>function GetOnlineStatus : Boolean;<BR>var ConTypes : Integer;<BR>begin<BR>  ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;<BR>  if (InternetGetConnectedState(@ConTypes, 0) = False)<BR>   then Result := False<BR>   else Result := True;<BR>end;<BR>begin<BR>if not GetOnlineStatus then ShowMessage('Not Connected');<BR>end;<BR><BR><BR>◇[DELPHI]窗体渐渐出现<BR>AnimateWindow(Handle,1000,AW_CENTER);<BR>//在窗体创建事件中<BR><BR>◇[DELPHI]制作竖式菜单图片的关键代码<BR>ONDrawItem事件<BR>begin<BR>acanvas.Draw(0,2,image1.picture.bitmap);  anvas.TextOut(arect.left+image1.picture.bitmap.width+2,arect.top,tmenuitem(sender).caption);<BR>end;<BR><BR>◇[软件开发]目前几个热门开发工具含义<BR>Borland Enterprise Studio, Java Edition 是一个完整的电子商务开发平台,能够加速 <BR>J2EE架构的电子商务应用系统投向市场的周期。<BR>Borland Enterprise Studio提供了完整的应用程序开发周期解决方案,<BR>全面集成业界领先的Java 应用设计、开发和过程管理解决方案。<BR>包含以下技术: <BR>Borland  JBuilder:市场份额居首位的 Java 开发工具  <BR>Borland  AppServer:企业级 J2EE 应用服务器 <BR>Rational Rose Modeler 2001:世界领先的可视化建模工具 <BR>Rational Rose with JBuilder integration:建立在 Rose 模型和 JBuilder 应用程序之间的双向引擎 <BR>Rational Unified Process:最先进的软件开发管理思想和工具 <BR><BR>◇[软件开发]Rational的工具集的功能解释<BR>Rational Suite是Rational公司开发的一套为协助软件开发者进行软件开发的协<BR>助工具套件,主要由以下几个软件构成(中文译名按Rational中国代理翻译):<BR>Rational Unified Process<BR>Requisite Pro需求管理工具(整个开发过程)<BR>Clear Case配置管理工具(整个开发过程,包括版本管理、进程控制)<BR>Clear Quest变更请求管理工具(整个开发过程)<BR>SoDA自动文档管理工具(整个开发过程)<BR>ROSE可视化建模工具(建立软件模型,进行正向、逆向软件工程[engineering])<BR>Robot(软件测试用,通过Script自动模拟输入输出)<BR>TestFactory(软件测试用)<BR>Pure Coverage(测试时用,能自动检查那些代码没有被测试)<BR>Purify(测试时用,检查运行时内存错误)<BR>Quantify(性能检测工具,查出系统瓶颈以便改进运行速度)<BR>LoadTest<BR>Performance Architect <BR>面向不同的用户,Rational把以上的软件打成不同的开发包: <BR>Analyst Studio 主要面向系统分析员<BR>Development Studio 主要面向软件开发者<BR>Test Studio 主要面向测试工作者<BR>Performance Studio<BR>Enterprise 主要面向企业 <BR><BR>◇[软件开发]除rose以外UML设计工具<BR>国内常见:<BR>1、Visual Modeler——微软的,安装Visual Studio就有,只是功能有点简单;<BR>2、Rational Rose2000——Rational公司的,不用说啦,你嫌贵;<BR>3、Paradigm Plus——CA公司的,太平洋公司代理,和Rose差不多具有强大的功能,只是Rational别的支持系统(如配置管理、测试)就不和他兼容了;<BR>4、PlayCase——中科院沈阳研究所的,免费(强烈推荐试一试,因为它同时支持IDEF,也支持中国的MIS系统的要命的步骤:组织结构图——业务结构);<BR>5、Viso2000——也是微软的了,价格也不算太贵,不过用来做软件有点麻烦</P>

无名游客 发表于 2006-10-29 07:41

经典啊<BR>谢谢楼主

菜鸟上路 发表于 2006-10-29 19:52

uses shellapi;<BR>copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);<BR>这条语句的targer.txt文件是复制在哪个目录下啊??

ty2 发表于 2006-11-13 13:31

<P>楼主涉猎好广泛呀!</P>
<P>请问能不能发些类的属性及方法方面的资料来看看呀?</P>
<P>谢谢了!</P>

海心浮云 发表于 2007-6-3 19:20

<P>好多,谢谢啦</P>

scutSolo 发表于 2008-2-20 23:57

楼主好人啊

这么好的楼主
不服不行

chb592657370 发表于 2008-5-19 14:01

挺详细啊,Copy下来学习了。谢谢楼主,[em14]

hczsea 发表于 2008-7-1 17:29

强人啊。。。。。。。。

快影 发表于 2008-7-2 19:46

精华啊..[tk05]

ninu 发表于 2008-7-2 20:05

太NB了,顶

mp3aaa 发表于 2008-7-5 09:49

好不错

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.