在线等高手回答!

解决方案 »

  1.   

    这个不是,这个文本框的颜色,我是想这样,在enable时是一个颜色,disenable时是另一个颜色,在一开始属性中能不能这样设置?
      

  2.   

    建立一个新的DBEDIT控件,TDisableDBEdit
    定义接受:
      procedure WMPaint(var msg: TWMPaint); message WM_PAINT; 
      procedure WMEraseBkGnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND; procedure TDisableDBEdit.WMEraseBkGnd(var msg: TWMEraseBkGnd); 
    var 
      Canvas: TCanvas; 
    begin 
      if Enabled then 
        inherited 
      else 
      begin 
        Canvas:= TCanvas.Create; 
        try 
          Canvas.Handle := msg.DC; 
          SaveDC(msg.DC); 
          try 
            canvas.Brush.Color := ClBlue;//在这里写入你的禁止色            canvas.Brush.Style := bsSolid; 
            canvas.Fillrect(clientrect); 
            msg.Result := 1; 
          finally 
            RestoreDC(msg.DC, - 1); 
          end; 
        finally 
          canvas.free 
        end; 
      end; 
    end; 
    procedure TDisableDBEdit.WMPaint(var msg: TWMPaint); 
    var 
      Canvas: TCanvas; 
      ps: TPaintStruct; 
      CallEndPaint: Boolean; 
    begin 
      if Enabled then 
        inherited 
      else 
      begin 
        CallEndPaint := False; 
        Canvas:= TCanvas.Create; 
        try 
          if msg.DC <> 0 then 
          begin 
            Canvas.Handle := msg.DC; 
            ps.fErase := true; 
          end 
          else 
          begin 
            BeginPaint(Handle, ps); 
            CallEndPaint:= True; 
            Canvas.handle := ps.hdc; 
          end; 
          if ps.fErase then 
            Perform(WM_ERASEBKGND, Canvas.Handle, 0); 
          SaveDC(canvas.handle); 
          try 
            Canvas.Brush.Style := bsClear; 
            Canvas.Font := Font; 
            Canvas.Font.Color := CLYELLOW;//你的禁止时的文字色
            Canvas.TextOut(1, 1, Text); 
          finally 
            RestoreDC(Canvas.Handle, - 1); 
          end; 
        finally 
          if CallEndPaint then 
            EndPaint(handle, ps); 
          Canvas.Free 
        end; 
      end; 
    end;
      

  3.   

    为了快速实现。要是我,就用两个dbedit一个是正常的,另一个是不用的。
    当你disable时候激活另一个不就可以了?
      

  4.   

    在enable:=false或true语句前对color赋值行吗?