一个关于清空的问题!(88分)

  • 主题发起人 主题发起人 火鸟不死
  • 开始时间 开始时间

火鸟不死

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的是一个简单的学生姓名与学号的查询系统。
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
DataSource1: TDataSource;
Table1: TTable;
procedure Edit1enter(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Edit1Enter(Sender: TObject);
begin
edit1.Text:=''; //清空edit1
edit2.Text:=''; //清空edit2
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with table1 do
begin
label3.Caption:='';
indexfieldnames:='sn';
setkey;
if edit1.text=''then
showmessage('请输入查询学号')
ELSE
fieldbyname('sn').asstring:=edit1.text;
if gotokey then
begin
label3.caption:='查询成功';
edit2.Text:=fieldbyname('name').AsString;
memo1.Lines[0]:='姓名:'+fieldbyname('name').asstring;
memo1.Lines[1]:='学号:'+fieldbyname('sn').asstring;
end
else
begin
edit2.Text:='查询此人不在';
label3.caption:='查找失败';
memo1.Lines[0]:='此人不在';
memo1.lines[1]:='';
end;

end;
end;
运行之后在edit1中不能输入任何东西,edit2中却可以。请问这里有什么毛病啊?应该怎么
改啊?谢谢!
 
edit1中不是不能输入东西,是你输入完东西之后就把它清空了,所以你看不到你
输入的值
 
你用tab键试试
 
可以的,我试了
检查edit1的readonly属性或enabled属性
 
commons_sheng说得对,Edit1.Text=''不能在它自己的ENTER事件中写,要不然只要焦点
还在EDIT1中,EDIT1的值就会被清空
 
To commons_sheng:
就是edit1中不能输入东西,但是edit2却可以! tab键?用tab键干什么?
To Brave:
readonly:false
enabled:ture
但是还是不能输入!
To cacao_cacao:
那是不是应该加:
procedure TForm1.Edit1Chang(Sender: TObject);
begin
edit1.Text:=''; //清空edit1
end;
对不对?不对的话应该怎么改?
谢谢!


 
删除Edit1,然后重新放一个看看,因为我这样试过也是可以输入的
 
To commons_sheng:
那应该怎么让edit1实现自动清空呢?我的程序必须让EDIT1和EDIT2都能实现自动清空。
 
注意这儿:Edit1Enter是你的Edit1得到焦点的时候处理.我想你是COPY的Edit1控件,所以
你的edit2也是用的这个事件,所以出了问题.
procedure TForm1.Edit1Enter(Sender: TObject);
begin
edit1.Text:=''; //清空edit1
edit2.Text:=''; //清空edit2
end;
解决方法,单独用一个procedure,将这两行代码写在里面,使用前调用一下,就能清空了.
 
procedure TForm1.Edit1Enter(Sender: TObject);
begin
edit1.Text:=''; //清空edit1
end;
procedure TForm1.Edit2Enter(Sender: TObject);
begin
edit2.Text:=''; //清空edit2
end;
 
OK!问题搞定!主要是在修改edit1和edit2的events的onenter的时候没注意。
*_^
 
后退
顶部