如果将edit enabled 设置为 false ,它的颜色就变为灰色,能不能让它失效后依然为黑色?

解决方案 »

  1.   

    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;
      

  2.   

    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; 
      

  3.   

    这样也行: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;
      

  4.   

    var
      vElements: Integer;
      vRgbValues: TColor;
    begin
      vElements := COLOR_GRAYTEXT;
      vRgbValues := clBlack;
      SetSysColors(1, vElements, vRgbValues);
    end;
      

  5.   

    教给你一个好办法,把它放到一个groupbox里面,让groupbox失效,那么作为其中的一个成员edit当然也无效了,但是从表面一点都看不出有什么区别。很好用的!!!!!
      

  6.   

    〉〉SetSysColors(1, vElements, vRgbValues);这个也太狠了
      

  7.   

    heluqing(鉴之小河) 是一个好办法.
      

  8.   

    教给你一个好办法,把它放到一个groupbox里面,让groupbox失效,那么作为其中的一个成员edit当然也无效了,但是从表面一点都看不出有什么区别。很好用的!!!!!=================
    >>>那还不如用个panel来为装... 呵