📄 del003.html
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>Delphi中对用户输入数据的控制</title>
<script language="JavaScript">
function showhide() {
var i, ss, cc, rr;
cc = showhide.arguments;
for (i=0; i<(cc.length-2); i+=3)
{ ss = cc[i+2];
if (navigator.appName == 'Netscape' && document.layers != null)
{ rr = eval(cc[i]);
if (rr) rr.visibility = ss;
} else if (document.all != null)
{ if (ss == 'show') ss = 'visible';
if (ss == 'hide') ss = 'hidden'; rr = eval(cc[i+1]);
if (rr) rr.style.visibility = ss;
}
}}
function keepIE(WinName,WinTop,WinLeft) {
document.all[WinName].style.top=WinTop+parseInt(document.body.scrollTop)+document.body.clientHeight-90
document.all[WinName].style.left=WinLeft+parseInt(document.body.scrollLeft)+document.body.clientWidth-80
}
function keepNN(WinName,WinTop,WinLeft) {
document.layers[WinName].moveTo(self.pageXOffset+WinLeft+window.innerWidth-80,self.pageYOffset+WinTop+window.innerHeight-90)}
</script>
</head>
<body style="font-size: 9pt" background="../../res/back.JPG">
<table border="0" width="100%" style="font-size: 9pt">
<tr>
<td width="100%" align="center"><strong>Delphi中对用户输入数据的控制</strong></td>
</tr>
<tr>
<td width="100%" align="center">文/尚望 录入/江湖小子</td>
</tr>
</table>
<p>一个数据库应用程序,常常需要提供数据输入功能,即让用户输入数据,并存入数据库中,这就涉及到一个数据输入是否合法的问题。若用PowerBuilder来编写这种程序,实现这一点是非常方便的,因为PowerBuilder中每一个数据输入控件都可以单独对其输入进行控制,但Delphi没有提供这样的功能。我们用Delphi编写这样的程序时,就需要自己编写一些代码来实现。这并不是Delphi的一个缺点,相反,我们通过对用户输入数据的人为控制,可以编写出相当方便可靠的数据库应用程序。下面举一个很常见的例子加以说明。<br>
<br>
也许大家在编写数据库程序时遇到过这种情况:库中一些字段必须是非空的,比如索引字段,但用户输入时可能会忘记,如果对这种情况不作出提示,仍旧将这条记录存入库中,就会破坏库的完整性,而且在排序、查找等操作中也会出错。于是我们就要对这种情况加以控制。举例如下:<br>
<br>
一、建立一个简单的数据库,设名为People.dbf,别名为man,库结构如表1。表1
字段名 类型 长度 name c 8 age n 3 work c 10<br>
<br>
二、创建一个工程。<br>
<br>
三、在Form1中放入如下控件,并设定其属性如表2。<br>
<br>
四、定义一个布尔类型的数组,作为三个DbEdit框中是否有数据输入的标志。<br>
<br>
implementation<br>
<br>
var<br>
<br>
test:array[1..3]of boolean;<br>
<br>
{$R *.DFM}<br>
<br>
五、编写Dbedit1、DbEdit2、DbEdit3的OnExit事件代码如下:<br>
<br>
procedure TForm1.DBEdit1Exit(Sender:TObject);<br>
<br>
begin<br>
<br>
if DbEdit1.text=′′ then {若要进行更精确的控制,在这里可以填写更多代码}<br>
<br>
est[1]:=false<br>
<br>
lse test[1]:=true;<br>
<br>
end;<br>
<br>
procedure TForm1.DBEdit2Exit(Sender:TObject);<br>
<br>
begin<br>
<br>
if DbEdit2.text=′′ then<br>
<br>
test[2]:=false<br>
<br>
lse test[2]:=true;<br>
<br>
end;<br>
<br>
procedure TForm1.DBEdit3Exit(Sender:TObject);<br>
<br>
begin<br>
<br>
if DbEdit3.text=′′ then<br>
<br>
est[3]:=false<br>
<br>
lse test[3]:=true;<br>
<br>
end;<br>
<br>
六、编写Button1的Onclick事件代码如下:<br>
<br>
procedure TForm1.Button1Click(Sender:TObject);<br>
<br>
var i:integer;<br>
<br>
begin<br>
<br>
i:=1;<br>
<br>
while test[i] and (i<=3) do {检测test数组元素是否为真}<br>
<br>
i:=i+1;<br>
<br>
if i<=3 then {有数据输入为空的情况}<br>
<br>
begin showmessage(′数据未完全录入′); {提示}<br>
<br>
case i of<br>
<br>
1:DbEdit1.Setfocus;<br>
<br>
2:DbEdit2.Setfocus;<br>
<br>
3:DbEdit3.Setfocus;<br>
<br>
end; {激活数据输入为空的DbEdit }<br>
<br>
end<br>
<br>
else begin table1.post; {如果输入都非空,则存入库中}<br>
<br>
Button1.Enabled:=false;<br>
<br>
Button2.Enabled:=true;<br>
<br>
end;<br>
<br>
end;<br>
<br>
七、编写Button2的OnClick事件代码如下:<br>
<br>
procedure TForm1.Button2Click(Sender:TObject);<br>
<br>
var i:integer;<br>
<br>
begin<br>
<br>
for i:=1 to 3 do test[i]:=false; {初始化数组}<br>
<br>
table1.open; {打开数据库}<br>
<br>
table1.Append; {增加一条空记录}<br>
<br>
table1.edit; {使库处于修改状态}<br>
<br>
DbEdit1.setfocus;<br>
<br>
Button1.Enabled:=true;<br>
<br>
Button2.Enabled:=false;<br>
<br>
end;<br>
<br>
八、编写Form1的OnClose事件代码如下:<br>
<br>
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);<br>
<br>
begin<br>
<br>
table1.close; {关闭数据库}<br>
<br>
end;<br>
<br>
九、存盘并运行程序,单击“录入”后向DbEdit框中输入数据,输入完毕按“确定”按钮,若某个DbEdit框未输入数据,这时会出现一个提示框,显示出错信息,而且入库操作不会进行,光标会停留在未输入数据的DbEdit框中,等待用户输入数据,直到必须输入数据的DbEdit框都被填入数据后,这条记录才会被存入库中。这样就避免了不完整记录的入库。<br>
<br>
显然,我们还可以在DbEdit的OnExit事件中加入更多的代码,来对该框进行更精确的控制,这里限于篇幅,就不在一一举例了。<br>
<br>
注意:有些数据库并不是要求每个字段都非空,这时只需对要求非空的字段加以控制就行了。表2
控件名称 属性 作用 DataSource1 DataSet:Table DbEdit1DbEdit2DbEdit3
DataSource:DataSource1 DataField:nameDataField:ageDataField:work
用于输入姓名用于输入年龄用于输入职业 Table
DataBaseName:manTalbeName:people.dbf 指定别名及数据库名称 Button1 Caption:确定
确定向库中写入数据 Button2 Caption:录入 开始数据输入操作<br>
</p>
<div id="content">
<p><a name="off"></a></p>
<div id="Silversand" style="position:absolute; left:0px; top:0px; z-index:1"><a
href="javascript:void(null)"
onclick="showhide('document.layers[\'Win0\']','document.all[\'Win0\']','show')">
<dd><img SRC="http://www.silversand.net/222.gif" NOSAVE BORDER="0" height="48" width="42"></a></dd>
</div><script language="JavaScript">
IE4=(document.all)?1:0
NN4=(document.layers)?1:0
if (IE4)
{
if( (document.body.clientHeight>300)&&(document.body.clientWidth>400) )
{
setInterval('keepIE("Silversand",0,0)',1000)
}
else
{
document.all['Silversand'].style.visibility = 'hidden';
}
}
if (NN4)
{
if( this.window.innerHeight<300 )
{
document.layers['Silversand'].visibility = 'hide'
}
if( this.window.innerWidth<400 )
{
document.layers['Silversand'].visibility = 'hide'
}
else
{
setInterval('keepNN("Silversand",0,0)',1000)
}
}
</script>
<div id="Win0"
style="position:absolute; width:80px; height:120px; z-index:2; visibility: hidden"><script
language="JavaScript">
IE4=(document.all)?1:0
NN4=(document.layers)?1:0
if (IE4)
setInterval('keepIE("Win0",-30,-30)',1000)
if (NN4)
setInterval('keepNN("Win0",-30,-30)',1000)
</script>
<table width="80" border="0" cellpadding="3" bgcolor="#ECF8FF">
<tr align="CENTER">
<td valign="middle" align="CENTER"><small>=========<a href="#off"
onmouseover="showhide('document.layers[\'Win0\']','document.all[\'Win0\']','hide','document.layers[\'Win1\']','document.all[\'Win1\']','hide','document.layers[\'Win2\']','document.all[\'Win2\']','hide','document.layers[\'Win3\']','document.all[\'Win3\']','hide','document.layers[\'Win4\']','document.all[\'Win4\']','hide','document.layers[\'Win5\']','document.all[\'Win5\']','hide','document.layers[\'Win6\']','document.all[\'Win6\']','hide','document.layers[\'Win6\']','document.all[\'Win6\']','hide')">X</a><br>
<a href="javascript:void(null)"
onclick="showhide('document.layers[\'Win1\']','document.all[\'Win1\']','show','document.layers[\'Win2\']','document.all[\'Win2\']','hide','document.layers[\'Win3\']','document.all[\'Win3\']','hide','document.layers[\'Win4\']','document.all[\'Win4\']','hide','document.layers[\'Win5\']','document.all[\'Win5\']','hide','document.layers[\'Win6\']','document.all[\'Win6\']','hide')">碧海银沙</a><br>
<a href="javascript:void(null)"
onclick="showhide('document.layers[\'Win1\']','document.all[\'Win1\']','hide','document.layers[\'Win2\']','document.all[\'Win2\']','show','document.layers[\'Win3\']','document.all[\'Win3\']','hide','document.layers[\'Win4\']','document.all[\'Win4\']','hide','document.layers[\'Win5\']','document.all[\'Win5\']','hide','document.layers[\'Win6\']','document.all[\'Win6\']','hide')">娱乐休闲</a><br>
<a href="javascript:void(null)"
onclick="showhide('document.layers[\'Win1\']','document.all[\'Win1\']','hide','document.layers[\'Win2\']','document.all[\'Win2\']','hide','document.layers[\'Win3\']','document.all[\'Win3\']','show','document.layers[\'Win4\']','document.all[\'Win4\']','hide','document.layers[\'Win5\']','document.all[\'Win5\']','hide','document.layers[\'Win6\']','document.all[\'Win6\']','hide')">技术论坛</a><br>
<a href="http://bookmark.silversand.net/cgi-bin/bookmark/viewsilversand.cgi" target="new">银沙书签</a><br>
</small></td>
</tr>
</table>
</div><div id="Win1"
style="position:absolute; width:80px; height:120px; z-index:3; visibility: hidden"><script
language="JavaScript">
IE4=(document.all)?1:0
NN4=(document.layers)?1:0
if (IE4)
setInterval('keepIE("Win1",-160,-105)',1000)
if (NN4)
setInterval('keepNN("Win1",-160,-105)',1000)
</script>
<table width="70" border="0"
onmouseup="showhide('document.layers[\'Win1\']','document.all[\'Win1\']','hide')"
cellpadding="0" bgcolor="#ECF8FF">
<tr align="left">
<td valign="middle" align="left"><small>=========<a href
onmouseover="showhide('document.layers[\'Win1\']','document.all[\'Win1\']','hide')">X</a><br>
<a href="http://www.silversand.net" target="new"><font color="#FF0000">碧海银沙</font></a><br>
<a href="http://chat.silversand.net" target="new">聊天室</a><br>
<a href="http://game.silversand.net" target="new">游戏城</a><br>
<a href="http://music.silversand.net" target="new">音乐厅</a><br>
<a href="http://cards.silversand.net" target="new">贺卡中心</a><br>
<a href="http://software.silversand.net" target="new">软件库</a><br>
<a href="http://alumni.silversand.net" target="new">同学校友录</a><br>
<a href="http://www.nethome.com.cn" target="new">网上居</a><br>
<a href="http://vote.silversand.net" target="new">投票站</a><br>
<a href="http://bookmark.silversand.net" target="new">网上书签</a><br>
<a href="http://address.silversand.net" target="new">地址簿</a><br>
<a href="http://calendar.silversand.net" target="new">网上日历</a><br>
<a href="http://news.silversand.net" target="new">每日新闻</a><br>
<a href="http://www.silversand.net/mud/" target="new">碧海银沙MUD</a><br>
</small></td>
</tr>
</table>
</div><div id="Win2"
style="position:absolute; width:85px; height:120px; z-index:3; visibility: hidden"><script
language="JavaScript">
IE4=(document.all)?1:0
NN4=(document.layers)?1:0
if (IE4)
setInterval('keepIE("Win2",-80,-105)',1000)
if (NN4)
setInterval('keepNN("Win2",-80,-105)',1000)
</script>
<table width="70" border="0"
onmouseup="showhide('document.layers[\'Win2\']','document.all[\'Win2\']','hide')"
cellpadding="0" bgcolor="#ECF8FF">
<tr align="CENTER">
<td valign="middle" align="left"><small>=========<a href
onmouseover="showhide('document.layers[\'Win2\']','document.all[\'Win2\']','hide')">X</a><br>
<a href="http://joke.silversand.net" target="new">笑林广记</a><br>
<a href="http://stamp.silversand.net" target="new">集邮热线</a><br>
<a href="http://hanaga.silversand.net" target="new">文物之门</a><br>
<a href="http://www8.silversand.net/com/dtbook/" target="new">中文书库</a><br>
<a href="http://www.soccerchina.com/" target="new">足球世界</a><br>
<a href="http://psfnba.nethome.com.cn/tuxiang/index.html" target="new">NBA世界</a><br>
<a href="http://roytennis.silversand.net/" target="new">网球天地</a><br>
<a href="http://starpic.nethome.com.cn/" target="new">明星图片</a><br>
</small></td>
</tr>
</table>
</div><div id="Win3"
style="position:absolute; width:85px; height:120px; z-index:3; visibility: hidden"><script
language="JavaScript">
IE4=(document.all)?1:0
NN4=(document.layers)?1:0
if (IE4)
setInterval('keepIE("Win3",-80,-105)',1000)
if (NN4)
setInterval('keepNN("Win3",-80,-105)',1000)
</script>
<table width="70" border="0"
onmouseup="showhide('document.layers[\'Win3\']','document.all[\'Win3\']','hide')"
cellpadding="0" bgcolor="#ECF8FF">
<tr align="CENTER">
<td valign="middle" align="left"><small>=========<a href
onmouseover="showhide('document.layers[\'Win3\']','document.all[\'Win3\']','hide')">X</a><br>
<a href="http://www.silversand.net/network/network.html" target="new">网络天地</a><br>
<a href="http://java.silversand.net/" target="new">JAVA世界</a><br>
<a href="http://pb7.nethome.com.cn/" target="new">PB资讯站</a><br>
<a href="http://zoron-zj.nethome.com.cn/" target="new">FLASH技术</a><br>
<a href="http://foxpro.silversand.net/" target="new">FOXPRO教学</a><br>
<a href="http://yestime.silversand.net/" target="new">软件王</a><br>
<a href="http://sucai.silversand.net/" target="new">素材精品</a><br>
<a href="http://active.silversand.net/" target="new">动感网络</a><br>
<a href="http://tutor.silversand.net/" target="new">初学者园地</a><br>
</small></td>
</tr>
</table>
</div></div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -