在不设置静态字段,不改控件的前提下如何
改变DBEDIT的对齐方式,对所有数据类型都为左对齐
能否能过发送消息实现,如可以代码如何写?

解决方案 »

  1.   

    默认是左对齐的,如果你要改成其它对齐方式,可以这样:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables;type
     TDBEdit = class(DBCtrls.TDBEdit)
     private
       FAlignment : TAlignment;
       procedure SetAlignment(Value: TAlignment);
     protected
       procedure CreateParams(var Params: TCreateParams); override;
     public
       property Alignment: TAlignment read FAlignment write SetAlignment;
    end;type
      TForm1 = class(TForm)
        Table1: TTable;
        DataSource1: TDataSource;
        DBEdit1: TDBEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TDBEdit.CreateParams(var Params: TCreateParams);
    const
     Alignments : array[TAlignment] of LongWord= (ES_Left,ES_Right, ES_Center);
    begin
     inherited CreateParams(Params);
     Params.Style := Params.Style or Alignments[FAlignment];
    end;procedure TDBEdit.SetAlignment(Value: TAlignment);
    begin
     if FAlignment <> Value then
     begin
       FAlignment := Value;
       RecreateWnd;
     end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      DBEdit1.Alignment := taRightJustify;  // 右对齐
    end;end.