譬如讓 Edit1 文本靠右對齊:
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_RIGHT);
本例:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Edit1: TEdit; RadioGroup1: TRadioGroup; procedure FormCreate(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin RadioGroup1.Items.CommaText := 'Left,Center,Right'; RadioGroup1.ItemIndex := 0;end;procedure TForm1.RadioGroup1Click(Sender: TObject);var es: Integer;begin es := GetWindowLong(Edit1.Handle, GWL_STYLE) or 3; es := es xor (3 - RadioGroup1.ItemIndex); SetWindowLong(Edit1.Handle, GWL_STYLE, es); Edit1.Refresh;end;end.
這裡面有個問題需要知道: 決定對齊的三個常量值 ES_LEFT、ES_CENTER、ES_RIGHT 分別是 0、1、2, 剛好可以對應 RadioGroup1.ItemIndex; 再換一種思路實現一下:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Edit1: TEdit; RadioGroup1: TRadioGroup; procedure FormShow(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}var es_bak: Integer;procedure TForm1.FormShow(Sender: TObject);begin RadioGroup1.Items.CommaText := 'Left,Center,Right'; es_bak := GetWindowLong(Edit1.Handle, GWL_STYLE);end;procedure TForm1.RadioGroup1Click(Sender: TObject);var es: Integer;begin es := es_bak or RadioGroup1.ItemIndex; SetWindowLong(Edit1.Handle, GWL_STYLE, es); Edit1.Refresh;end;end.