如何实现 Edit 中的文字居中和右对齐???Delphi怎么少了这一条,不知这帮家伙怎么搞的……(30分)

  • 主题发起人 主题发起人 jeffreylaw
  • 开始时间 开始时间
建议你用RichEdit代替它,控制就容易多了
 
用RX的TCurrencyEdit吧
在属性编辑器里直接改
 
edit 的bidimode 就是完成你所要的设置的很简单。
 
我电脑上的 Bidimode 怎么完成不了这个功能???你们电脑上的D5比我这台好用??
 
加几个空格。比如:Edit1.text:=' '+'文字';
 
我来回答,给分吧!重载CreateParams,修改Style。
procedure TAEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TAlignment] of WORD = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or Alignments[FAlignment];
end;

FAlignment设为taLeftJustify、taCenter或是taRightJustify。

procedure TAEdit.SetAlignment(AValue : TAlignment);
begin
FAlignment:= AValue;
if not (csLoading in componentstate) then ReCreateWnd;
end;
 
我电脑上的 Bidimode 也完成不了这个功能
 
操作系统因当地习惯而不同,Bidimode属性是根据操作系统来设置的,
你用的是中文或英文Windows,设置它就不管用。
 
CathyEagle,我是Delphi新手,没看明白你这段程序应该加在什么位置,你能说得更
详细点吗,在下多谢了!
CreateParams 是什么,在我的电脑上怎么没找到?
 
给你源代码,刚写的,可以用。
unit AEdit;

interface

uses
Windows,
SysUtils,
Messages,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
Menus,
StdCtrls,
ExtCtrls;

type
TEoCEdit = class(TEdit)
private
{ Private declarations }
FAlignment: TAlignment;
protected
{ Protected declarations }
function GetAlignment: TAlignment; virtual;
procedure SetAlignment(newValue: TAlignment); virtual;
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published properties and events }
property Alignment: TAlignment read GetAlignment write SetAlignment; { Published }
end; { TEoCEdit }

procedure Register;

implementation

function TEoCEdit.GetAlignment: TAlignment;
{ Returns the value of data member FAlignment. }
begin
GetAlignment := FAlignment;
end; { GetAlignment }

procedure TEoCEdit.SetAlignment(newValue: TAlignment);
{ Sets data member FAlignment to newValue. }
begin
if FAlignment <> newValue then
begin
FAlignment := newValue;
if not (csLoading in componentstate) then ReCreateWnd;
end;
end; { SetAlignment }

destructor TEoCEdit.Destroy;
begin
inherited Destroy;
end; { Destroy }

constructor TEoCEdit.Create(AOwner: TComponent);
{ Creates an object of type TEoCEdit, and initializes properties. }
begin
inherited Create(AOwner);
{ Initialize properties with default values: }
FAlignment := taLeftJustify;
end; { Create }

procedure TEoCEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TAlignment] of WORD = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or Alignments[FAlignment];
end;

procedure Register;
begin
RegisterComponents('EoC', [TEoCEdit]);
end; { Register }

end.
 
将你的原代码COPY到我的程序中怎么用不了?天啊!我怎么这么笨……看来真的无可救药了!
 
呵呵,他给你的是控件代码,你注册这个控件就可以直接使用了 :)
 
Torry's page上有这样的控件(好象还有源码,还可以学习一下经验)
 
jeffreylaw兄弟,慢慢来。
 
CathyEagle 你给的是控件原代码吗?在D5中我如何注册这个控件,好人做到底吧:-)

Torry's page 在哪??
 
1、我Mail给你吧。打开zip包中的AEditP.dpk,单击Install就可以了。
2、Torry's page
http://www.torry.ru/index.htm
 
接受答案了.
 
后退
顶部