⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 del003.html

📁 在Delphi中对用户输入的数据该如何控制?
💻 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&lt;=3) do {检测test数组元素是否为真}<br>
<br>
i:=i+1;<br>
<br>
if i&lt;=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 + -