Delphi中,我使用了一个TEdit控件,把他设为了只读,现在需要判断其中的text是否改变使用

2025-06-29 07:39:17
推荐回答(5个)
回答1:

只读,只是针对软件用户而言,禁止用户通过键盘或粘贴输入字符,但并不禁止程序员用代码写入字符,因此无需检测更新,在代码写入字符之后,直接给B赋值。
通过按钮改变了TEdit中的text为什么B仍然是False
可能是设为只读后,更新事件不被触发了

回答2:

  要实现你所需要的功能,要用到Windows的消息处理机制,这样相对比较麻烦,有一个简单的办法,就是在你用Button改变了Edit1的内容后,再执行Edit1的OnChange事件处理过程。

例如:
Edit1.Text:='我爱回答';
Edit1Change(Edit1);

回答3:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
B:Boolean;
implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
B:=TRUE;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:='asdfasd';
if B then
showmessage('aaa');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if B then
edit2.Text:='true'
else
edit2.Text:='false';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
B:=FALSE;
end;
end.

经过以上代码测试,你说的问题没有重现。建议重装delphi或换台机器试试。

回答4:

楼主,我打个通俗的比方,你如你的Edit是一个广告灯箱, 你架设了个广告灯箱在街头,设置了报警装备,有人往玻璃上乱贴东西的话,会报警(B:=True),但是你自己打开灯箱后面的门,进去在玻璃后面换广告图,这时候报警器是不会响的,明白了吗?

回答5:

刚刚验证了一下,应该是你其它地方出的问题,B的值是会改变的 :)