我想请问大家一个开发控件enabled的问题,请大家入内(51分)

  • 主题发起人 主题发起人 曾阿牛
  • 开始时间 开始时间

曾阿牛

Unregistered / Unconfirmed
GUEST, unregistred user!
大家都知道,Tedit的enabled如果设置为false时,字体会变为灰色,而且鼠标无法点击
里面的编辑框,现在我的问题是,如果我现在想让enabled设为false,但又想让里面的字体
变为蓝色或者其他颜色,并且照样无法编辑,请问在不加其他控件的情况下,单从继承和
重绘的角度,能不能实现,谢谢,如有办法,可否将源码贴出来,谢谢
 
Edit1.ReadOnly:=True;
 
readonly:=true,我 早知道了 ,我要的是能够象enabled那种不可编辑方式的
 
1. 在类声明中声明一个变量(zhh)来记录当前的状态
2. 写一个过程和一个函数对zhh进行赋值
3. edit1.enabled:=zhh
4. 生成属性



50分太少了吧? 给我分,我给你源程序
给个信箱
 
zengrui@sjrj.com
收到后会尽快发分
谢了!
 
Nizvoo@etang.com

也发一份吧,要分尽管说。
 
Delphi中VCL控件的Enabled属性最终是由 User32.dll 中的 EnableWindow 函数实现的,
想改变的话,是不是要把 EnableWindow屏蔽掉,自己重写?
 
看过 blade1 参加编程大赛的代码了吗?那段代码可能对你会有用。
//单击Button1可以使Memo1处于Disable/Enable状态
procedure TMainForm.Button1Click(Sender: TObject);
const
oldh : DWORD = 0;
begin
memo1.Font.Color:= clred; //改变Memo中字体的颜色
memo1.Refresh;
if not boolean(oldh) then
begin
oldh := GetWindowLong(Memo1.handle,GWL_WNDPROC);
SetWindowLong(Memo1.handle,GWL_WNDPROC,integer(@s));
end
else
begin
SetWindowLong(Memo1.handle,GWL_WNDPROC,oldh);
oldh := 0;
end;
end;
 
liuyan:
我执行了首先没有 s这个变量,改为oldh后,报“无效的窗口句柄”的错误,能再发一下吗?
 
多人接受答案了。
 
后退
顶部