999科技
Would you like to react to this message? Create an account in a few clicks or log in to continue.

电脑入门级之新人199问

向下

电脑入门级之新人199问 Empty 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:51 am

1,Q:怎样把别人网页上的背景音乐保存下来?
A:浏览该网页后,在你的 Windows\Temporary Internet Files 文件夹下可以找到该背景音乐的缓存文件,拷贝出来即可使用。如果还是找不见该文件,可以打开网页的源文件,找到音乐文件的 URL 路径,用“蚂蚁”等 FTP 软件进行下载。
2,Q:避免有人从你分帧的主页的帧中径直进入网站,而不是从 index.htm 中进入?
A:在帧中的网页的〈head〉〈/head〉之间加入以下脚本代码:
〈Script language="JavaScript"〉
if (top==self)
self.location.href="index.htm";
〈/Script〉
这样,当有人从帧中进入网站时,就会自动重定向到主页文件 index.htm。
3.Q:怎样防止别人把你的网页放到框架里?
A:因为框架(frame)的缘故,有许多人把别人的网页放置到自己的框架里,使之成为自己的一页。如果你要防止别人这样做,可以加入下列 JavaScript 代码即可,它会自动监测,然后跳出别人的框架。
〈Script language="javascript"〉   
if (self != top)
top.location = self.location;
〈/Script〉
4,Q:怎样在 FrontPage2000 中加入 Flash 动画?
A:在 FrontPage2000 中,点击[插入]->[高级]->[插件],在弹出的窗口中,设置一下 Flash 文件的大小及其它信息,确定即可。
5,Q:怎样在网页中加入注释?    
A:在共同网页开发中,加入注释是防止分工被搞混淆或者注释某段代码特殊的含义,加入注释的格式是:    
〈!-[注释内容…]--〉
6,Q:怎样测试浏览器并自动装入所需要的网页?
A:目前微软和网景的浏览器并不能完全兼容所有网页,有的网页在某种浏览器中非常漂亮, 而用其它浏览器查看时却一团糟。如果你需要测试浏览器,可以加入以下 JavaScript 代码使浏览器自动装入所需要的网页:  
〈script LANGUAGE="JavaScript"〉  
function TestBrowser()  
{  
ie = ((navigator.appName=="Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 3 ))  
ns = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 3 ))  
if (ns) { setTimeout("location.href="ns.htm"",10); }   
else {setTimeout("location.href="ie.htm"",10); }  
}    
〈/script〉
7,Q:怎样让链接没有下划线?
A:只要在〈Head〉〈/Head〉中加入以下代码,所有链接就都没有下划线了:  
〈style type="text/css"〉
〈!--
a {text-transform:none;text-decoration:none;}
a:hover {text-decoration:underline}
--〉
〈/style〉。
8,Q:怎样在网页中加入 E-mail 链接并显示预定的主题?
A: 〈A href="mailto:Emailhost@263.net?subject=主题"〉……〈/a〉
9,Q:怎样让网页的背景图像不滚动?    
A: Internet Explorer 浏览器支持一个 Body 属性 bgproperties,它可以让背景不滚动:
〈Body Background="图片文件" bgproperties="fixed"〉
10,Q;怎样定义网页的关键字?
A:在网页中加入关键字,可以供某些搜索站台机器人使用,它们会利用该关键字为你的网站做索引, 这样,当别人用关键字搜索网站时,如果你的网页包含该关键字,那么就可以被列出了。定义本网页关键字,可以在〈Head〉〈/Head〉中加入如下代码:  
〈meta name="Keywords" content="china,enterprise,business,net"〉   
Content 中所包含的就是关键字,你可以自行设置。   
这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的排行位置,如:
〈meta name="Keywords" content="china,china,china,china"〉
11,Q:怎样隐藏在状态栏里出现的链接信息?
A:大家知道,当你指向一个链接时,该链接的信息就会出现在浏览器的状态栏里, 如果需要隐藏它,可以本链接中做如下设置:
〈a href="http://zhanghing.yeah.net" onMouseOver="window.status="none"; return true"〉链接〈/a〉
12,Q:怎样在网页中加入多媒体播放?
A:有些多媒体文件无需其他程序就可以播放, 而有许多多媒体文件需要外部程序才能播放。如果浏览器没有安装这种外部程序,那么浏览器会自动去下载。 要加入多媒体格式,可加入如下代码:  
〈EMBED SRC="test.ram" AUTOSTART="TRUE" LOOP="3" WIDTH="80" HEIGHT="30"〉
13,Q:怎样在网页中加入电子邮件表单提交?
A:表单提交需要 CGI 程序的支持,但也可以利用 E-mail 提交,当你设计好表单后, 把 Action 内容加入邮件地址即可,例如:
〈form method="POST" action="mailto:zhangking@263.net" ENCTYPE="text/plain"〉
……
〈/form〉
14,Q:用 Word 作为 Html 编辑器产生的代码比较冗长,怎么优化?
A:可以用网页制做软件 Dreameweaver3.0 进行优化。
15,Q:IE5.0 的部分快捷键:
A:打开查找功能:Ctrl+F
关闭浏览器窗口:Ctrl+W
打开地址栏下拉列表框:F4
刷 新:F5
将当前Web页保存到收藏夹列表:Ctrl+D
打开当前 IE 窗口的一个拷贝:Ctrl+N
停止下载当前网页:Esc
光标迅速移动到网页的开头:Home
光标迅速移动到网页的尾部:End
打开新的地址键入窗口:Ctrl+O
打开收藏夹:Ctrl+I
打开历史记录文件夹:Ctrl+H
打开浏览器设定的默认主页:Alt+HOME
16,Q:网页上的图形格式:
A:图形的格式千奇百怪,但是一般 WWW 浏览器支持的图形格式只有 .gif 和 .jpg(.jpe),这两种都是经过压缩的图形文档。所以文件较小,适合在网络上传送。如果你的图形是别的格式, 则必须使用图形处理软件来将其转存成 .GIF 或 .JPG 的图形格式。但到底该用那一种图形格式呢? 先看看下面的比较: GIF 格式 JPEG 格式
压缩比例 较小 从大到小有四种选择
最多支援的颜色 256色 全彩(16百万色)
渐显功能(“隔行”方式) GIF89a有 无
背景透明功能 GIF89a有 无
动画 GIF89a有 无
  
结论是:比较大或颜色较多的图形就用 .JPG 的格式, 比较小或颜色较少, 而且需要有特殊功能的图,就用 .GIF 格式。注意:.GIF 还分为 GIF87a 和比较新的 GIF89a 两种格式,一些特殊的功能(像透明背景) 则是 GIF89a 才有的。当你真的无从选择的时候,就干脆分别储存成两种图形格式,看看那个文件比较小,就用那一个。
将 Gif 文件保存成“隔行”方式:在 Photoshop 中,保存时选择“Interlaced”。
将 jpg 文件保存成“逐级”方式:在 Photoshop 中,保存时选择“Progressive”。这样,图形显示时将由模糊逐渐变得清晰起来。
17,Q:表格中嵌套〈Form〉标签时,换行的取消:
A:在网页制做中,当表格和〈Form〉〈/Form〉标签嵌套时,如果像如下的形式:
〈table border=1〉 〈tr〉 〈td〉 〈Form〉 〈input name= size=〉 〈input type=button
value=Test〉 〈/Form〉 〈/td〉 〈/tr〉 〈/table〉
那么在〈Form〉构造出的文本框下会有一个空行,非常影响版面的编排。 而只要把〈/Form〉放到表格标签〈/td〉、〈/tr〉或〈/table〉的外边(如下),则问题就解决了。
〈table border=1〉
〈tr〉 〈td〉 〈Form〉 〈input name= size=〉 〈input type=button value=Test〉 〈/td〉
〈/Form〉 〈/tr〉 〈/table〉

18,Q:什么是 ActiveX 控件?
A:Microsoft ActiveX 控件是由软件提供商开发的可重用的软件组件。使用 ActiveX 控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。例如,StockTicker 控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。
  现在,已有 1000 多个商用的 ActiveX 控件。开发控件可以使用各种编程语言,如 C,C++,下一代的Microsoft Visual Basic,以及微软公司的 Visual Java 开发环境 Microsoft Visual J++。ActiveX 控件一
旦被开发出来,设计和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX 控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程
序的设计。
  IE3.0 是第一个在网页中支持 ActiveX 控件的网络浏览器。在 Mosaic 和 Netscape Navigator 中也可以使用 ActiveX plug-in for Netscape 显示 ActiveX 控件(参见网址 http://www.ncompasslabs.com)。
19,Q: Netscape Navigator 可以显示 ActiveX 控件吗?
A:可以,在 Netscape Navigator 中可以使用 ActiveX plug-in for Netscape 显示 ActiveX 控件。在Ncompass 实验室的网址 http://www.ncompasslabs.com/ 上可以得到测试版的 plug-in。
20,Q:现在有哪些工具支持使用 ActiveX 控件进行网页开发?
A:使用 ActiveXControlPad(详见http://www.microsoft.com/workshop/author/cpad/),开发人员可以在HTML 网页中方便地插入 ActiveX 控件。按照http://www.microsoft.com/workshop/author/cpad/tutorial-f.htm
网址上的 ActiveX Control Pad 教程,开发人员可以很方便地学习使用 ActiveX ControlPad。SoftQuad 公司的 HoTMetaL Pro 也支持在 HTML 网页上使用 ActiveX 控件。以后,微软公司及其第三方软件供应商还将推出很多支持使用 ActiveX 控件进行网页制作的网络制作工具。
21,Q:只有程序员才能使用 ActiveX 控件吗?
A:了解脚本语言,比如说 Visual Basic Scripting Edition(VBScript) 或 JavaScript,自然对使用ActiveX 控件非常有帮助。但也并非一定要有这样的程序开发基础。对于有些控件来说,需要写一定数量的脚本程序,才能集成到网页中,但大多数 ActiveX 控件却不需要这样。使用 ActiveX Control Pad,即使是非程序开发人员也可以通过简单的选中和点击将很多控件插入网页。
22,Q:在创建了包含 ActiveX 控件的网页后,如果用户在自己的机器上浏览该网页,控件是如何在用户终端机上安装和显示的?
A:当 IE3.0 遇到含有 ActiveX 控件(或复合控件)的网页时,首先检查用户的本地系统注册,察看该组件是否已经安装在本地机上了。如果该组件已经在本地机上,IE3.0 显示该网页并激活控件。如果控件还未在用户本地机上安装,IE3.0 将自动地根据开发者创建网页时的地址定义,从网上找到此控件,并将它安装到本地机上。
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:52 am

23,Q:如何在网页上定义一个地址,使用户访问网页时,控件可以自动下载到用户的计算机上?
A:网页开发者可以通过给控件设置 CODEBASE 属性提供上述信息。使用 ActiveX Control Pad 时,在 ObjectEditor 中,可以看见一个属性表,开发者可以很方便地利用该表设置属性。通过设置属性,可以定义 URL 地址或地址集,通过地址可以在 Internet 上找到并下载控件。IE3.0 正是利用这些地址信息,定位控件并自动下载组件的。下载之后,网页就出现在本地机上了。在 1996 年 7 月的 Microsoft Systems Journal 上,“Safe Web Surfing with the Internet Component Download Service”一文详细论述了整个信息定位及下载过程。需要一提的是,许多 Microsoft 提供的控件(例如 HTML Layout Control)不需要 CODEBASE 设置,因为通过 ActiveX 对象索引(ActiveX Object Index)就可以基于 CLSID(控件唯一标识符)自动找到并定位控件。
24,Q:ActiveX 组件下载时,是否通知用户?
A:是的。当一个组件需要下载时,IE 会缺省地显示一个消息框,通知用户将要开始下载。用户可以选择终止下载或继续下载。如果控件做过数字签名,会提供一份数字认证书, 其中包括提供该控件的软件供应商名字,以及确认该控件未被破坏的有关信息。软件开发者在开发控件时可以做数字签名。签名信息由控件本身携带, 因此在下载之前,会自动显示数字验证书,在网页上使用该控件的用户不需要做任何开发工作。
25,Q:ActiveX 控件下载后,放在什么位置?
A:在缺省情况下,控件下载后要放在 \windows\Downloaded Program Files 目录下的 ActiveX 控件高速缓存中。
26,Q:如何对待新创建的新版本控件? 如果用户计算机上已经有了老板本的控件 IE 如何知道应该下载新版本的控件?
A:I3.0 中的组件下载服务(Component Download Service)提供了版本控制功能,使用此项功能,新版本的控件会被自动检测出来,并可自动下载。在1996 年 7 月的 Microsoft Systems Journal 杂志上,“Safe Web Surfing with the Internet Component Download Service”一文 详细论述了整个版本控制过程。
27,Q:ActiveX 控件是否有许可权问题? 用户下载控件之后能否在自己的网页上使用 ActiveX 控件?
A:ActiveX 控件提供一套完整的保护机制,可以防止未经许可的用户在网页上使用 ActiveX 控件。到目前为止,已经有一些开发工具支持这套机制,例如 VB、Ms Access、和 IE。现有的控件授权许可证机制有两种许可形式:开发许可证和运行使用许可证。开发许可证允许许可证的持有者使用控件,利用 VB,ActiveX ControlPad, 以及其它有关的开发工具,从事以开发为目的活动。运行使用许可证只允许许可证的持有者在已有的应用或网页中显示控件,不允许将控件插入有关工具中,用于开发目的活动。支持许可证机制是独立控件开发上的工作。有些控件开发商选择了不支持许可证机制的开发策略,因此对任何用户来说,他们开发的控件一旦被安装到本地机上,就可以用于开发。另一些控件开发商只提供免费的运行许可证,而在提供开发许可证时需要收费。需要在网上使用控件的用户,应该详细地阅读控件开发商提供的许可证协议,以确定自己使用控件的权限。
28,Q:为什么有些控件,甚至包括有些 VB4.0 自带的 ActiveX 控件,在网页上都无法用 IE 显示?
A:包括 VB4.0 中某些控件在内的许多控件都提供了许可证机制。要在网上使用这些控件必须取得相应的运行使用许可证,并将相应的许可证文件放在网页中,否则,在用户终端机上将无法显示该控件。对于某一控件来说,只有控件的合法开发者,才拥有为该控件进行“运行许可权”授权的权利。 欲知在网页中获得控件运行许可权的详细过程, 请参见 ActiveX SDK 文档中有关许可证控制部分(在新的ActiveX Control Pad FAQ 中,还有一个具体例子)。 值得一提的是,Microsoft 及其第三方合作伙伴也在网上提供了大量的具有免费使用权许可证的 ActiveX 控件。在网页中使用这些控件时,不需要提交使用权许可证文件。
29,Q:HTML Layout 控件如何增强了使用 ActiveX 控件开发网页的能力?
A:HTML Layout 控件支持由 W3C 公布的扩展 HTML,允许在网页上精确定位对象。原先,HTML 不允许网页开发者使用 X、Y 坐标在网页上精确定位元素,也不允许叠盖对象。新增加的的“2-D”布局功能,使开发者可以完成更复杂的设计,为用 户开发出更好的网络应用提供了支持。通过实现新的 W3C HTML 扩展,HTML Layout 控件为在 IE 中显示的 ActiveX 控件提供了更先进的布局选项。HTML Layout 控件是 IE3.0 的新增组件,并被集 成到 IE 完全安装版中。(HTML Layout 控件也是 ActiveX ControlPad 的一部分,可通过 MSDN 库安装。由于提供了基于 WYSIWYG(所见即所得)页的全帧编辑器,ActiveX Control Pad 可以与 HTML Layout Control 相结合使用。 这使得用 ActiveX 控件开发先进的二维风格的 HTML 设计变得更加简单。
30,Q:怎样在网页上显示多少人在线(on-line)?
A:只要你的网站支持 ASP,那么在网站的根目录中放置以下内容的 Global.asa 文件,问题就解决了。将语句 〈% response.write "现在有 " & Application("WhosOn") & " 人在线。" %〉 放在你的 ASP 网页中用于显示在线人数。
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Session.Timeout=1
Application.Lock
Application("WhosOn") = 0
Application.UnLock
End Sub

Sub Session_OnStart
Application.Lock
Application("WhosOn") = Application("WhosOn") + 1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("WhosOn") = Application("WhosOn") - 1
Application.UnLock
End Sub
</SCRIPT>

31,Q:用样式表(CSS)定制表格边框:
A:
〈Table border=0 id=tb1 style="border:3px solid red"〉
〈tr〉〈td〉用样式表(CSS)定制表格的例子〈/td〉〈/tr〉
〈/Table〉
32,Q:闪亮的表格边框:
A:
<table border="0" width="280" id="tb1" style="border:3px solid green">
<tr>
<td>
制做闪亮的表格边框!
</td>
</tr>
</table>
<script language="JavaScript">
<!-- 这段脚本放在表格的后面
function fla***()
{
if (!document.all) return
if (tb1.style.borderColor=="green")
tb1.style.borderColor="red"
else
tb1.style.borderColor="green"
}
setInterval("fla***()", 400)
//-->
</script>
33,Q:JavaScript 实现的简单时钟:
A:
(1)在〈Head〉〈/Head〉之间放置以下脚本:
<script language="JavaScript">
<!--
var timerID = null;
var timerRunning = false;
var id,pause=0,position=0;
function stopclock ()
{ if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function showtime ()
{
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue = "" + ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
timeValue += (hours >= 12) ? " P.M." : " A.M."
document.clock.face.value = timeValue;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
function startclock ()
{ stopclock();
showtime();
}
//-->
</script>
(2)在〈Body〉属性中加 onLoad="startclock()"
(3)在〈Body〉〈/Body〉中间加
<form name="clock" onSubmit="0">
<div align="center">
<center><p><input type="text" name="face" size="13" value></p></center>
</div>
</form>
即可。
34,Q:自动滚动屏幕文字:
A:
<Script Language="JavaScript">
var position = 0;
function scrollit()
{
if (position != 640 ){
position++;
scroll(0,position);
clearTimeout(timer);
var timer=setTimeout("scrollit()",25);
timer;
}
}
</Script>
以上脚本加在〈Head〉〈/Head〉中间,再在〈BODY〉属性中加 Onload="scrollit()"。
35,Q:“下雨”JavaScript 脚本:
A:将以下脚本放在〈Body〉〈/Body〉中间即可:
<Script Language="JavaScript">
<!-- Begin
var no = 50;
var speed = 1;
var ns4up = (document.layers) ? 1 : 0;
var ie4up = (document.all) ? 1 : 0;
var s, x, y, sn, cs;
var a, r, cx, cy;
var i, doc_width = 800, doc_height = 600;
if (ns4up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
else
if (ie4up) {
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
x = new Array();
y = new Array();
r = new Array();
cx = new Array();
cy = new Array();
s = 8;
for (i = 0; i < no; ++ i) {
initRain();
if (ns4up) {
if (i == 0) {
document.write("<layer name=\"dot"+ i +"\" left=\"1\" ");
document.write("top=\"1\" visibility=\"show\"><font color=\"blue\">");
document.write(",</font></layer>");
}
else {
document.write("<layer name=\"dot"+ i +"\" left=\"1\" ");
document.write("top=\"1\" visibility=\"show\"><font color=\"blue\">");
document.write(",</font></layer>");
}
}
else
if (ie4up) {
if (i == 0) {
document.write("<div id=\"dot"+ i +"\" style=\"POSITION: ");
document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
document.write("visible; TOP: 15px; LEFT: 15px;\"><font color=\"blue\">");
document.write(",</font></div>");
}
else {
document.write("<div id=\"dot"+ i +"\" style=\"POSITION: ");
document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
document.write("visible; TOP: 15px; LEFT: 15px;\"><font color=\"blue\">");
document.write("’</font></div>"); //设定雨点的字符
}
}
}
function initRain() {
a = 6;
r[i] = 1;
sn = Math.sin(a);
cs = Math.cos(a);
cx[i] = Math.random() * doc_width + 1;
cy[i] = Math.random() * doc_height + 1;
x[i] = r[i] * sn + cx[i];
y[i] = cy[i];
}
function makeRain() {
r[i] = 1;
cx[i] = Math.random() * doc_width + 1;
cy[i] = 1;
x[i] = r[i] * sn + cx[i];
y[i] = r[i] * cs + cy[i];
}
function updateRain() {
r[i] += s;
x[i] = r[i] * sn + cx[i];
y[i] = r[i] * cs + cy[i];
}
function raindropNS() {
for (i = 0; i < no; ++ i) {
updateRain();
if ((x[i] <= 1) || (x[i] >= (doc_width - 20)) || (y[i] >= (doc_height - 20))) {
makeRain();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
document.layers["dot"+i].top = y[i];
document.layers["dot"+i].left = x[i];
}
setTimeout("raindropNS()", speed);
}
function raindropIE() {
for (i = 0; i < no; ++ i) {
updateRain();
if ((x[i] <= 1) || (x[i] >= (doc_width - 20)) || (y[i] >= (doc_height - 20))) {
makeRain();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
document.all["dot"+i].style.pixelTop = y[i];
document.all["dot"+i].style.pixelLeft = x[i];
}
setTimeout("raindropIE()", speed);
}
if (ns4up) {raindropNS(); }
else
if (ie4up) {raindropIE(); }
// End -->
</Script>
36,Q:“地震”JavaScript 脚本:
A:将以下脚本放在〈Body〉〈/Body〉中间即可:
<script language="JavaScript1.2">
<!--
function shake(n)
{
if (window.top.moveBy)
{for (i = 10; i > 0; i--)
{for (j = n; j > 0; j--)
{window.top.moveBy(0,i);
window.top.moveBy(i,0);
window.top.moveBy(0,-i);
window.top.moveBy(-i,0);
}
}
}
}
//-->
</script>
<form><input onclick="shake(2)" type="button" value="地震啦!"></form>
37,Q:一个用 JavaScript 实现的简陋的计算器:
A:全部代码如下:
<html>
<head>
<script language="JavaScript">
<!--
function compute(obj)
{obj.expr.value = eval(obj.expr.value)}
var one = '1'
var two = '2'
var three = '3'
var four = '4'
var five = '5'
var six = '6'
var seven = '7'
var eight = '8'
var nine = '9'
var zero = '0'
var plus = '+'
var minus = '-'
var multiply = '*'
var divide = '/'
var decimal = '.'
function enter(obj, string)
{obj.expr.value += string}
function clear(obj, string)
{obj.expr.value = ''}
//-->
</script>
</head>
<body>
<form name="calc">
<table border=1>
<tr align="right">
<td colspan=4><input name="expr" action="compute(this.form)"></td>
</tr>
<tr align=center>
<td><input type="button" value=" 7 " onClick="enter(this.form, seven)"></td>
<td><input type="button" value=" 8 " onClick="enter(this.form, eight)"></td>
<td><input type="button" value=" 9 " onClick="enter(this.form, nine)"></td>
<td><input type="button" value=" / " onClick="enter(this.form, divide)"></td>
</tr>
<tr align=center>
<td><input type="button" value=" 4 " onClick="enter(this.form, four)"></td>
<td><input type="button" value=" 5 " onClick="enter(this.form, five)"></td>
<td><input type="button" value=" 6 " onClick="enter(this.form, six)"></td>
<td><input type="button" value=" * " onClick="enter(this.form, multiply)"></td>
</tr>
<tr align=center>
<td><input type="button" value=" 1 " onClick="enter(this.form, one)">
<td><input type="button" value=" 2 " onClick="enter(this.form, two)">
<td><input type="button" value=" 3 " onClick="enter(this.form, three)">
<td><input type="button" value=" - " onClick="enter(this.form, minus)"></td>
</tr>
<tr align=center>
<td colspan=2><input type="button" value=" 0 " onClick="enter(this.form, zero)">
<td><input type="button" value=" . " onClick="enter(this.form, decimal)"></td>
<td><input type="button" value=" + " onClick="enter(this.form, plus)"></td>
</tr>
<tr align=center>
<td colspan=2><input type="button" value=" = " onClick="compute(this.form)"></td>
<td colspan=2><input type="button" value=" AC " size= 3 onClick="calc.expr.value = ''"></td>
</tr>
</table>
</form>
</body>
</html>
38,Q:在网页上实现“预览图”:
A:网页制做时,大的图片会消耗较长的下载时间,为了不使浏览者失去耐心,可以采用“预览图”(low source)的办法,即先下载一个“low source”,然后再下载真正需要显示的图片。在 Html 文档中标注“low source”的方法为:〈img src="需要显示的图片" lowsrc="预览图" width="x" height="y"〉(其中 width 和 height 是需要显示的图片的宽度和高度。如果不加 width 和 height 属性,浏览器视为以较小图片作为长宽尺寸。)
实现“预览图”还有一个方法,就是将预览图做成一个链接,如果用户愿意,可以点击它,再观看真正的图片,格式是:
<a href="需要显示的图片"><img src="预览图" width=x height=y border=0></a>
39,Q:闪亮的链接:
A:
<a href="linkto" name="link1" style="text-decoration:underline;color:green;">闪亮的链接</a>
<script language="JavaScript">
<!-- 这段脚本放在链接的后面
function fla***()
{
if (!document.all) return
if (link1.style.color=="green")
link1.style.color="red"
else
link1.style.color="green"
}
setInterval("fla***()", 400)
//-->
</script>
40,Q:在网页中添加“添加到收藏夹”“设为首页”功能(似乎只能在 IE5.0 以上版本使用?):
A:添加到收藏夹:〈a href="javascript:window.external.addFavorite('http://链接','说明');"〉添加到收藏夹〈/a〉
设为首页:〈a href=# onclick=this.style.behavior='url(#default#homepage)';this.setHomePage('http://链接');〉设为首页〈/a〉
41,Q:定制浏览器地址栏前的小图标:
A:在网页的〈head〉〈/head〉间加入以下语句:〈link rel="shortcuticon" href="http://…/icon.ico"〉即可。其中 icon.ico 为 16x16 的图标文件,颜色不要超过 16 色。
42,Q:给超链接、表单、表格等网页元素加上动态说明:
A:网页中的图片可以用〈img alt="说明"〉 加上注释,其它元素页可以加上注释说明,方法是用 title 属性。如:
〈a href="" title="说明"〉;〈input title="说明"〉;〈table title="说明"〉…〈/table〉
43,Q:用曾叠式样式表(css)定制按钮的鼠标形状(cursor):
A:<input type="button" style="cursor:hand;">,这样,当鼠标移到按钮上时,会变成一个“手”形,和移到超级链接上一样。cursor 后的参数很多,列在下边:
hand 手型
crosshair 十字型
text 移动到文本上的那种效果(I 形)
wait 等待的那种效果(沙漏)
default 默认效果
help 问号
e-size 向右的箭头
ne-resize 向右上的箭头
n-resize 向上的箭头
nw-resize 向左上的箭头
w-resize 向左的箭头
sw-resize 向左下的箭头
s-resize 向下的箭头
se-resize 向右下的箭头
auto 由系统自动给出效果
44,Q:在网页页面上显示 html 代码:
A:要在 html 代码中放置 html 文本显然是不行的,因为你放在 html 中的 html 文本会相互混淆起来,产生严重的错误。如果 html 文本很少,可以将其中的〈 〉用全角的〈 〉代替;如果文本很长,将它门放在标签〈xmp〉〈/xmp〉中,这是专门用来显示 html 文本的标签。与此相关的一个问题是:有时从网页上“挖”下来的 html 代码,放在 html 文件中浏览时,显示的全是 html 代码,就是因为他们制做网页时将标签的大于号、小于号用全角的〈、〉代替了。
45,Q:加速网页加载的技巧:
A:当浏览者停留在一个网站的主页上时,其它页面的下载是停止的,这样时间就白白浪费了。我们可以将主页分成两个帧,一个帧显示主页,将另一个帧隐藏后“偷偷”地下载其它页面,在硬盘里缓存起来。这样,当浏览者浏览到别的页面时,浏览器就是从硬盘里调用数据了。
46,Q:让网页的背景图片动起来(Vbscript):
A:
<SCRIPT language="VBScript">
dim c,numgc
c=-100000
numgc=document.body.sourceIndex
sub SF
c=c+2
Document.all(numgc).style.BackgroundPosition="0 " & c
id=SetTimeOut("SF",64,"VBScript")
end sub
SF
</SCRIPT>
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:53 am

47,Q:用 JavaScript 控制浏览器窗口大小:
A:有时候,我们需要控制显示窗口的大小,这当然能够通过点击窗口右上角的控制按钮来实现。但是,能否在页面中通过链接来实现呢?答案是:能!请看下面的代码:
<SCRIPT LANGUAGE="JavaScript">
function Minimize()
{
window.innerWidth = 100;
window.innerHeight = 100;
window.screenX = screen.width;
window.screenY = screen.height;
alwaysLowered = true;
}
function Maximize()
{
window.innerWidth = screen.width;
window.innerHeight = screen.height;
window.screenX = 0;
window.screenY = 0;
alwaysLowered = false;
}
</SCRIPT>
<A HREF="javascriptnClick=Minimize()">Minimize</A>
<A HREF="javascriptnClick=Maximize()">Maximize</A>
  上面的代码包含 2 个函数,先来看看第 1 个。函数 Minimize 中使用 innerWidth 和 innerHeight 2 个命令在象素级别上控制窗口尺寸大小,这里将窗口设置为宽 100 高 100。然后,设置窗口的起始位置,定位大小为屏幕的宽和高,这样,使用 alwaysLowered 命令就将窗口缩小并移动到了屏幕的右下角。触发事件是一个 JavaScript 链接 〈A HREF="javascriptnClick=Minimize()"〉Minimize〈/A〉。同时,上述代码可以用于设置屏幕的任何分辨率。
  注意,当在页面上应用这个功能时,请将那 2 个触发事件的链接放置在页面的左上角,这样,当窗口缩小到右下角时,它们也不会消失。
48,Q:网页的定时转向和定时刷新?
A:在网页的 <Head></Head> 间加入 <meta http-equiv="refresh" content="10; url=http://……"> 就会使网页在 10 秒后自动转向到网址 http://…… 去。特殊情况是,如果没有 url=…… 一项,网页就会每隔 10 秒自我刷新一次 -- 最初的聊天室就使用了这种技术,但屏幕看起来有些闪烁感。
49,Q:上传主页的一个技巧:
A:如果你做主页时是假设网站的主文件为 index.htm,网页中的所有链接也默认主页为 index.htm。但当你上传主页时发现网站的主文件为 index.html,那么你是不是需要一个一个地去修改许多网页中的链接呢? NO! 这时你只要在网站建立一个 index.html 文件,其中放以下一条语句就可以了:
<meta http-equiv="refresh" content="0; url=index.htm">
那么,如果你做主页时假设网站的主文件为 index.html,而上传主页时发现网站的主文件为 index.htm 时怎么办呢? …… “To be,or not to be,this is a question.”
50,Q:在网页中实现下拉弹出菜单:
A:下拉弹出菜单用 Javascript 构造,原代码及效果见演示。
51,Q:为什么用 FrontPage 做的网页在有的网站上显示不正常?
A:如果用 FrontPage 做的网页使用了 FrontPage 扩展特性,且放在了用 Unix、Linux 建立的网站上,就会显示不正常,丢失一些特性。因为 FrontPage 扩展特性是基于 Windows 系列操作系统的。避免办法就是……“因噎废食”了。
52,Q:让 IE 浏览器的标题条文字动起来?
A:在网页的 <head></head> 之间加入以下 VbScript 脚本即可:
<Script language="vbscript">
msg="十万个为什么-计算机应用技巧大全"
l=len(msg)
i=l-3
sub movetitle()
title=right(msg,l-i)+left(msg,i)
top.document.title=title
i=(i+1) mod l
end sub
speed = 10 '毫秒
a=setInterval("movetitle()",speed)
</Script>
53,Q:网页中 IFRAME 帧的使用(在网页中构造小“窗口”方法之一):
A:用标签 <IFRAME></IFRAME> 可以在网页中构造小“窗口”,显示指定 URL 的网页,语法如下:
<IFRAME SRC="" width="500" height="200" marginwidth="0" marginheight="110" hspace="10" vspace="20" frameborder="0" scrolling="1">
</IFRAME>
(注1:可以用此法在网页中制作网页效果演示。
注2:相关知识:如果要在网页中开一个“窗口”,显示一段文本,可以使用:
<form>
<textarea name="S1" rows="高" cols="宽"></textarea>
</form>)
54,Q:在网页中构造小“窗口”方法之二: 使用 ActiveX 控件:
A:
<object id="browserIcons" classid="clsid:EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B" align="baseline" border="0" width="452" height="161">
<param name="Location" value="http://100000.home.sohu.com">
<param name="AlignLeft" value="0"><param name="AutoSize" value="0">
<param name="AutoSizePercentage" value="10">
<param name="AutoArrange" value="1">
<param name="NoClientEdge" value="1">
<param name="ViewMode" value="0">
</object>
55,Q:当鼠标移动到表格上时,表格背景色改变:
A:在网页的 <body></body> 之间放如下代码即可实现:
<script language="javascript">
<!--
function mOvr(src,clrOver)
{
if(!src.contains(event.fromElement))
{src.style.cursor='hand';
src.bgColor = clrOver;
}
}
function mOut(src,clrIn)
{
if(!src.contains(event.toElement))
{src.style.cursor='default';
src.bgColor=clrIn; }
}
function mClk(src)
{ //执行单元格中的链接
if(event.srcElement.tagName=='TD')
{src.children.tags('A')[0].click();}
}
//-->
</script>
<table border="1" align=center>
<tr>
<td align="middle" height="17" onclick="mClk(this);" onmouseout="mOut(this,'#0aac9d');" onmouseover="mOvr(this,'#a1bbe8');">
<a href="http://100000.home.sohu.com" target="_blank" class="nav">链接变色</a>
</td>
</tr>
<tr>
<td onmouseout="mOut(this,'#0aac9d');" onmouseover="mOvr(this,'#a1bbe8');">无链接变色</td>
</tr>
</table>
56,Q:打开网页时自动弹出欢迎窗口:
A:
<script language="JavaScript">
function Info()
{if(!confirm("这是一个自动弹出的欢迎窗口" + "\n\n欢迎光临\n\n你可以试着加上一些其它的信息。"+"\n\n请按确定进入本页\n"+
"\n按取消将返回上一页\n"))
history.go(-1);
return " "
}
document.writeln(Info()) //触发执行 Info() 函数
</script>
57,Q:鼠标触发网页的链接文字动态大小变化:
A:在网页的 <head></head> 之间加入以下样式表代码即可(免去了烦人的 Javascript 脚本):
<style type="text/css">
<!--
A:visited {text-decoration:none; font-size:9pt; font-family:新细明体}
A:hover {text-decoration:underline; font-size:15pt; font-family: 黑体; color:ffffff; background-color:rgb(01,221,66)}
-->
</style>
58,Q:为什么用 FrontPage 做的主页有时会显示为乱码?
A:看看主页的 <head></head> 之间是否有 <meta charset=gb2312> 字样,加上它就好了(它自动将 IE 浏览器的文字编码设置为“简体中文”。如果没有前述语句,则必须手动设置才能看清网页内容)。
59,Q:在网页上显示你是否 O'ICQ 在线:
A:在网页上加入 <img src=http://icon.tencent.com/9265822/s/ alt="On/Off O'ICQ"> 语句即可向浏览者显示你现在是否正连在 O'ICQ 上。其中 9265822 是 O'ICQ 号码,可以更换,s 换成 l 则显示大图标。还可以形如
<a href="http://search.tencent.com/cgi-bin/friend/user-show-info?ln=9365822">
<img src=http://icon.tencent.com/9265822/s/alt="On/Off O'ICQ">
</a>
来显示你的 O'ICQ 个人资料。
60,Q:将样式表(css)加到你的网页中的几种方法:
A:
(1)、将样式表置入 HTML 文件头部:
<STYLE TYPE="text/css">
<!--
H1 {color: green; font-family: impact}
P {background: yellow; font-family: courier}
-->
</STYLE>
(2)、将一个外部样式表定义文件链接到 HTML 文件上:
<HEAD>
<LINK REL=stylesheet href="mystyles.css" TYPE="text/css">
</HEAD>
文件 mystyles.css 的内容如下:
H1 {color:green; font-family:impact}
P {background:yellow; font-family:courier}
(3)、将一个外部样式表定义文件输入到 HTML 文件中:
<STYLE TYPE="text/css">
<!--
@import url(company.css);
H1 { color: orange; font-family: impact}
-->
</STYLE>
其中 company.css 文件内容如下:
H1{color:green; font-family:times}
P{background:yellow; font-family:courier}
(4)、将样式表加入到 HTML 文件行中:
如:<H1 STYLE="color: orange;font-family:楷体_gb2312>HTML中的样式表</H1>
(注意:如果一个网页中同时使用了以上 4 种方法,那么它们的优先级从高到低是 4-3-2-1。)
61,Q:自动显示网页的最后更新日期:
A:将以下代码放入网页中,会根据网页文件的存盘时间自动显示网页的更新日期:
<script>document.write(document.lastModified)</script>
62,Q:仿 Outlook2000 导航菜单
A:请参看示例……
63,Q:用 css 和 javascript 定制按钮
A:请参看示例……
64,Q:样式表单图片动画效果示范
A:请参看示例……
65,Q:数字时钟(示例一)
A:请参看示例……
66,Q::数字时钟(示例二)
A:请参看示例……
67,Q:网页中仿制“每日一贴”(Tip of day)示例
A:请参看本网站首页底部“$帮助”的制作方法 &Auml;下载原始代码
68,Q:网页中的滚动菜单示例:
A:请参看示例网页……
69,Q:用 Jsp 调用 oracle 的存储过程
A:假定存储过程名字为 sp_yourprocedurename,有两个参数
CallableStatement cstmt = con.prepareCall("{call sp_yourprocedurename(?,?}");
cstmt.registerOutparameter(2,java.sql.Types.FLOAT);
cstmt.setint(1,parameter1);
cstmt.execute();
out.println("rocedure output is :"+cstmt.getFloat(2));
70,Q:用 PHP 获得浏览器信息?
A:
GET /temp.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://199.199.199.5/index.php
Accept-Language: zh-cn,zh-tw;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: www.bingdu.org
Connection: Keep-Alive
Cookie: PHPSESSID=46bb38ce8d7b870dd704bca7ad6071ca
$var = getenv("$string");
$string 就是以下一些值了:
HTTP_ACCEPT //接收的数据类型。
HTTP_REFERER //引用地址
HTTP_USER_AGENT //流览器
HTTP_ACCEPT_LANGUAGE //流览器语言
HTTP_HOST //主机地址
HTTP_CONNECTION //连接状态
HTTP_COOKIE //COOKIE
71,Q:如何将一个表单同时提交到两个地方处理(以 PHP 为例)?
A:
<script language=javascript>
function dosubmit()
{window.open('first.php?var1='+window.form1.var1.value+'&var2='+window.form1.var2.value);
window.open('second.php?var1='+window.form1.var1.value+'&var2='+window.form1.var2.value);
return false;
}
</script>
<form name=form1 onsubmit="return dosubmit();">
<input name=var1>
<input name=var2>
<input type=submit>
</form>
72,Q:IE5.x 快捷操作技法大放送
A:
(一)、打印操作技巧
  1、要打印文档,用户可以将 Internet 快捷方式拖动到桌面的打印机图标上;
  2、要迅速打印 Web 页的某个框架,可右单击该框架,然后单击“打印”选项;
  3、用户可以打印出与 Web 页相连的所有链接的列表。在“打印”对话框中,单击“打印链接列表”;
  4、用户可以打印指定 Web 页上所链接的所有文档。在“打印”对话框中,单击“打印所有链接的文档”;
  5、要打印当前页或活动框架,请按 Ctrl+ P组合键。
(二)、地址栏操作技巧
  1、要显示用户在地址栏中键入过的 Internet 地址,请按 F4键;
  2、在地址栏中,按 Ctrl+ ← 组合键,就可以让光标以地址部分为单位迅速向后移动;
  3、在地址栏中,按 Ctrl+ → 组合键,就可以让光标以地址部分为单位迅速向前移动;
  4、用户可以在地址栏中键入收藏页的友好名称,然后在出现的自动完成列表中选择网页名称;
  5、要从地址栏中搜索,可在某单词或词语之前键入go, find,或?,然后按 Enter 键;
  6、按 Alt + D组合键,可以将光标移到地址栏中。
  7、 用户可以在地址栏中键入某个单词,然后按 Ctrl+ Enter 组合键,可在单词的两端自动添加 http://www. 和 .com。
(三)、工具菜单操作技巧
  1、要将主页更改为用户当前打开的网页,可单击“工具”菜单,单击“Internet 选项”,然后单击“使用当前页”按钮;
  2、若要通过删除临时文件来释放硬盘空间,则单击“工具”菜单,单击“Internet选项”,然后单击“删除文件”按钮;
  3、要更改 Web 页上链接的颜色,请单击“工具”菜单,单击“Internet选项”,然后单击“颜色”按钮;
  4、单击“工具”菜单,然后单击“Windows Update”,可以安装其他 Internet Explorer 组件;
  5、要调整存放 Internet 临时文件的硬盘空间,请单击“工具”菜单,单击“Internet选项”,然后单击“设置”按钮。
(四)、收藏夹操作技巧
 1、单击“收藏”菜单,然后单击“整理收藏夹”,可以将文件夹添加到收藏夹列表中;
  2、右键单击“收藏夹”或链接列表中的某快捷方式,然后单击“删除”,可以将其删除;
  3、要更改收藏站点的脱机属性,可右键单击收藏列表中的项目,然后单击“属性”;
  4、要筛选用户的计算机可以显示哪些 Web 站点,请单击“工具”菜单,单击“Internet 选项”,单击“内容”选项卡,然后单击“启用”。
(五)、窗口操作技巧
  1、按 F11 可以在 Internet Explorer 常规大小窗口和全屏幕模式之间切换;
  2、按 Ctrl+W 可以关闭当前窗口;
  3、按 Ctrl+N 可以新建窗口。
(六)、Web 操作技巧
  1、在某页上单击右键,然后单击“创建快捷方式”,就可以迅速创建该 Web 页的快捷方式并放在桌面上;
  2、要查看某 Web 页是如何编码的,可在该页上单击右键,然后单击“查看源文件”,即可获得某Web页的源编码;
  3、要放大或缩小 Web 页上的文字,单击“查看”菜单,然后单击“文字大小”。按 F5键刷新屏幕;
  4、要迅速将 Web 页保存到用户的收藏夹列表,请按 Ctrl+D组合键;
  5、单击“文件”菜单,指向“发送”,然后单击“电子邮件页面”,可以在电子邮件中发送 Web 页;
  6、Web 图片和背景可以做成美妙的桌面墙纸,只要右键单击用户想要的图片,然后单击“设置为墙纸;
  7、要保存网页或图片而不将其打开,请右键单击用户想要的链接,然后单击“目标另存为”;
  8、要迅速加载 Web 页,请单击“工具”菜单,单击“Internet选项”,再单击“高级”选项卡,然后关闭声音和图片;
  9、要查看会话过程中用户所键入的所有 Internet 地址链接,请单击地址栏右端的小向下箭头;
  10、用户可以为每个 Web 站点设置不同的安全级别,单击“工具”菜单,单击“Internet选项”,然后单击“安全”选项卡;
  11、要在 Web 页上搜索某单词或词组,请按 Ctrl+ F组合键,打开“查找”对话框;
  12、单击工具栏上的“历史”按钮,可以看到用户最近访问过的 Web 站点的列表;
  13、如果用户想了解如何使用 World Wide Web,请单击“帮助”菜单,然后单击“教程”;
  14、在某Web页上单击右键,然后单击“创建快捷方式”,就可以迅速创建该 Web 页的快捷方式并放在桌面上;
  15、按 F5 键刷新,可以保证用户正查看的 Web 页包含最新的内容;
  16、如果用户使用的电子邮件程序是 Microsoft Outlook 或 Outlook Express,那么用户就可以将 Internet 快捷方式拖动到电子邮件中;
  17、将指向 Web 页的快捷方式拖动到链接栏中,可以只单击一次就打开用户经常访问的 Web 页;
  18、要停止下载网页,请按 Esc 键;
  19、要取消 Web 页链接中的下划线,请单击“工具”菜单,单击“Internet选项”,然后单击“高级”选项卡。
73,Q:制作网页的目录式导航菜单
A:
(一)、把如下代码加入<head></head>区域中
<head>
<SCRIPT language=javascript>
<!--
function out()
{
if(window.event.toElement.id!="menu" && window.event.toElement.id!="link")
menu.style.visibility="hidden";
}
function out1()
{
if(window.event.toElement.id!="menu1" && window.event.toElement.id!="link")
menu1.style.visibility="hidden";
}
//-->
</SCRIPT>
</head>
(二)、把如下代码加入<body>区域中
<div id="back" onmouseout="out()" style="position:absolute;top:180;left:310;width:160;height:40;z-index:1;visibility:visible;">
<span id="menubar" onmouseover="menu.style.visibility='visible'">
<font color=red size=2>菜单
</span>
<div border=1 id="menu" style="position:absolute;top:15;left:0;width:50;height:10;z-index:2;visibility:hidden;">
<a id="link" href="rjxz.htm">软件下载</a>
<a id="link" href="yxxz.htm">有喜下载</a>
<a id="link" href="hjsj.htm">黄金书记</a>
<a id="link" href="mntk.htm">美女偷裤</a>
<a id="link" href="mp3.htm">MP3金曲</a>
<a id="link" href="flash.htm">FLASH</a>
</div>
</div>
<div id="back" onmouseout="out1()" style="position:absolute;top:180;left:370;width:160;height:40;z-index:3;visibility:visible;">
<span id="menubar" onmouseover="menu1.style.visibility='visible'">
<font color=red size=2>菜单
</span>
<div border=1 id="menu1" style="position:absolute;top:15;left:0;width:50;height:10;z-index:4;visibility:hidden;">
<a id="link" href="rjxz.htm">软件下载</a>
<a id="link" href="yxxz.htm">游戏下载</a>
<a id="link" href="hjsj.htm">黄金书籍</a>
<a id="link" href="mntk.htm">美女图库</a>
<a id="link" href="mp3.htm">MP3金曲</a>
<a id="link" href="flash.htm">FLASH动画欣赏</a>
</div>
</div>
74,Q:网页文字颜色的搭配技巧
A:对于做网页的初学者可能更习惯于使用一些漂亮的图片作为自己网页的背景,但是,浏览一下大型的商业网站,你会发现他们更多运用的是白色、蓝色、黄色等,使得网页显得典雅,大方和温馨。更重要的是,这样可以大大加快浏览者打开网页的速度。
  一般来说,网页的背景色应该柔和一些、素一些、淡一些,再配上深色的文字,使人看起来自然、舒畅。而为了追求醒目的视觉效果,可以为标题使用较深的颜色。下面是我做网页和浏览别人的网页时,对网页背景色和文字色彩搭配积累的经验,这些颜色可以做正文的底色,也可以做标题的底色,再搭配不同的字体,一定会有不错的效果,希望对大家在制作网页时有用。
  Bgcolor:″#F1FAFA″——做正文的背景色好,淡雅
  Bgcolor:″#E8FFE8″——做标题的背景色较好,与上面的颜色搭配很协调
  Bgcolor:″#E8E8FF″——做正文的背景色较好,文字颜色配黑色
  Bgcolor:″#8080C0″——上配黄色白色文字较好
  Bgcolor:″#E8D098″——上配浅蓝色或蓝色文字较好
  Bgcolor:″#EFEFDA″——上配浅蓝色或红色文字较好
  Bgcolor:″#F2F1D7″——配黑色文字素雅,如果是红色则显得醒目
  Bgcolor:″#336699″——配白色文字好看些
  Bgcolor:″#6699CC″——配白色文字好看些,可以做标题
  Bgcolor:″#66CCCC″——配白色文字好看些,可以做标题
  Bgcolor:″#B45B3E″——配白色文字好看些,可以做标题
  Bgcolor:″#479AC7″——配白色文字好看些,可以做标题
  Bgcolor:″#00B271″——配白色文字好看些,可以做标题
  Bgcolor:″#FBFBEA″——配黑色文字比较好看,一般作为正文
  Bgcolor:″#D5F3F4″——配黑色文字比较好看,一般作为正文
  Bgcolor:″#D7FFF0″——配黑色文字比较好看,一般作为正文
  Bgcolor:″#F0DAD2″——配黑色文字比较好看,一般作为正文
  Bgcolor:″#DDF3FF″——配黑色文字比较好看,一般作为正文
  浅绿色底配黑色文字,或白色底配蓝色文字都很醒目,但前者突出背景,后者突出文字。红色底配白色文字,比较深的底色配黄色文字显得非常有效果。
以上配色方案仅供参考。
75,Q:IFRAME 标签的属性参数
A:
<Iframe src="example.htm" width="300" heitht="100"></IFRAME>
example.htm 是被嵌入的页面,标签 <IFRAME> 还有一些可用的参数设置如下:
marginwidth:网页中内容在表格右侧的预留宽度;例如:marginwidth="20",单位是 pix,下同。
marginheight:网页中内容在表格顶部预留的高度;
hspace:网页右上角的的横坐标;
vspace:网页右上角的纵坐标;
frameborder:是否显示边缘;填"1"表示"是",填"0"表示"否"
scrolling:是否出现滚动条;填"1"表示"是",填"0"表示"否"
76,Q:使用表格时应注意那些问题?
A:1、整个表格不要都套在一个表格里,尽量拆分成多个表格,可以加快显示速度;
2、表格的嵌套层次尽量要少,最好嵌套表格不超过 3 层,这样可以加快浏览器解释 html 脚本代码的时间;
3、单一表格的结构尽量整齐;
4、表格的 width=100% 可以使表格适应浏览器不同的分辨率;
5、用表格进行版面布局比用层来得更好一些。
6、同时设定表格背景图片和颜色。有一些版本的浏览器不显示表格背景图形,只显示缺省背景颜色,有的访问者关闭了多媒体图形选项来浏览,为了满足这部分来访者,最好同时设定表格背景图片和颜色;
77,Q:Javascript 文字特效一例
A:
<script language="JavaScript">
text = "十万个为什么网站"; //显示的文字
color1 = "blue"; //文字的颜色
color2 = "red"; //转换的颜色
fontsize = "8"; //字体大小
speed = 200; //转换速度 (毫秒)
i = 0;
if (navigator.appName == "Netscape") {
document.write("<layer id=a visibility=show></layer><br><br><br>");
}
else {
document.write("<div id=a></div>");
}
function changeCharColor()
{if (navigator.appName == "Netscape") {
document.a.document.write("<center><font face=arial size =" + fontsize + "><font color=" + color1 + ">");
for (var j = 0; j < text.length; j++) {
if(j == i){document.a.document.write("<font face=arial color=" + color2 + ">" + text.charAt(i) + "</font>");}
else {document.a.document.write(text.charAt(j));}
}
document.a.document.write('</font></font></center>');
document.a.document.close();
}
if (navigator.appName == "Microsoft Internet Explorer") {
str = "<center><font face=arial size=" + fontsize + "><font color=" + color1 + ">";
for (var j = 0; j < text.length; j++) {
if( j == i) {
str += "<font face=arial color=" + color2 + ">" + text.charAt(i) + "</font>";
}
else {
str += text.charAt(j);
}
}
str += "</font></font></center>";
a.innerHTML = str;
}
(i == text.length) ? i=0 : i++;
}
setInterval("changeCharColor()", speed);
</script>
78,Q:解决 DW4 普通文本的汉字输入问题
A:这是 DW4 的一个大问题。即使把 coding 设成 gb, 输入中文时,用中文字体,也不能解决。在使用之中发现,全拼输入、紫光拼音等比较正常,但用五笔等输入法时就会出问题:无论你打多少字,它都会用后一个字覆盖前一个字,让你的页面始终只有一个字。另一种情况是,在某些光标位置可以输入,有些又不行。对这个问题,现在似乎还没有很完美的解决办法。笔者试推荐以下方法:
1、更换另一种输入法,即全拼输入、紫光拼音、拼音加加等;
2、直接将中文文本信息拷贝进去;
3、有时可输入,有时不可输入的情况,请点击一下 DW4 的标题和属性栏就可以输入了;
4、系统采用中文的 Windows9x 或 Windows ME。
79,Q:解决 DW4 中 Flash 文字和按钮的汉字输入问题
AW4 中加强了与 Flash 的直接交互,比如直接制作 Flash 的文字和按钮、直接浏览插入的 Flash 文件(按属性栏中的三角形播放键)等等。就算你不会使用 Flash 也可以在 Dreamweaver 中直接插入 Flash 动画格式的文字或按钮,只要简简单单输入文字就可以了。比起传统的点阵图文字或按钮,档案更小、更漂亮。但遗憾的是,其中输入的文字不支持中文!没办法,还是直接用 Flsah 软件制作,况且在 Flash5 中作一个类似 DW4 中的中文按钮并不难。
80,Q:解决 DW4 表格的亮暗边问题
A:原来的 DW3 可以做表格的阴影效果,可是 DW4 却不行了,因为属性板上没有了 borderlight 和borderdark 的输入框。可以用以下二种方法来变通解决:
  1、内外边框的颜色可以用鼠标来选择。从表格的上方或者左方选择表格,鼠标会变成一个向下或向左的箭头形状,这时你就可以选中表格单元的内边框了。这是再设定属性栏中“Border” 的颜色即可。这样可以设定表格单元的内边框为不同颜色了。把 cellspace 设的大一点,效果将更明显。
2、直接编辑 html 源代码解决。
81,Q:解决 DW4 的空格输入问题
AW4 不能输入空格,这是 DW3 就有的老问题了。这里提供三种解决办法:
  1、输入全角空格。如果你用的是“智能ABC”的拼音输入的话,请按 SHIFT+空格,这时输入法的属性栏上的半月形就变成了圆形了,然后再敲空格键,空格就出来了。
2、你也可以在输入的时候直接按 CTRL+SHIFT+空格,连按 4 次,就可以得到两个汉字大小的空格。
3、将属性栏中的 FORMAT 设定为 Preformatted 后,就可直接输入空格。
82,Q:解决 DW4 字体设定不能保存的问题
AW4 里面的字体、文字大小设定(Edit-Preferences-Font/Encoding)不能保存,怎么解决? 只有修改注册表,方法是在注册表主键 HKEY_CURRENT_USER\Software\Macromedia\Dreamweaver 4\Font Preferences 下建立 "Number Encodings"=dword:0000000c 和 "Default Encoding"=dword:00000005。
83,Q:用 css 代码构造三维字
A:
<HTML>
<HEAD>
<STYLE type=text/css>
.3dfont {COLOR:#0000ff; FILTER:glow(color=ffffff,strength=1) shadow(color=dedede,direction:100); POSITION:relative; WIDTH:100%}
</STYLE>
</head>
<body>
<font size=24 class=3dfont>这是三维字体</font>
<font size=24>这不是三维字体</font>
</body>
84,Q:IE 的 HTC-behavior 文件
A:HTML 组件是 Internet Explore 5.5 主要的、革命性的新特征之一。Microsoft 的目的是用它取代 ActiveX 控件。HTML 组件是封装的对象,也像 ActiveX 控件一样是“自包含”的,可以在开发完后发布给任何人。使用 HTML 组件有很多好处。
  ActiveX 控件的一个缺点是:在使用前必须在客户机上安装注册。而 HTML 控件是和主文档一样随时由用户下载到客户机的。对于 DHTML 作者来说,HTML 控件更有吸引力,因为他们可以使用已经很熟悉的语言 DHTML 来开发自己的控件和组件。
  HTC 提供了一种简单的机制在脚本中实现 DHTML 行为。一个 HTC 文件就是一个以 .htc 为扩展名存储的 HTML 文件,它包含脚本和一组 HTC 特有的自定义元素。这些元素描述了 HTML 组件定义的属性、方法和事件。在脚本中可以通过它们各自的 ID 属性访问所有 HTC 元素。这样,可以通过脚本动态操纵 HTC 元素的所有属性和方法。
我们能用 HTC 实现以下行为:
  描述属性和方法:通过 PROPERTY 和 METHOD 元素定义属性和方法;
  描述自定义事件:通过 EVENT 元素定义,使用元素的 fire() 方法在它们所在的页面里引发这些事件。事件的环境可以通过 createEventObject() 方法设置;
  在它们所在的页面里访问 DHTML 对象模型:HTC 中的 object 元素返回它所附属的元素,通过这个对象,HTC 能访问他所在的文档及其对象模型(属性、方法和事件)。
  接受通报:当使用 ATTACH 元素时,浏览器向 HTC 通报标准 DHTML 事件和两个 HTC 专有 事件,oncontentready 和 ondocumentready。
  HTC 封装了行为的定义,Internet Explorer 5.0 首先提出了行为这个概念。在 Internet Explorer 5.0 概览中介绍了行为这个概念。在 HTC 中使用行为封装的好处是不能从它们的元素标记中将它们删掉。在 IE 5.0 里,可以通过脚本从元素中除去行为。在 IE 5.5 里,元素始终存在,并且不能将它们和原来的行为分开。
85,Q:当刷新或关闭 IE 时打开一个窗口
A:
<head>
<script>
function openwin()
{ window.open('apage.htm')}
</script>
</head>
<body onbeforeunload="return openwin();">
86,Q:网页中应用 open 函数打开窗口的一个技巧
A:window.open 函数应用在链接中可以有 2 种形式,即 <a href="javascript:window.open('page.htm','','')">…</a>
和 <a href=# onClick="window.open('page.htm','','')">…</a>
但当该链接所在的网页在帧中时,就只能使用第二种,第一种会多产生 1 个包含无用信息的窗口。此外,第二种方法对于用图片做超链接也很方便,形式为 <img src="图片文件" onClick="window.open('page.htm','','')">
87,Q:把滚动条放在浏览器窗口的左边
A:在 <body> 中加 dir=RTL,即 <body dir=RTL>。注意对于已经排好版的网页,会使网页左右产生镜像颠倒。实际上 RTL 即 Right to Left 的意思,它规定了网页中的文字方向。正常的网页文字方向默认为 LTR。
88,Q:怎样把 PHP 的一个数组传递给 javascript 的一个数组?
A:用 javascript 定义一个数组比如 list=new array(),在 php 中有一个数组 $a[],如果要把数组 $a[]的值传递给 list 怎么办呢?
<?php
echo "<script language=javascript>";
echo "list=new Array();";
for(i=0;i<count($a);i++)
{ echo "list=" . $a[$i];}
echo "</script>";
?>
以上代码只是表述一个思想,其实在 Asp、Jsp 中也同样可以借鉴使用。
89,Q:网页上传后为什么看不到更新效果?
A:如果上传真的没有问题的话,请删掉本地机器中的网页临时缓冲文件试试。同时,有些网站(如 China.com)要在更新几十分钟到几小时之后才能看到更新结果。
90,Q:在 IE 子窗口能调用父窗口的函数(function)吗?
A:可以。例如,父窗口这样写:
……
<head>
<script> function F() { alert("父窗口函数"); } </script>
</head>
<body onload="open('2.htm')">
<input type=hidden id=F1 onclick="F()">
在子窗口中这样写:
<input type=button value="执行父窗口函数" onclick="javascript:window.opener.document.all.F1.click()">
或者干脆这样写:<input type=button value="执行父窗口函数2" onclick="javascriptpener.F()">
91,Q:在 Windows 桌面上建立网站链接的快捷方式
A:
<script language="Javascript">
var WshShell = new ActiveXObject("WScript.Shell");
strDesktop = WshShell.SpecialFolders("Desktop");
var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\十万个为什么.url");
oUrlLink.TargetPath = "http://100000.home.sohu.com";
oUrlLink.Save();
</script>
92,Q:在桌面上建立应用程序的快捷方式
A:以在桌面上建立 Notepad.exe 的快捷方式为例:
<Script language="Javascript">
var WSHShell = WScript.CreateObject("WScript.Shell");
//Read desktop path using WshSpecialFolders object
var DesktopPath = WSHShell.SpecialFolders("Desktop");
//Create a shortcut object on the desktop
var MyShortcut = WSHShell.CreateShortcut(DesktopPath + "\\notepad 的快捷方式.lnk");
//Set shortcut object properties and save it
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%");
MyShortcut.WindowStyle = 1;
MyShortcut.Description = "Shortcut Script 脚本";
MyShortcut.Hotkey = "CTRL+Alt+F";
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
MyShortcut.Save();
WScript.Echo("成功建立桌面上 Notepad 的快捷方式");
</Script>
93,Q:在收藏夹中加入 Url 的快捷方式
A:
<Script language="Javascript">
var WshShell = new ActiveXObject("WScript.Shell");
strFav = WshShell.ExpandEnvironmentStrings("%windir%\\Favorites");
var MyFav = WshShell.CreateShortcut(strFav + "\\我的十万个为什么.url");
MyFav.TargetPath = "http://100000.home.sohu.com";
MyFav.Save();
</Script>
94,Q:屏蔽网页中的错误提示信息
A:在网页的<Body>中加脚本:<Script> window.onerror="return true";</Script>
95,Q:控制网页表格的边框显示
A1)、控制表格的边框:
表格标签 <Table> 有一个 Frame 属性,可以控制表格的边框:
frame=box 显示所有边框
frame=void 不显示所有边框
frame=above 只显示上边框
frame=below 只显示下边框
frame=hsides 只显示上下边框
frame=vsides 只显示左右边框
frame=lhs 只显示左边框
frame=rhs 只显示右边框
(2)、控制表格行与列的分隔线:
表格标签 <Table> 有一个 Rules 属性,可以控制表格的分隔线:
Rules=all 显示所有分隔线
Rules=none 不显示任何分隔线
Rules=rows 只显示行与行之间的分隔线
Rules=cols 只显示列与列之间的分隔线
(3)、用表格制作线条:
以下代码可以实现一条线段:
<table width=80% border=1 cellpadding=0 cellspacing=0 bordercolor=#e8e8ff frame=below>
<tr><td>&nbsp;</td></tr>
</table>
96,Q:关于表格中的 <thead>、<tbody>、<tfoot> 标签以及表格的列分组
A: <thead> 是“头”标签,<tbody> 是“体”标签,<tfoot> 是“脚注”标签。用它们可以把表格的标头、表格体、脚注进行分组(行分组),便于分别控制它们的外观。表格的列分组标签是 <colgroup>,它有 span、align 等属性,举例如下:
<table border=1 width=60%>
<colgroup span=3 align=center>
<colgroup align=left>
<colgroup align=right>
<tr><td>aaa</td><td>I'm aaa</td><td>男</td><td>100.20</td><td>1500.00</td></tr>
<tr><td>bbb</td><td>I'm bbb</td><td>女</td><td>32.50</td><td>32000.90</td></tr>
<tr><td>ccc</td><td>I'm ccc</td><td>女</td><td>66.00</td><td>10000.50</td></tr>
</table>
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:54 am

97,Q:保护自己的网页文本和图片:
A:
(1)、自己辛苦创作或收集的文章被别人“^C^V”偷了去,谁心里都不会舒服的。我们可以在自己的网页<Body>标签中加入 onselectstart="return false" 语句,使鼠标不能选择文本;
(2)、在网页 <Body> 标签中加入 oncontextmenu="self.event.returnValue=false" 语句,使单击鼠标右键时不能弹出右键选单,也就不能执行“图片另存为”命令选项;
(3)、禁止右键菜单:把下列代码加入到<head> 与 </head> 之间
<SCRIPT language=javascript>
  function click()
{
   if (event.button==2)
{alert('欢迎访问本站!')}
 }
 document.onmousedown=click
</SCRIPT>
(该方法可以被人轻易破解)
(4)、禁止右键菜单:弹出“添加至收藏夹”窗口
<SCRIPT language=JavaScript>
<!--
function click()
{
if (event.button==2)
{window.external.addFavorite(this.location,this.document.title)}
}
document.onmousedown=click
//-->
</SCRIPT>
(该方法也可以破解)
(5)、自己定制右键菜单,这是最聪明、最科学的方法。具体方法请参考本站的有关条目。
98,Q:使用 css 让网页中的图片居于页面正中:
A:
一般情况下,想让你的 LOGO 居中是一件非常痛苦的事情。除非你作一个足够大的底图,但是页面下载的速度可就… 现在 CSS 可以帮我们作到这一点,你只要将下面的代码 COPY 到 <head></head> 之间就可以了。不必再考虑页面的大小和分辨率了。
<STYLE TYPE="text/css">
<!--
BODY {background-image: URL(logo.gif);
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;}
-->
</STYLE>
logo.gif 是你的图片,如果与页面文件不在同一个路径下,需要指明路径;background-position 代表位置,center 表示居中。background-repeat 表示是否平铺,可取 no-repeat、repeat-x、repeat-y 等值。 background-attachment 为 fixed 时可以使页面滚动时背景图固定不动(锁定)。
99,Q:浏览器全屏显示:
A:把如下代码加入 <body> 区域中:
<form>
<input type=BUTTON name=FullScreen value=全屏显示 onClick="window.open('The_URL','big','fullscreen=yes')">
</form>
100,Q:在网页中用代码调用打印机打印当前页面:
A:代码加入 HTML 的〈BODY〉区的任意位置:
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
if (window.print)
{document.write('<form>'+ '<input type=button name=print value="打印页面" '+'onClick="javascript:window.print()"></form>');}
//-->
</script>
(说明:document.write 一句请写在一行,不要回车断行。)

1,Q:用 DEBUG 读取硬盘的主引导记录:
A: C:\>DEBUG
-a100
mov ax,0201 ;02 代表“读”
mov bx,200 ;运行结果放在内存地址 0200 处
mov cx,1 ;
mov dx,80 ;80 代表第一硬盘
int 13 ;调用磁盘中断
int 20 ;结束程序
-g=100 ;从 100 处开始运行程序
-d200 ;显示主引导记录
-q
2,Q:用批处理给一系列文件循环改名:
A:假设有三个文件,名为F3.EXE,F2.EXE,F1.EXE,则以下批处理可以给他们循环改名:
AUTO.BAT:
ren F3.EXE X
ren F2.EXE F3.EXE
ren F1.exe F2.exe
ren X F1.EXE
3,Q:那些 Web server 支持 ASP?
A:一般情况下,只有 Windows 下的 Web server 支持 ASP, 如高版本的 IIS、PWS4.0 等。Windows98 和 Windows98se 上随盘附带的 PWS 可以支持 ASP。 WindowsNT4.0 安装 SP4 和 OP4 后,也可以支持 ASP。Windows2000 直接支持 ASP。一些在 UNIX 下运行的 Web Server,安装特定软件后,也可以支持 ASP。
4,Q:为何我将这句话(“Let's go now!”)插入到数据库中的时候会发生错误?
A:因为大多数的数据库(Access,MS SQL Server) 都把单引号当作分割符号使用的,所以不可以直接将单引号插入到数据库中,你必须在执行SQL语句之前, 分别将每一个单引号替换成两个单引号:
MyData=Replace(MyData," ' "," '' ",1)
然后,再保存到数据库中就行了。
5,Q:在 ASP 中使用 ADO 的 AddNew 方法和直接使用“Insert into...”语句有何不同?那种方式更好?
A: ADO 的 AddNew 方法只是将“Insert into ”语句封装了起来, 所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为他减少了ADO的 “翻译”时间。虽然SQL语句不如 AddNew 等语句容易接受,但是学习一些常用的 SQL 语句在进行数据库编程中是非常重要的。
6,Q:经常看到联接数据库有两种方式 DSN 以及 DSN-LESS,两者是什么意思? 有什么不同吗?
ASN 是英文“Data Source Name”(数据源名)的缩写,DSN方式也就是采用数据源的联接方式,这个数据源可以在“控制面板”里面的“ODBC Data Sources”中进行设置,然后就这样使用: Conn.Open "DSN=Test;UID=AdminWD=;"其中的“Test”就是你自己设定的数据源的名称。注意,要同时使用 UID 以及 PWD,否则会出错。
同样的,DSN-LESS 就是非数据源方式的联接方法,使用方法是:
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=\somepath\mydb.mdb;Uid=Adminwd=;"
在相同的硬件环境下,DSN-LESS 方式要比 DSN 方式的性能要高,但是一旦 ASP 源代码因为某些安全问题而被别人看到,将会泄漏数据库的账号以及密码,所以这两种方式是各有利弊的。
7,Q:为什么我使用“Window.open()”方法打开的新窗口的 ASP 页面中经常会出现 Session 丢失的现象?
A:微软的 IE4.x 会经常出现这种情况,但 IE5.x 中已经纠正了这个错误。 所以,为了兼容所有的浏览器,你可以使用诸如“test.asp?name=***”的方式来在窗口之间传递参数,这样的效果更好, 只是要注意,如果传递的参数很重要,请不要使用明文方式进行传递,否则很容易导致安全问题。
8,Q:好像 Redirect 方法只可以重新定向到同一帧里面,可不可以定向到其他帧呢?
A:可以,要加上这个:〈BASE Target="FrameName"〉。 然后,当你再使用 Redirect 方法的时候,就会重新定向到名字叫做 FrameName 的帧里面了。
9,Q:为什么我使用 Response.Redirect 的时候出现错误?    
A:最常见的原因就是你在写入页面之后对 HTTP 标题进行了修改,解决的方法是在页面的开始写上
〈%Response.Buffer=True%〉
10,Q:最近随同 IIS5.0 一起出现的 ASP3.0 有何新的功能?
A:其实并没有什么新的变化,但是新增加了两个 Server 对象的方法:Server.Transfer 以及 Server.Excute,还有一个新的对象 ASPError。具体的使用方法请参考微软的网站:www.microsoft.com。
11,Q:我有没有必要在每一个 ASP 文件中使用“Option Explicit”?
A:你最好这样,因为这样可以使得你的程序出错机会降到最少,并且会提升整体性能将近 9.8% 。
12,Q:我需不需要在每个 ASP 文件的开头使用 〈%@LANGUAGE=VBScript%〉?
A:如果你使用的脚本语言就是 VBScript 的话, 请尽量不要使用这个语句(VBScript是 ASP 的缺省脚本语言),否则程序整体性能将会下降将近 1.2%。 但是如果你使用的并不是 VBScript 语言的话,请使用这个语句。
13,Q:我在 ASP 脚本中写了很多的注释,这会不会影响服务器处理 ASP 文件的速度?
A:经国外技术人员测试,带有过多注释的 ASP 文件整体性能仅仅会下降 0.1%,也就是说基本上不会影响到服务器的性能下降。
14,Q:为什么我的记录集的 RecordCount 值总是返回 -1 ?
A:你应当使用这种模式来打开存取数据库的记录集:
rec.open strSQL,conn,1,1
其中的 strSQL 是操作数据库的 SQL 语句; conn 是联接数据库的 Connection 变量。
15,Q:什么是线程?
A:线程是指程序的一个指令执行序列,WIN32 平台支持多线程程序,允许程序中存在多个线程。 在单 CPU 系统中,系统把 CPU 的时间片按照调度算法分配给各个线程,因此各线程实际上是分时执行的,在多 CPU 的 Windows NT 系统中, 同一个程序的不同线程可以被分配到不同的 CPU 上去执行。由于一个程序的各线程是在相同的地址空间运行的,因此设及到了如何共享内存, 如何进行线程通信等问题,这样便需要处理各线程之间的同步问题,这是多线程编程中的一个难点。
16,Q:在 VB 中用 ADO 通过 ODBC 连接 ORACLE 数据库,读取有记录的表中的数据时为何返回结果的总是 NULL?
A:请使用微软的 ODBC for Oracle 驱动程序,在 ODBC 管理器中是 Microsoft ODBC for Oracle。不要使用 Oracle 自带的驱动程序。尽量使用新的 ODBC 驱动程序。
17,Q:VB 在打开窗口中,文件类型及文件名变为乱码,不知如何解释(重装后也不行)?
A:将 \windows\fonts 目录下的一个名为 mingliu.ttc 的文件删了试试。
18,Q:请问怎样在 VB 中设置系统热键?
A:代码如下:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer
  Private Function MyHotKey(vKeyCode) As Boolean
MyHotKey = ((GetAsyncKeyState(vKeyCode) < 0))
  End Function
  然后,建立一个 timer 控件,输入以下代码:
Sub timer1_timer()
If myHotKey(vbkeyX) then …  ' 这里的 vbkeyX 是指系统热键为 X
  End Sub
19,Q:如何让一个窗口总是处于各窗口的最上层?
A:代码如下:
  Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  Const HWND_TOPMOST = -1
  Private Sub Form_Load()
  SetWindowPos Me.hwnd,HWND_TOPMOST,Me.Left/Screen.TwipsPerPixelX, _
Me.Top\Screen.TwipsPerPixelY,Me.Width\Screen.TwipsPerPixelX, _
   Form1.Height \ Screen.TwipsPerPixelY, 0
End Sub
20,Q:我想在 Delphi 程序中直接调用 Word 文档并使用 Word 的功能,这个程序该怎样编? 该用什么控件呢?
A:
方法一:
  1) 从 WORD.EXE 中导入 WORD 的 Type Library
  2) var wd : _Application;
   wdt : Table;
   dot1,FileName: OleVariant;
  begin
   dot1 := 'c:\abc.dot';
   wd := coApplication_.Create;
   wd.Documents.Add(dot1, EmptyParam);
   wdt := wd.ActiveDocument.Tables.Item(1);
   wdt.Cell(1,3).Range.Text := 'Hello!';
   //以下是保存和关闭文档及 Word, 可以不关,下面两个例程略过此步。
   //EmptyParam 用来代替不使用的参数。
   FileName := 'c:\test.doc';
   wd.ActiveDocument.SaveAs(FileName,EmptyParam,EmptyParam,
   EmptyParam,
     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
     EmptyParam,
     EmptyParam);
   wd.ActiveDocument.Close(EmptyParam,EmptyParam,EmptyParam);
   wd.Quit(EmptyParam,EmptyParam,EmptyParam);
  end;

  方法二:
  var
   Ole: Variant;
   NewDoc: Variant;
   DocTable: Variant;
  begin
  //方法二的参数可以直接使用 Delphi 的数据类型。其它方法只能使用 OleVariant 类型.
    Ole := CreateOleObject('Word.Application');
    Ole.Application.Visible := true;
    NewDoc := Ole.Documents.Add('C:\abc.dot');
    DocTable := NewDoc.Tables.Item(1);
    DocTable.Cell(1,3).Range.Text := 'Hello!';
  //设置Variant对象为UnAssigned来释放该对象的引用。
    NewDoc := UnAssigned;
    DocTable := UnAssigned;
    Ole := UnAssigned;
  end;

  方法三:使用 Server 页的 TWordApplication 控件,同理,你可以用里头的所有控件。Ole 为TWordApplication控件名称。
  var
   NewDoc: Variant;
   DocTable: Variant;
  o: OleVariant;
  begin
   o := 'c:\abc.dot';
   NewDoc := Ole.Documents.Add(o,EmptyParam);
   DocTable := NewDoc.Tables.Item(1);
   DocTable.Cell(1,3).Range.Text := 'Hello!';
   NewDoc := UnAssigned;
   DocTable := UnAssigned;
  end;

推荐用方法一和方法三。因为方法二不提供类型参数检查,也因为方法二的接口调用效率低。程序中所使用的属性和方法资料可以在 Office 的 VBA 帮助中查到。需要者请在安装 Office 时选择安装 VBA 编程帮助。
21,Q:想用 Dephi4.0 实现这样的效果:在程序启动时在主窗口中同时放置几个 Dockable 的子窗口。子窗口的大小和 Dock 的位置都可以变化,也可以拖离主窗口成为独立的窗口。(如同Visual C++6.0 集成环境的界面一样),请问怎么实现?
A:在 Delphi5.0 的 Borland\Delphi5\Demos\Docking 文件夹下有完整的示例程序,请参看例程
22,Q:我的 VB6 总把全角符号和半角符号一样对待,而且它对字符串的长度也辨不清如len("中华人民共和国")的返回值为 7。而其 FileLen() 的返回值却又似乎正常,等于文件的长度(Bit),请问到底得如何解决?
A: VB4.0 以后,string 类型以 UNICODE 存放,以 ANSI 形式写入文件。所以,len 和 FileLen 结果不同。len 返回字数,每个中、英文均为 1;lenb 返回字节数,每个中、英文均为 2。
  如果需要返回 ANSI 的字节数,可用如下函数:
Public Function LenANSI(strU as string) as long
LenANSI = LenB(StrConv(strU, vbFromUnicode))
End function
23,Q:能否在 VB 中作 DLL 文件?
A:VB 不能制作 Win32 DLL 文件,但它可创建 ActiveX DLL。
24,Q:如何在不使用 Windows 的打印对话框或打印设置框的情况下,在 VB 程序中设定打印机的自定义纸张尺寸?
A:可设置 Printer 对象的 Width 和 Height 属性。对于同一种打印机,Windows9X 往往可以成功设置自定义纸张大小,而 NT 不能。这主要取决于打印机驱动程序。另外,即使驱动程序接受这些设置,它也会根据情况作些微调。
25,Q:在 VB 中如何控制计算结果的整数位和小数位?
A:可用 Format 函数,或 VB 新增的 FormatNumber(可本地化)等函数。
26,Q:在 VB6.0 中如何区分汉字和半角西文字符?
A:用 LenB(StrConv(str, vbFromUnicode)),结果为 1 是半角,为 2 是全角。另外一个 undocumented 的方法是,ASC(str),结果>0是半角,<0是全角。
27,Q:微软VISUAL J++ 和 J***A 有什么不同?
A:微软已经放弃了java,他发布了一个新产品叫 C# 与 sun 的 java 竞争。C# 与 C++ 类似却很容易开发COM/DCOM 程序,但目前北美没有人用 C#。而 sun 的 java 却很热,年薪在 6 万元以上。
28,Q:如何在 VB 中调用资源文件中的资源,如图片、光标等?
A:可用 LoadResPicture(index,format) 来调用。其中“index”是必需的,它是一个整数或字符串,用来指定资源文件中数据的标识符 (ID) ,“format”是必需的一个数值或常数,指定返回数据的格式,返回一个 Picture 对象,例如位图、图标或光标。
例如:Picture1.Picture=LoadResPicture(100, vbResBitmap),常量有vbResBitmap ,vbResCursor, vbResIcon 等。*.res 文件可以用 VC++ 来产生和编辑,在 VB 中调用。
29,Q:是否运行用 Delphi 开发的数据库应用程序时,一定要装 BDE? 能否可以将其包含在应用程序中,使不安装 BDE,就可运行?
A:不可以。BDE 是 Delphi 和 Inprise 公司其他一些产品的数据引擎!有它才可以和 ODBC 相连接。
30,Q:请问怎么样将用VFP5.0编写的小软件编绎成可以脱离VFP而独立运行的软件?
A:将 VFP5.0 的的两个支持文件放置在与可执行文件相同的目录中,或者在 MS-DOS 搜索路径中,即可独立运行。
31,Q: 如何在 VC++6.0 中使用 MSComm 控件与单片机通讯? 要求是 PC 机发一个字节的命令,单片机返回相应的1--3字节数据。
A:首先将端口串行化:
commh = CreateFile(tmpstr, GENERIC_READ,GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
然后设 DCB。读使用 ReadFile(hComm, lpBuf, READ_BUF_SIZE, &dwRead, &osReader); 写使用 WriteFile(hComm, lpBuf, dwToWrite, &dwWritten, &osWrite);
也可以使用 _inp, _outp 来直接写串口的端口。
32,Q:在 VB 网格中输入数据:
A:VISUAL BASIC 提供的网格控制(Grid)主要是用来直观地输出数据,但不能输入数据,使用起来很不方便。能不能向网格中输入数据呢?这里提供一种解决方法,供大家参考:
利用一文本框作为缓冲,实现编辑功能。当网格改变行列时,把网格当前行列的内容传递给文本框;当网格中有 ASCII 字符产生时,把输入焦点设置为文本框,并把输入的 ASCII 字符送给文本框;当编辑完文本框的内容时,按 Enter 键或 TAB 键,把文本框的内容送给网格的当前行列,并把输入焦点设置为网格。
如下程序所示(其中 Textl 为文本框,Labell 为标签,Gridl 为网格):
Option Explicit
Const EnterAsc=13
Const TabAsc=9

Private Sub Form_Load()
Labell.Caption=”请输入”
End Sub

Private Sub Gridl_KeyPress(KeyAscii As Integer)
Text1.StFocus
Textl.SelStart=0
If KeyAscii <> EnterAsc And KeyAscii <> TabAsc Then
SendKeys Chr(KeyAscii)
End IF
End Sub

Private Sub Gridl_RowColChange()
Textl.Text=Grid1.Text
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii=EnterAsc Then
Grid1.SetFocus
KeyAscii=0
End If
End Sub

Private Sub Text1_LostFocus()
Grid1.Text=Text1.Text
End Sub
33,Q:启动“控制面板”中的设置程序:
A:
'控制面板 Control Panel ( CONTROL.EXE )
'----------------------------------------
'Control Panel:
' rundll32.exe shell32.dll,Control_RunDLL
'
'辅助选项 Accessability Options ( ACCESS.CPL )
'-----------------------------------------------
'Accessability Properties (Keyboard):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
'Accessability Properties (Sound):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
'Accessability Properties (Display):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
'Accessability Properties (Mouse):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
'Accessability Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
'
'添加/删除程序 Add/Delete Programs ( APPWIZ.CPL )
'--------------------------------------------------
'Add/Remove Programs Properties (Install/Uninstall):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
'Add/Remove Programs Properties (Windows Setup):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
'Add/Remove Programs Properties (Startup Disk):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
'
'显示设置 Display Options ( DESK.CPL )
'----------------------------------------
'Display Properties (Background):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
'Display Properties (Screen Saver):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
'Display Properties (Appearance):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
'Display Properties (Settings):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
'
'区域设置 Regional Settings ( INTL.CPL )
'-------------------------------------------
'Regional Settings Properties (Regional Settings):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
'Regional Settings Properties (Number):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
'Regional Settings Properties (Currency):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
'Regional Settings Properties (Time):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
'Regional Settings Properties (Date):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
'
'Joystick Options ( JOY.CPL )
'-------------------------------
'游戏控制器 Joystick Properties (Joystick):
' rundll32.exe shell32.dll,Control_RunDLL joy.cpl
'
'鼠标、键盘 Mouse/Keyboard/Printers/Fonts Options ( MAIN.CPL )
'----------------------------------------------------------------
'Mouse Properties:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
'Keyboard Properties:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
'Printers:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
'Fonts:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
'
'邮件和传真 Mail and Fax Options ( MLCFG32.CPL )
'--------------------------------------------------
'Microsoft Exchange Profiles (General):
' rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
'
'多媒体 Multimedia/Sounds Options ( MMSYS.CPL )
'-------------------------------------------------
'Multimedia Properties (Audio):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
'Multimedia Properties (Viedo):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
'Multimedia Properties (MIDI):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
'Multimedia Properties (CD Music):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
'Multimedia Properties (Advanced):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
'
'声音属性 Sounds Properties:
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
'
'安装调制解调器 Modem Options ( MODEM.CPL )
'----------------------------------------------
'Modem Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL modem.cpl
'
'网络设置 Network Option ( NETCPL.CPL )
'-----------------------------------------
'Network (Configuration):
' rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
'
'口令设置 Password Option ( PASSWORD.CPL )
'---------------------------------------------
'Password Properties (Change Passwords):
' rundll32.exe shell32.dll,Control_RunDLL password.cpl
'
'系统/添加新硬件设置 System/Add new Hardware ( SYSDM.CPL )
'------------------------------------------------------------
'System Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
'System Properties (Device Manager):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
'System Properties (Hardware Profiles):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
'System Properties (Performance):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Add New Hardware Wizard:
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
'
'日期和时间设置 Date and Time Options ( TIMEDATE.CPL )
'---------------------------------------------------------
'Date/Time Properties:
' rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
'
'微软邮局设置 Microsoft Mail Postoffice Options ( WGPOCPL.CPL )
'-------------------------------------------------------------------
'Microsoft Workgroup Postoffice Admin:
' rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl
34,Q:交换鼠标左、右键:
A:拉两个 Command 按钮,键入以下代码可也:
Option Explicit
Private Declare Function SwapMouseButton Lib "user32" (ByVal bSwap As Long) As Long
Private Sub Command1_Click()
SwapMouseButton False '左手
End Sub
Private Sub Command2_Click()
SwapMouseButton True '右手
End Sub
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:55 am

35,Q:程序控制光驱(开)关:
A:在工程中添加“Microsoft multimedia Control6.0”控件,再在窗体上加入该 MMControl 控件和 Command 控件,再键入以下代码(据说是可以开和关,但我没放光盘测试时只能关闭光驱):
Private Sub Command1_Click()
With MMControl1
.DeviceType = "CDAudio"
.Command = "Open"
.Command = "Play"
.Command = "Eject"
.Command = "Close"
End With
End Sub
Private Sub Form_Initialize()
MMControl1.Visible = False
End Sub
另外,有人介绍以下调用 API 的方法开、关光驱,我的机器上也不能实现,大家可以研究一下:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim retval As Long, retstr As String
Private Sub Command1_Click()
retval = mciSendString("Set CDAudio door open", retstr, 127, 0) '开
End Sub
Private Sub Command2_Click()
retval = mciSendString("Set CDAudio door closed", retstr, 127, 0) '关
End Sub
36,Q:用程序遥控计算器 - VB 的 SendKeys 语句范例:
A:本示例使用 Shell 函数来运行 Microsoft Windows 所附的计算器程序;然后使用 SendKeys 语句来按下计算器的某些数字键,最后退出计算器。(若要观察示例运行过程,可将示例粘贴到过程中,再运行过程即可。因为 AppActivate 会将焦点转移到计算器应用程序,故本示例不能以单步方式来运行。)

Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) ' 运行计算器。
AppActivate ReturnValue ' 激活计算器。
For I = 1 To 100 ' 设置计数循环。
SendKeys I & "{+}", True ' 按下按键给计算器
Next I' 将所有 I 值相加。
SendKeys "=", True ' 取得总和
SendKeys "%{F4}", True ' 按 ALT+F4 关闭计算器。
37,Q:ASP 编程中参数传递的几种方法:
A:
(1)、<form action=do.asp method=post>
<input name=var1>
<input type=submit>
</form>
在 do.asp 中用 request.form("var1") 取参数的值;
(2)、在 <form></form> 中 action=do.asp?var=参数值,或 <a href=do.asp=do.asp?var=参数值></a>
然后在 do.asp 中用 request.querystring("var") 取参数的值(这是一种明文传递方式);
(3)、使用 Cookies。设置 <%response.cookies("var")="参数值"%>,取值 <%=request.cookies("var")%>;
(4)、用 session 变量传递参数。设置<%Session("var")="参数值"%>,取值 <%=Session("var")%>
(注意:一旦使用了<% %> 的 ASP“标志”符号,该语句就必须保存在 ASP 文件中。)
38,Q:一次性清空本窗口内所有文本框(TextBox):
A:
Dim txt As Control
For Each txt In Me.Controls
If TypeOf txt Is TextBox Then
txt.Text = ""
End If
Next txt
(想一下:如果窗口中有几十个文本框,用传统的编程法要写多少行代码?体会一下面向对象编程的巨大威力吧!)
39,Q:怎样在 VB 程序中播放 Flash 动画?
A:要用到一个播放 Flash 动画的控件 Shockwave Flash。该控件在 Flash4 安装盘的 Plugins 目录下,安装文件是 InstallAXFlash.exe,安装后在 VB 部件中选定即可使用。该控件的主要属性和方法如下:
属性:Movie 动画文件
Playing True/False 是否自动播放
Loop True/False 是否循环播放
方法:Play 播放
Stop 停止
Forward 快进
Back 快退
Rewind 回放
GotoFrame(n) 绕到指定的帧播放
SetZoomRect(left,top,right,bottom) 设置放大时的位置
40,Q:怎样在 VB 程序中实现图象扫描功能?
A:同样要借用第三方提供的函数。在网站 http://www.twain.org/www/toolkit.html 可下载到 eztw32.dll 动态连接库文件,把它拷贝到 Windows 的 system 文件夹下就可以在 VB 中调用了。

41,Q:在 VB 编程中检测声卡是否存在?
A:
Option Explicit
Private Declare Function auxGetNumDevs Lib "winmm.dll" () As Long
Private Sub Form_Load()
Dim i As Integer
i = auxGetNumDevs()
If i > 0 Then 'There is at least one sound card on the system
MsgBox "A Sound Card has been detected."
Else 'auxGetNumDevs returns a 0 if there is no sound card
MsgBox "There is no Sound Card on this system."
End If
End Sub
42,Q:在 VB 中终止 Windows95 的运行:
A:在Visual Basic 程序中,可以使用 Windows API 的 ExitWindowsEx 函数来从程序中重新启动计算机系 统。 要使用该函数,需要将如下声明语句包含在窗体的通常声明部分中:
   Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
   ExitWindowsEx 函数需要 2 个参数,可以使用一个或多个下面的标识的组合来告诉 ExitWindowsEx 函 数希望进行哪种关机过程。
   EWX_FORCE 所有进程都被强制终止
   EWX_LOGOFF 所有的进程被强制止,并且用户退出登录(logged off)
   EWX_POWEROFF 计算机系统被关机,并且如果支持节电特性则计算机被物理关机
   EWX_REBOOT 计算机系统被关机并重新启动
   EWX_SHUTDOWN 计算机被物理地安全地关机
   下面的样例程序中使用了上面的三个标识的组合。该标识组合(EWX_LOGOFF,EWX_FORCE,以及EWX_REBOOT) 告诉 Windows 退出所有正在执行的进程,使用户退出网络登录,使计算机系统处于准备状态以供 用户关机。
样例程序的使用:
  1,在 VB 中开始一个新的项目,采用缺省的方法建立 Form1;
  2,将如下常量和声明语句添加到 Form1 的通常声明部分中(注意该声明语句需要书写在一行内):
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Const EWX_POWEROFF = 8
Const EWX_RESET = EWX_LOGOFF + EWX_FORCE + EWX_REBOOT
  3,在 Form1 上添加一个命令按钮控件,采用缺省的方法建立 Comand1, 将它的 Caption 属性设置为“ 重 新启动计算机”;
  4,将如下代码添加到 Command1 的单击事件中:
Private Sub Command1_Click()
Dim X As Long
X = ExitWindowsEx(EWX_RESET, dwReserved)
End Sub
  按下 F5 来运行上述样例程序,单击命令按钮,即可重新启动计算机系统。
43,Q:给一大段 VB 程序一次性加上注释符号:
A:VB 注释程序代码的符号是 ',只要在某行程序前面加上该符号就可以注释该行程序。但如果程序代码语句很多的时候,一行一行地注释就非常不方便。其实 VB 本身提供了一次性注释多条语句的功能:在主菜单“视图”选项的“工具栏”下,选中“编辑”,VB 的界面会出现一排工具按钮,其中就有用于“设置注释块”和“解除注释块”功能的按钮。选中一块语句,按该按钮即可。
44,Q:VB 中在一个窗体中执行另一个窗体中的代码:
A:可以用“窗体.代码”的模式去执行别的窗体的代码。假设要在窗体 frm1 里执行窗体 frm2 的Form_Click 代码,程序如下:
Private Sub Form_Click()
frm2.Form_Click() '在frm1 里执行 frm2 的 From_Click 代码
End Sub
45,Q:Visual Basic 5.0 支持类吗?
A:支持。您可以在 Visual Basic 5.0/6.0 的内部创建自己的类。具体说,您可以为各种类型的应用程序创建标准的基础类库,以便为具体类型的程序提供特定的功能,然后将这些类编译进您的应用程序中。这样做可以节省大量您在某一应用程序中重新编写一系列标准功能所需花费的时间。
46,Q:在 VB 5.0 中文版中,表单上最多允许有多少个控件?
A: Visual Basic 5.0 允许在表单上最多可以有 255 个控件。
47,Q:Visual Basic 能用来创建在 Windows CE 环境下运行的应用程序吗?
A:不能。目前情况下,您必须使用 Visual C++ 或其他与 Windows 95 兼容的 C/C++ 编译工具。
48,Q:Visual Basic5.0/6.0 能用来创建 Windows NT 服务吗?
A:不能。Windows NT 中的服务必须是完全用机器代码编译的可执行文件。Visual Basic 目前不具备这一功能。您必须使用 Visual C++ 4.x 或其他与 Windows NT 兼容的 C/C++ 编译工具来创建服务。有关编写 Windows NT 服务的信息,请参阅微软 MSDN 的有关内容。
49,Q:Microsoft Visual Basic 5 除了支持本机编译的代码外,还支持 p 代码吗?
A:支持。VB5.0 是第一个在将应用程序编译成 p 代码或本机代码方面提供了灵活操作可能性的 RAD 工具。编译成 p 代码可使应用程序的大小优化为最小。p 代码凭借这一最小化特性成为了低带宽条件下创建 Internet 应用程序的首选方式。本机代码编译极大地提高了速度(最高快 20 倍),但生成的可执行文件较大。 Visual Basic 是唯一既能够支持 RAD 的解释方式、编辑与连续、以及开发等,又能够支持从本机编译的 .EXE 文件的 RAD 工具。
50,Q:Microsoft Visual Basic 可以在 Macintosh 上使用吗?
A:VB4.0 引入了可移植的 VBA (Visual Basic for Applications)语言引擎。Microsoft Excel 5.0 最近已在 Macintosh 上发行,其中随附了 Excel 的 VBA 组件,因此在它上面就有这个语言引擎。微软目前似乎对 Macintosh 上的 Visual Basic 版没有任何承诺。
51,Q:Visual Basic 5.0/6.0 支持 16 位开发吗?
A:不支持。Visual Basic 5.0/6.0 只能创建 32 位可执行文件。开发 16 位 Windows 应用程序需要 Visual Basic 4.0。
52,Q:Visual Basic 5.0 中文版内的 Text Box 能存储 64K 以上的数据吗?
A:不能。VB5.0 中文版没有突破文本框的 64K 限制,因为它是由操作系统指定的。如果您需要存储 64K 以上的数据,应使用 Visual Basic 内含的多信息文本框。多信息文本框类似于多行文本控件,不同的是增加了个别字符和段落的格式编排功能。多信息文本框能够保存 64K 以上的文本,提供内置的 OLE 2.0 客户支持,主要特性包括:使一个段落内的文本左、右、居中对齐,可定义左制表位、字体样式、简单的项目符号、查找/替换、上标、下标、加删除线等格式编排。
53,Q:在 ASP 编程中统计查询结果的记录数:
A:
<%
Set theConn=Sever.CreateObject("ADODB.Connection")
Set theRs=Sever.CreateObject("ADODB.RecordSet")
theConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"
theRs.Open "SELECT COUNT(*) as Mycount FROM theTable",theConn
%>
共有<% =theRs("MyCount")%>条记录
<%
theRs.Close
theConn.Close
%>
54,Q:为何无法编译成 dll 文件?
A:无论是用 VB 还是 VJ++,在编译 Active dll 文件时都会发现无法重新编译成 dll 文件的问题。原因是第一次编译后 dll 文件已经被自动注册了。这时关闭 Web server 后即可再次编译,待编译完毕后再打开 Web server。
55,Q:资源文件有什么用处?
A:最重要的有两个地方:
1、国际发行:如果我们将 Application 中所有的文字从 Resource 中读取,那么,只要更动 Resource 文件的内容,就可以用不同语言的方式来显示;
2、管理资源:例如,我们的软件中用了数百张的图片或声音,不用 Resource 文档的话,在发行出去的软件中,就必需有数百个图形、声音文档,那似乎不太好,使用 Resource 文件,便可以将这些图形、声音放进一个 .Res 文档中。
56,Q:如何在 DOS 程序结束执行时,自动将其关闭?
A:在 VB 程序中启动 DOS 程序(或指令)的方法是:
Shell "DOS可执行文件名", vbNormalFocus
例如:Shell "Xcopy c:\temp\*.* d:\temp\*.*", vbNormalFocus
但是当以上的 Xcopy 程序结束执行时, 却会残留着 DOS 窗口没有被关闭,如果想要让 DOS 程序结束执行时, DOS 窗口自动被关闭, 则应该使用以下方法来启动 DOS 程序:
Shell "Command.com /C DOS可执行文件名", vbNormalFocus
例如:Shell "Command.com /C Xcopy c:\temp\*.* d:\temp\*.*", vbNormalFocus
57,Q:VB 编程中打开默认网址和 Email 的更简单的方法:
A:打开网址:Call Shell("start http://www.alchemydev.com", vbHide)
打开 Email:Call Shell("start mailto:admin@alchemydev.com", vbHide)
58,Q:我用 VB6.0 的 ActiveX dll 工程开发了一个在 ASP 中调用的 dll 类型库,里面有好多封装的函数,我能不能在 VB 的 EXE 工程中利用它们?
A:当然可以! 这正是微软 COM 模型的具体应用之一。具体用法是:在 VB 的 EXE 工程的 IDE 界面中,引用你建立的类库文件,然后在“对象浏览器”里就可以看到你的所有类及其函数。比方你的类 myobj 中有函数 myfun(),则调用语句是:
dim theobj as new myobj
ret = theobj.myfun() 'ret 为函数返回值
当然如果你要在别的机器上使用你的组件,就必须先进行注册:regsvr32 <你的组件名>
59,Q:“我爱你”病毒传播的秘密:
A:千禧年五月分大面积流行的 "ILOVEYOU" 病毒至今让人记忆尤新。这种病毒是一种通过电子邮件流行的典型的蠕虫病毒。她是通过调用 Outlook 的应用程序对象的属性和方法进行信件发送的,其发送邮件的基本代码如下:
Set OlApp = CreateObject("outlook.application")
Set Oitem = OlApp.CreateItem(olMailItem)
With Oitem
.Subject = "邮件主题"
.To = "收件人"
.Body = "邮件正文"
.attachments.Add "path:附件" ' 添加附件
.Send ' 发送邮件
End With
60,Q:在 PowerBuilder 中使用 RichTextEdit 控件,属性中没用 Font,我想设置字体怎么办(如果不设字体,读入一个文本文件,缺省的字体对不齐)?
A:RichTextEdit 没有 Font 属性,在 Document 属性页中选择 Toolbar,使用的时候可以自行选择字体。
61,Q:在一个 PowerBuilder 程序中,我想用 RichTextEdit 控件从本地取文本文件显示,可是在我的机器上 RTE 只能显示出少量英文和乱码,程序并没有编错,因为相同的程序在其他人的机器上显示出的是正确的文本,不知是什么原因?
A:应该是默认的类型不正确,导入的时候指定类型为 FileTypeText 试试。
62,Q:如何在 PowerBuilder 的 BLOB 字段中写入大于 1M 的文件(数据库为MSSQL 7.0)?
A:源文件分块写。
63,Q:用程序控制电脑说英语?
A:现在,应用 Microsoft 提供的一套文字朗读引擎(Text-To-Speech Engine,简称 TTS),可以在程序中编写代码来使安装了声卡的电脑流畅的朗读英文。如果安装了“金山词霸2000”,那么 Windows 文件夹下会有一个 Speech 文件夹,里面的文件 vtxtauto.tlb 文件就包含了有关的类型库和函数,我们完全可以在我们的程序中调用它们,使电脑开口说话。TTS 包含在“金山词霸2000”的安装盘上,文件名为 mstts.exe 和 spchapi.exe。要在 VB 程序中调用 TTS,必须首先引用 vtxtauto.tlb 文件中的“VoiceText 1.0 Type Library”类型库,然后参考以下代码,电脑就可以说话了:
Option Explicit
Private Sub Form_Load()
Call VTxtAuto.VTxtAuto.Register(Space(1), Space(1))
VTxtAuto.VTxtAuto.Speed = 170 '设置语速(170 为正常语速,值越小语速越慢)
Dim strTxt
strTxt = "I love you very much.Do you love me? "
On Error GoTo ErrorHandler
Call VTxtAuto.VTxtAuto.Speak(strTxt, vtxtsp_VERYHIGH + vtxtst_READING)
MsgBox "OK!"
End
ErrorHandler:
' 错误处理语句
End
End Sub
至于语速、频率等的控制,大家可以在“对象浏览器”里参看相关的控制属性。
(站长话题:什么时候能够让电脑说一口流利的中国普通话甚至是方言呢?
但愿不会让我们等待太久!
但愿生产厂家能够像微软一样把技术公布给普通用户!)
64,Q:怎样判断、防止程序重复执行?
A:
Private Sub Form_load()
'判断程序是否已经运行
If App.PrevInstance Then
MsgBox "本程序已经运行!", vbInformation Or vbOKOnly, "提示信息"
Unload Me
Exit Sub
End If
'以下是主要程序
' ……
End Sub

附:另一个例子:
Option Explicit
Public Sub CheckExist(fm As Form) '防止程序重复执行
Dim title As String
If App.PrevInstance Then
title = App.title
Call MsgBox("这程序已执行", vbCritical)
App.title = "" '如此才不会 Avtivate 到自己
fm.Caption = ""
AppActivate title 'activate 先前就已运行的程序
End ' 结束
End If
End Sub
Private Sub Form_Load()
Call CheckExist(Me)
End Sub
65,Q:如何结束 Shell 所启动的程序?
A:如果被 Shell 所启动的程序还没有结束,我们就想主动结束它,该怎么做呢? 此时应调用的 Windows API 是 TerminateProcess, 细节如下:
1. API 的声明:
Const SYNCHRONIZE = &H100000
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
(注1:如果以上的声明放在「一般模块」底下,应将 Declare 之前的 Private 保留字去掉,并且在 Const 之前加上 Public 保留字。)
2. Shell 的程序范例:(以执行 MS-DOS 为例)
Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
pId = Shell("Command.com", vbNormalFocus) ' Shell 传回 Process Id
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
Call TerminateProcess( pHnd, 0 ) ' TerminateProcess 所传入的是 Process Handle
Call CloseHandle( pHnd )
(注2:以上的方案只适用于 Shell 所启动的程序,ShellExecute 则不适用,原因是 ShellExecute 函数是通过资源管理器来启动程序,而资源管理器启动程序之后,并没有将 Process ID 或 Process Handle 传回来。
注3:以上程序在 Windos98、VB6.0 下调试通过。)
66,Q:用 VB5.0 创建 Windows 程序组中的快捷方式:
A:
'API 函数声明:要在 VB5.0 中创建 Windows 的快捷方式,需要用到一个动态链接库 Vb5stkit.dll。在该动态链接库中提供了三个函数 OSfCreateShellGroup、OSfCreateShellLink、OSfRemoveShellLink,分别用于创建快捷方式程序组、快捷方式、删除快捷方式。这三个函数的声明形式分别如下:
Private Declare Function OSfCreateShellGroup Lib "Vb5stkit.dll" Alias "fCreateShellFolder" (ByVal lpstrDirName As String) As Long
Private Declare Function OSfCreateShellLink Lib "Vb5stkit.dll" Alias "fCreateShellLink" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String,ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String) As Long
Private Declare Function OSfRemoveShellLink Lib "Vb5stkit.dll" Alias "fRemoveShellLink" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String) As Long
'实现的语句:
Dim lresult As Long
lresult = OSfCreateShellGroup("Test") '在程序菜单中添加一个名为 Test 的程序组
lresult = OSfCreateShellLink("test", "记事本", "c:\Windows\notepad.exe", "")
'在程序菜单的Test程序组下创建记事本的快捷方式
lresult = OSfRemoveShellLink("Test", "记事本") '删除 Test 程序组下的快捷方式
(注:在 Windows98/NT4.0、VB5.0 下可以正常运行。但创建桌面快捷方式和 Start Menu 快捷方式有些问题。在 VB6.0 中也有些问题(是否要安装 SP3?)。)
67,Q:VB 中使 TextBox 按 Mouse 右键时只出现自定 PopUp Menu?
A:一般我们可能在 TextBox 的 MouseDown Event 中 Check 是否按右键,若是,则设定出现 Popup Menu 程式如下:
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu MyMenu
End If
End Sub
可是出现的还是原先内定的 Popup Menu,之后再按一次右键,才出现我们自定的 menu。很奇怪吧?如果用 API 来解决,那便是要拦截 Mouse 的按键(使用 SubClassing 的技巧),但是有人发现了以下的方式便可以解决(也是一个十分实作性的经验):
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
Text1.Enabled = False : Text1.Enabled = True
PopupMenu MyMenu
End If
End Sub
68,Q:用 VB 实现拖放功能:
A:拖放是用鼠标拖动一个对象到其它对象的活动。在图形操作过程中,拖放是最常用的功能之一,下面我们来看看怎样用 VB 实现拖放功能。
  首先介绍与拖放有关的控件:
  1.属性:DragMode 决定拖动操作的初始化是人工方式还是自动方式,DragIcon 确定在拖动过程中显示的指针的图标形状;
  2.方法:Drag 开始,结束或取消拖动控件;
  3.事件:MouseDown 事件发生于用户按下鼠标按钮时,DragOver 事件发生于拖动操作完成时,DragDrop 事件发生于拖动操作正在进行时。
  然后编写一个小程序,这个程序能实现在窗口中或窗口间拖动图标的功能。建立窗口 Form1 和 Form2,在窗口中都加入 Image1,为它们设置初始显示的图片。键入以下代码(本程序在 VB5.0/6.0,Window95/98/NT4.0 环境下通过):

  ' Form1 下程序代码为:
  Option Explicit
  Dim dragx As Single
  Dim dragy As Single
  Const BEGIN_DRAG=1
  Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Image1.Picture=Source   'Sourse为被拖动的控件
   Form2.Image1.Picture=LoadPicture("")
   Image1.Move(X-dragx),(Y-dragy) ' X,Y为鼠标所在目标窗体或控件的当前坐标
  End Sub
  Private Sub Form_Load()
   Load Form2
   Form2.Show 0
  End Sub
  Private Sub Image1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
   dragx=X
  dragy=Y
   Image1.Drag BEGIN_DRAG  '开始拖动操作
   Image1.DragIcon = LoadPicture("按下鼠标时想显示的光标")
  End Sub

  ' Form2 下程序代码为:
  Option Explicit
  Dim dragx As Single
  Dim dragy As Single
  Const BEGIN_DRAG=1
  Private Sub Form_DragDrop(Source As Control,X As Single,Y As Single)
   Image1.Picture=Source
   Form1.Image1.Picture=LoadPicture("")
   Image1.Move(X-dragx),(Y-dragy)
  End Sub
  Private Sub Image1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)
   dragx=X
   dragy=Y
   Image1.Drag BEGIN_DRAG
   Image1.DragIcon=LoadPicture("按下鼠标时想显示的光标")
  End Sub
69,Q:用 VB 程序如何改变桌面的墙纸图片?
A:此一问题需调用 SystemParametersInfo API 函数,细节如下:
1. API 的声明:
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
注:如果以上的声明放在「一般模块」底下,应在 Const 之前加上 Public 保留字,并且将 Private 保留字去掉。
2. 程序范例:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, BMP图档名称, SPIF_UPDATEINIFILE)
例如:
' 1. 将桌面图片设定成 c:\windows\setup.bmp:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", SPIF_UPDATEINIFILE)
' 2. 将桌面图片清掉:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "", SPIF_UPDATEINIFILE)
程序如下:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, BMP图档名称, SPIF_UPDATEINIFILE)
但以上程序设定图片之后,必须等到下次 Windows 重新启动时才生效,如果希望设定之后立刻生效,则程序须修改如下:
Const SPIF_UPDATEINIFILE = &H1
Const SPIF_SENDWININICHANGE = &H2
Const SPI_SETDESKWALLPAPER = 20
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
此外希望只有本次使用 Windows 时改变桌面图片(下次开机时还原原状),则程序如下:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", SPIF_SENDWININICHANGE) ' 去掉 SPIF_UPDATEINIFILE
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:55 am

70,Q:用 VB 程序捕捉屏幕图像:
A:在 Form1 上添加一个 Picture 和 Command 控件,代码如下(Windows98/NT、VB6.0):
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Sub ScrnCap(Lt, Top, Rt, Bot)
rWidth = Rt - Lt
rHeight = Bot - Top
SourceDC = CreateDC("DISPLAY", 0, 0, 0)
DestDC = CreateCompatibleDC(SourceDC)
BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
SelectObject DestDC, BHandle
BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Lt, Top, &HCC0020
Wnd = Screen.ActiveForm.hwnd
OpenClipboard Wnd
EmptyClipboard
SetClipboardData 2, BHandle
CloseClipboard
DeleteDC DestDC
ReleaseDC DHandle, SourceDC
End Sub

Sub Command1_Click()
Form1.Visible = False
ScrnCap 0, 0, 640, 480
Form1.Visible = True
Picture1 = Clipboard.GetData()
End Sub
71,Q:测试表中的记录总数又一法(笨而准确):
A:
Dim db As Database ' DAO
Dim rs As Recordset
Dim theRecordNum As Long
Set db = OpenDatabase(App.Path & "\mylib.mdb")
Set rs = db.OpenRecordset("test") '测试表 test 中记录数
theRecordNum = 0
rs.MoveFirst
Do While Not rs.EOF()
theRecordNum = theRecordNum + 1
rs.MoveNext
Loop
Debug.Print theRecordNum ' 在监视窗口中输出
72,Q:如何判断生成的记录集是“空集”(记录数为 0)?
A:如果记录集的 eof 为真,则记录集是“空集”:
if AdoRS.EOF=true then
' ……
EndIf
73,Q:VB 编程中如何使窗口右上角的关闭按钮(X)失效?
A:用以下两个过程中的一个即可:
1、Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = True
End Sub
2、Private Sub Form_Unload(Cancel As Integer)
Cancel = True
End Sub
74,Q:用 VB 实现超级链接功能:
A:声明 ShellExecute 函数;在 form 上建立 label、line 控件各一个(myHttp、Line1),再仿照以下代码,即可打开浏览器登录 http://why100000.at.china.com 网站。
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub myHttp_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.Visible = False
End Sub

Private Sub myHttp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.Visible = True
End Sub
Private Sub Form_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.Visible = False
End Sub
Private Sub myHttp_Click()
Dim HttpJump
Dim MyUrl As String
MyUrl = "http://why100000.at.china.com"
HttpJump = ShellExecute(0&, vbNullString, MyUrl, vbNullString, vbNullString, vbNormalFocus)
End Sub
75,Q:在 VB 安装程序中加入“卸载”功能:
A:在制作安装盘的过程中,在建立程序项的时候,建立一个名为“卸载”的程序项,“目标”文本框中填入命令:
$(WinPath)\st6unst.exe -n "$(AppPath)\st6unst.log"
这样安装后的程序就会有卸载功能了。
76,Q:怎样在 VC++ 中产生闪烁的光标
A:先调用函数 CreateCaret(),然后再调用函数 ShowCaret()。例如:
  if(CreateCaret(hWnd,NULL,2,20))
{
SetCaretPos(0,0);
 ShowCaret(hWnd);
}
77,Q:VFP 程序编译成 .EXE 文件后运行,为在什么屏幕上一闪而过就结束了?
A:这是初学 VFP 的人易犯的一个错误,只要在主文件中加入 read events 语句,在退出程序中加入 clear events 即可。
78,Q:VB 中如何在保存并覆盖文件时让其出现对话框,询问是否替换
A:用 CommonDailog 控件,在 CommonDialog 控件 Flags 属性设定中添加 cdlOFNOverwritePrompt,如:
CommonDialog1.Flags=CommonDialog1.Flags Or cdlOFNOverwritePrompt
  CommonDialog1.ShowSave
79,Q:VB6 中的字体出现乱码怎么办?
A:这是 VB 的 Bug。引起的原因是系统中安装了 Word2000 或 IE5.x 以及繁体支持,将繁体支持删除,或者安装 VB6 的 SP3 或 SP4 就可以解决问题。
80,Q:怎样用 VB 编写多线程程序
A:尽管 VB5.0 是单线程的,但用 addressof 加上一些 API 函数,就可以非常容易的做多线程程序。每一个线程约占用 20 毫秒的时间片。
VB5 有一个主线程,我们可以另外加一个工作线程。对于不清楚什么是单/多线程的程序员,我们用一个简单的列子来说明一下:
在 Form 里加上两个 timer 控件,把 interval 属性设成 5000(5秒),然后在两个 timer1_timer 事件中放一个大 Loop,如 for 10000 next, 运行。你会看到第二个 timer 控件不会在五秒后执行,除非 timer1 的for-next 结束。同样,如果你的程序中有大量的数据库读写,你的用户界面可能被“冻”。这时,我们就需要用多线程来改进程序了。(当然你可以用 DoEvents 来避免被冻,但用 DoEvents 有很多副作用-这里不提。)
我们用的第一个 API 是 CreateThread,VB 的格式是:
private declare function CreateThread Lib "kernel32" (byval pThreadAttributes as any, byval dwStackSize as long, byval lpStartAddress as long, lpParameter as any, byval dwCreationFlags as long, lpThreadID as long) as long
CreateThread 的参数指出你将要创立的线程是什么样子的,CreateThread 的返回值是一个线程的 handle。以下是
VB 的多线程初始化程序:
Public Sub Initialize(lpfnBasFunc as long)
dim dwStackSize as long
dim dwCreationFlags as long
dim lpThreadId as long
dim lpParameter as long
dim myNull as long
myNull = 0& 'create a null pointer
dwStackSize = 0 '0 表示用 exe stack size
dwCreationFlags = 4 '用 4 表示初始化后先不激活,让别人来激活
Me.Thread = CreateThread(myNull, dwStackSize, lpfnBasFunc, myNull, dwCreationFlags,lpThreadId)
If Me.Thread = myNull then
Msgbox "create thread failed"
End if
End Sub
下面是两个 API 用来激活/暂停该线程:
private declare function ResumeThread lib "kernel32"(byval hThread as long)as long
private declare function SuspendThread lib "kernel32"(byval hThread as long)as long
让我们来用一个变量表示当前线程的状态:
public ThreadStatus as boolean
在 VB 里,可用 property 来实现 ThreadStatus 的管理。
Public property Let Enabled(byval vNewValue as boolean)
if vNewValue = true and Me.ThreadStatus = false then
ResumeThread Me.Thread
Me.ThreadStatus = True
elseif Me.ThreadStatus = true then
SuspendThread Me.Thread
Me.ThreadStatus = False
end if
End Property
这个简单的类可以用 New Object 来引用:
'make new thread object
dim myThread as New clsThreads '创建县城 Foo
myThread.Initialize AddressOf Foo '激活县城
myThread.Enabled = True
执行后,你可以用 PVIEW95.EXE 看到你的线程。你还可以提高你的线程的优先级:
SetThreadPriority '设优先级
GetThreadPriority '查优先级
你把以上的程序加入 timer 例子,就会看到两个 timer 同时运行。
这里要提醒一下,VB5 的开发环境是单线程的,如果你的程序写错,或中断后试图恢复,往往会出错,有时是严重出错。总之,用 VB 的多线程可以写出和 VC++ 一样快的程序,而且开发容易的多,开发效率也快得多。
81,Q:加快 Delphi5.0 启动速度
Aelphi5.0 的启动确实有点慢,既要显示快闪窗口,又要读注册表设置,对于配置低的机器简直是一种折磨,实际上我们可以通过启动参数来控制它:
建立一个快捷方式,目标为:C:\DELPHI5\Delphi5\Bin\delphi32.exe /ns /np (假设 delphi 装在C:\delphi5 目录下),ns 表示 no splash,即不显示快闪屏幕,np 表示 no project,即不加载工程。
82,Q:观察 Delphi5.0 内存堆分配情况:
A:建立一快捷方式,目标为:C:\DELPHI5\Delphi5\Bin\delphi32.exe /hm /hv
此后每启动此快捷方式就可看到 Delphi5.0 的标题栏上不停变化的堆分配字节数。
83,Qelphi 中如何在打印或打印预览前获取报表页数
A:有时需要在打印前获取报表的打印页数,比如我们需要在页眉或页脚中打印“共 xx 页 第 xx 页”,如何实现呢?QuickReport 生成 Report 之前,我们是无法得知报表页数的,而 QuickReport 是在打印或打印预览时才生成报表,换言之我们只有在打印或打印预览前先将报表生成一次才能获取打印页数。生成报表的方法是 Prepare,请参考以下的例子:
...
var nPageCount:integer;
begin
  {...}
  QuickRep1.Prepare;
  nPageCount:=QuickRep1.QRPrinter.PageCount;
  QuickRep1.QRPrinter.Free;
  QuickRep1.QRPrinter:=nil;
  {在此修改QuickRep1,实现在页眉或页脚中打印“共 xx 页 第 xx 页” ... }
  QuickRep1.PreView;
  {...}
End;
84,Q:如何在 Delphi 中实现普通文件的拷贝?
A:示例代码如下:
procedure TForm1.btnCopyClick(Sender: TObject);
var
sfile,dfile : String;
begin
sfile :='a.txt'; //被copy的文件
dfile :='b.txt'; //copy后的文件名
CopyFile(pchar(sfile),pchar(dfile),false);
第三个参数为 false,如果 b.txt 已经存在,则覆盖;如果为 true,则不进行操作。
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

电脑入门级之新人199问 Empty 回复: 电脑入门级之新人199问

帖子 由 知音 周五 五月 07, 2010 1:56 am

85,Q:用 Delphi 编写支持多国语言的程序
A:使用 Delphi5.0 的 Integrated Translation Environment(ITE) 可以轻易完成这个工作。
创建一个示意性的工程 MultiLanguage,在 Form 上放一个 Label 和一个 Button,分别把 Caption 赋值为“English Label”和“English Button”。
选择菜单 Project|anguages|Add ...,Delphi 显示 Add Languages 对话框, 选择 Next。
从语言列表中选中“英语(美国)”和“中文(中国)”,选择 Next。
ITE 会根据所选的语言创建子目录,目录名称是语言的缩写,选择 Next。
第一次增加语言时,Update Mode 为 Create new, 选择 Next。选择 Finish。
Delphi 会自动创建支持不同语言的资源动态库。Delphi 还会自动创建一个工程组,其中包括原有的 MultiLanguages.EXE,还包括新建的两个资源动态库(MultiLanguages.enu,MultiLanguages.chs)。保存工程组。
Delphi 启动 Translation Manager,左边是需要翻译的语言,右边是完成百分比。选择“中文(中国)”|Forms|Unit1,在右边第 15 行和 20 行填写翻译后的中文。保存并关闭。
打开 Project Manager,编译 MultiLanguages.enu 和 MultiLanguages.chs,Delphi 会在相应的子目录生成资源动态库,但后缀不是 DLL 而是 ENU 和 CHS。
86,Q:在 SQL Server 中怎么样恢复数据的存储?
A:在 SQL Server 中提供了这种恢复方式的存储过程。
一个数据库包括两个文件,mdf 数据库文件和 ldf 日志文件
1.sp_attach_db [@dbname =] 'dbname',[@filename1 =] 'filename_n'
给系统添加一个数据库,在 dbname 指定数据库名称,filename_n 指定数据库的文件和日志文件。比如我有一个 ji 的库,停止SQL Server 服务备份 ji_data.mdf,ji_log.ldf,启动SQL server,删除掉这个库,然后再把这两个文件拷到 sql server DATA 目录中,在 Query Analyzer 中执行如下语句:
EXEC sp_attach_db @dbname = N'ji',
@filename1 = N'd:\mssql7\data\ji_data.mdf',
@filename2 = N'd:\mssql7\data\ji_log.ldf'
就会把这个库加入到 SQL Server Group 中。
87,Q:Asp 中无 DSN 法连接 SQL Server 数据库的方法及其注意问题
A:无 DSN 法连接 SQL Server 数据库的方法示例如下:
'Less-DSN 法连接 SQLServer 服务器
set conn=server.createObject("adodb.connection")
conn.Open "driver={SQL Server};server=mysqlserver; database=jspcs; uid=sa; pwd=sql"
其中服务器名为 mysqlserver(ip=192.168.0.1),数据库为 jspcs,用户名为 sa,口令为 sql。由于使用了 TCP/IP 协议,所以 server=mysqlserver 语句段还可以写成指向安装 SQL Server 的机器的 IP 地址,即 server=192.168.0.1,注意该 IP 地址必须是网卡的默认(基本) IP 地址。同时,如果在 Client 端设置 SQL Server ODBC,也可以把服务器名输成 SQL Server 的 IP 地址。
88,Qelphi 中判断系统是否已经安装了声卡
A:要判断系统是否安装了声卡,调用 Winmm.dll 中的 waveOutGetNumDevs 和 midiOutGetNumDevs 函数就可以了。这两个函数在 Var 部分的说明如下:
function waveOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'waveOutGetNumDevs';
function midiOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'midiOutGetNumDevs';
//判断声卡是否存在
Function IsSoundcardInstalled : Boolean;
Var
WaveOutPutDeviceCount : Integer;
MidiOutPutDeviceCount : Integer;
Begin
Result := False;
WaveOutPutDeviceCount := waveOutGetNumDevs;
MidiOutPutDeviceCount := midiOutGetNumDevs;
if (WaveOutPutDeviceCount>0) and (MidiOutPutDeviceCount>0) Then
Result := True
Else
Result := False;
End;

procedure TForm1.Button1Click(Sender: TObject);
Begin
if IsSoundcardInstalled Then
ShowMessage('系统已经安装了声卡.')
Else
ShowMessage('系统没有安装声卡.');
end;
89,Q:用 ASP 打开 Web 服务器上的应用程序
A:
<%
dim wsh
set wsh = createobject("WScript.Shell")
response.write wsh.run("command.com")
set wsh = nothing
%>
90,Q:一个用进度条表示的时钟
A:在 Form 上拖 3 个进度条,命名为 h、m、s,分别表示时、分、秒,再放一个 Timer 控件,然后键入以下代码:
Private Sub Form_Load()
h.Orientation = ccOrientationVertical
h.Scrolling = ccScrollingSmooth
h.Max = 24: h.Min = 0
m.Orientation = ccOrientationVertical
m.Scrolling = ccScrollingSmooth
m.Max = 60: m.Min = 0
s.Orientation = ccOrientationVertical
s.Scrolling = ccScrollingSmooth
s.Max = 60: s.Min = 0
End Sub
Private Sub Timer1_Timer()
h.Value = Format$(Now, "hh")
m.Value = Minute(Now)
s.Value = Format$(Now, "ss")
End Sub
91,Qelphi 中实现对日期数据的有效性检验
A:函数如下:
function isdate(s:string):boolean;
begin
result:=false;
try
strtodate(s);
result:=true;
except
on econverterror do
result:=false;
end;
end;
92,QHP4 的 CGI 版本和 ISAPI 版本有什么区别?
A:1、CGI 方式是以 php.exe 来解释 .PHP 文件的,ISAPI 方式是以 php4ts.dll 来解释 .PHP 文件的;
2、ISAPI 会快一些;
3、ISAPI 据说可以支持 HTTP 认证等功能;
4、ISAPI 方式没有 CGI 方式稳定,也不大好配置;
5、ISAPI 方式只有 WIN32 下才有,而且在 ISAPI 方式下和 CGI 方式下的一些全局变量的值会不一样。
93,Q:VFP6.0 一条语句有多长?
A:VFP6 的参考中说,每条语句中字符数的最大值是 8192个,但命令编辑器每行最多只能键入 255 个字符,对于超过 255 个字符的命令行,可以用分号将语句分成多行,每行都不长过 250 个字符即可。注意如果是字符串常量跨行,则后续行应以编辑器本行的第一个位置为基准,否则字符串中间会无端地加许多空格。
94,Qelphi 中调用 Windows API 函数 ShellExecute 实现打开 IE 和 Outlook 应用程序?
A:在 uses 单元加入 Shellapi 引用,然后应用以下语句(函数):
打开 IE:ShellExecute(Handle,'open','http://www……',nil,nil,SW_SHOWNORMAL);
打开 IE:ShellExecute(Handle,'open','mailto:who@mail.addr?subject=…&body=…',nil,nil,SW_SHOWNORMAL);
如果以上函数的返回值小于或等于 32,则表明发生网络错误。
95,Q:用一条 SQL 语句找出“相同的客户代码中序号最大”的那些数据:
A: Select * from meney_in_list WHERE 序号 IN (select MAX(序号) from meney_in_list Group by 客户代码)
96,Q:在 Delphi5.0 中怎么找不到 Html 组件?
A: Html 组件在 Delphi4.0 中有,在 Delphi5.0 中已经升级为 TWebBrowser 组件,且功能有所加强,比如支持图片。
97,Q:在 Delphi 中实现控件焦点转移?
A:要在 Delphi 中实现按回车后控件焦点的转移,可以调用 Windows API 消息发送函数 PostMessage,做法如下:
把 Form1 的 KeyPreview 属性设为 True,在 Edit 和 Memo 的 OnKeyPress 事件中加入以下代码:
if Key=#13 then
if not (ActiveControl is TMemo) then
PostMessage(Handle,WM_KERYDOWN,VK_TAB,0);
98,Q:在 Delphi 中判断本程序是否已经运行?
A:要判断实例是否运行,必须在程序的消息循环之前,在 Delphi 中,是在 Application.Initialize 之前。实现本功能, Delphi 使用的主要函数是 CreateMutex。这个函数用来生成一个 Mutex 对象的句柄,这个句柄具有操作系统的全局命名空间。
  Delphi 例子程序的部分代码如下:
  const MB_MINE = MB_OK or MB_ICONINFORMATION or MB_TASKMODAL;
  var
   hMutex: DWORD;
  begin
   hMutex := CreateMutex(nil, TRUE, 'MyMutex'); //TRUE 标明该进程拥有此 Mutex 对象
  if (GetLastError = ERROR_ALREADY_EXISTS) then //Mutex 对象是否存在
   begin
    ReleaseMutex(hMutex);
   Exit; //退出程序
    end
   else
   if hMutex = ERROR_INVALID_HANDLE then //检查"mymutex"这个名字是否被其他诸如文件映射、信号灯和事件等对象占用
  MessageBox(0, 'The name matched with a existing object!', 'Information',MB_MINE)
  else
   begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
   ReleaseMutex(hMutex); //释放 Mutex 对象
   end;
99,Qelphi 与 VB、ASP 带变量参数 SQL 语句的比较
A:在 SQL 语句的 where 条件表达式中要带字符串变量 s 和数值变量 v,在 Delphi 中为:
strSQL:='select * from a_table where a_f1='+''''+s+''''+' and a_f2='+'v';
在 VB 和 Asp 中为:
strSQL="select * from a_table where a_f1='" & s & "' and a_f2=" & v
100,Qelphi 实现渐变窗口背景
A:创建一个应用程序,在 Form1 的 OnPaint 事件里面添加如下一段代码:
procedure TForm1.FormPaint(Sender: TObject);
var
i:word;
dy,y:real;
begin
dy:=clientheight/256;
y:=0;
for i:=255 downto 0 do
begin
canvas.brush.color:=$00000000+i*$10000;
canvas.fillrect(rect(0,round(y),clientwidth,round(y+dy)));
y:=y+dy;
end;
end;
知音
知音

帖子数 : 117
积分 : 6723
威望 : 0
注册日期 : 10-05-07

返回页首 向下

返回页首


 
您在这个论坛的权限:
不能在这个论坛回复主题