如上!

解决方案 »

  1.   

    使Edit1居中:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Style: DWORD;
    begin
      Style := GetWindowLong(Edit1.Handle, GWL_STYLE);
      if (Style and ES_CENTER) <> ES_CENTER then
        Style := Style + ES_CENTER;
      SetWindowLong(Edit1.Handle, GWL_STYLE, Style);
      Edit1.Invalidate;end;
      

  2.   

    写一个过程
    内容如下var
      dwStyle: DWORD;
    begin
      dwStyle:= DWORD(GetWindowLong(Edit1.Handle, GWL_STYLE));
      dwStyle:= dwStyle or ES_CENTER;
      SetWindowLong(Edit1.Handle, GWL_STYLE, dwStyle);
      Edit1.Invalidate;
    end;
      

  3.   

    在简单点就是
      SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
      

  4.   

    俺試了SetWindowLong、
    但没有文字居中?
      

  5.   

    用上面的方法,继承TEDIT的属性,增加居中的方法,新写一个可以居中中的AEDIT就可以了
      

  6.   

    一个控制TEdit居中及按键的控件:unit AdvEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
    type
      TKeySet = (ksReturn,ksEscape);
      TKeySets = set of TKeySet;
      TAdvEdit = class(TEdit)
      private
        { Private declarations }
        FAlignment: TAlignment;
        FKeys: TKeySets;
        procedure SetAlignment(const Value: TAlignment);
      protected
        { Protected declarations }
        procedure CreateParams(var Params: TCreateParams); override;
        procedure KeyPress(var Key: Char); override;     
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      published
        { Published declarations }
        property Alignment:TAlignment read FAlignment write SetAlignment default taLeftJustify;
        property Keys  :TKeySets read FKeys write FKeys;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('yczyk', [TAdvEdit]);
    end;{ TAdvEdit }constructor TAdvEdit.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FAlignment := taLeftJustify;
    end;procedure TAdvEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      case Alignment of
        taLeftJustify:
          Params.Style := Params.Style or (ES_Left or ES_MULTILINE);
        taRightJustify:
          Params.Style := Params.Style or (ES_Right or ES_MULTILINE);
        taCenter:
          Params.Style := Params.Style or (ES_Center or ES_MultiLine);
      end;
    end;destructor TAdvEdit.Destroy;
    begin
      inherited Destroy;
    end;procedure TAdvEdit.KeyPress(var Key: Char);
    begin
      if ksReturn in keys then
      begin
        if key=chr(vk_return) then
        begin
          Key := chr(0);
          (owner as TControl).Perform(WM_NextDlgCtl,0,0);
        end;
      end;
      if ksEscape in keys then
      begin
        if key=chr(vk_escape) then
        begin
           Key := chr(0);
           (owner as TControl).Perform(WM_NextDlgCtl,0,0);
        end;
      end;
      inherited KeyPress(key);
    end;procedure TAdvEdit.SetAlignment(const Value: TAlignment);
    begin
      FAlignment := Value;
    end;end.
      

  7.   

    我以前问过,他们这样回答我的:
       SetWindowLong(Edit_rkdh.handle,GWL_STYLE,GetWindowlong(edit_rkdh.Handle, GWL_STYLE) +ES_CENTER);
       但在98下不好用,只有2000下好用,而且2000要UPdate了才好用,我一直没找到原因!
      

  8.   

    一楼的代码怎么没用,我是d7+windows2000server
      

  9.   

    SetWindowLong(NumberEdit.Handle, GWL_STYLE, GetWindowLong(NumberEdit.Handle, GWL_STYLE) or ES_CENTER)
    谁说不可以用?可用!