为什么SetWindowLong(Edit1.Handle, GWL_STYLE,  GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT)不管用,用spy++看了窗口类型,没有ES_RIGHT ?

解决方案 »

  1.   

    你可以用一个memo 拉成edit的大小来代替
      

  2.   

    这很好办:
    ...
    TCalcDoubleEdit=class (TEdit);
    ....
    protected:
     procedure CreateParams(var Params: TCreateParams); override;
    ....procedure TCalcDoubleEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
    {  Params.Style := Params.Style and not WS_BORDER;  }
      Params.Style := Params.Style {or ES_MULTILINE }or WS_CLIPCHILDREN;
      Params.Style:=Params.Style or ES_RIGHT;
    end;
      

  3.   

    SetWindowLong(Edit1.Handle, GWL_STYLE,  GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
    怎么能不管用呢?弄错了吧。
    这是windows的标准啊!