如何改变Tedit失效后的颜色?

must0001 2005-01-13 01:24:02
如果将edit enabled 设置为 false ,它的颜色就变为灰色,能不能让它失效后依然为黑色?
...全文
165 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackie168 2005-01-13
  • 打赏
  • 举报
回复
教给你一个好办法,把它放到一个groupbox里面,让groupbox失效,那么作为其中的一个成员edit当然也无效了,但是从表面一点都看不出有什么区别。很好用的!!!!!

=================
>>>那还不如用个panel来为装... 呵
ssq237712 2005-01-13
  • 打赏
  • 举报
回复
mark
chenylin 2005-01-13
  • 打赏
  • 举报
回复
heluqing(鉴之小河) 是一个好办法.
jinjazz 2005-01-13
  • 打赏
  • 举报
回复
〉〉SetSysColors(1, vElements, vRgbValues);

这个也太狠了
何鲁青 2005-01-13
  • 打赏
  • 举报
回复
教给你一个好办法,把它放到一个groupbox里面,让groupbox失效,那么作为其中的一个成员edit当然也无效了,但是从表面一点都看不出有什么区别。很好用的!!!!!
王集鹄 2005-01-13
  • 打赏
  • 举报
回复
var
vElements: Integer;
vRgbValues: TColor;
begin
vElements := COLOR_GRAYTEXT;
vRgbValues := clBlack;
SetSysColors(1, vElements, vRgbValues);
end;
zdq801104 2005-01-13
  • 打赏
  • 举报
回复
呵呵,学习呀!
jackie168 2005-01-13
  • 打赏
  • 举报
回复
这样也行:

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Enabled:=False;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
text:string;
DC:HDC;
R:TRect;
begin
Text:='我测试';
R:=Edit1.ClientRect;
DC:=GetDC(Edit1.Handle);
with TBitmap.Create do
begin
Width:=R.Right;
Height:=R.Bottom;
Canvas.Brush.Color:=Edit1.Color;
Canvas.FillRect(R);

Canvas.Font.Color:=clBlue;
Canvas.TextOut(0,0,Text);

BitBlt(DC,0,(R.Bottom-abs(Canvas.Font.Height)) div 2,
R.Right,R.Bottom,Canvas.Handle,0,0,SrcCopy);

Free;
end;
ReleaseDC(Edit1.Handle,DC);
end;

procedure TForm1.FormActivate(Sender: TObject);
var
n:integer;
begin
for n:=0 to ControlCount-1 do
Controls[n].Refresh;
end;
jackie168 2005-01-13
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var ec:Tcanvas;
begin
try
ec:=Tcanvas.Create;
ec.Handle:=Getdc(edit1.Handle);
if ColorDialog1.Execute then
ec.Font.Color:=ColorDialog1.Color;
ec.TextOut(1,1,edit1.Text);
finally
ec.free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Enabled:=false;
Edit1.Text:='让不可用的Edit内容显示任意颜色';
Button1.Caption:='Color';
end;
jinjazz 2005-01-13
  • 打赏
  • 举报
回复
procedure EnableControl(AControl: TWinControl; Enable: Boolean);
begin
with AControl do
if Enable then
SetWindowLong(Handle, GWL_STYLE, (not WS_DISABLED) and GetWindowLong(Handle, GWL_STYLE))
else
SetWindowLong(Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(Handle, GWL_STYLE));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnableControl(Edit1,False);
end;
火猴 2005-01-13
  • 打赏
  • 举报
回复
要自己写代码控制,或者修改控件。
但是有这个必要吗?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧