怎么让Tedit中的文字居中啊? (急!) 如上! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使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; 写一个过程内容如下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; 在简单点就是 SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER); 俺試了SetWindowLong、但没有文字居中? 用上面的方法,继承TEDIT的属性,增加居中的方法,新写一个可以居中中的AEDIT就可以了 一个控制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. 我以前问过,他们这样回答我的: SetWindowLong(Edit_rkdh.handle,GWL_STYLE,GetWindowlong(edit_rkdh.Handle, GWL_STYLE) +ES_CENTER); 但在98下不好用,只有2000下好用,而且2000要UPdate了才好用,我一直没找到原因! 一楼的代码怎么没用,我是d7+windows2000server SetWindowLong(NumberEdit.Handle, GWL_STYLE, GetWindowLong(NumberEdit.Handle, GWL_STYLE) or ES_CENTER)谁说不可以用?可用! 五子棋小游戏 delphi statusbar 文字从右向左滚动 厚颜紧急求助!!!delphi7+mapx5.02问题。 请教:我想做个“个人财务软件”,可以有哪些适当的需求!谢谢! C++版正在玩的一个游戏,测试一下我们版的人气!!!!! 关于对象与对象的释放的困惑 三层传递图片(在线等候) 那个函数将ascii码转化成字符串? 关于ADO数据连接效率的问题,请帮忙. 我要哭了,在网上找了半天都见不到Tmediaplayer的控件 放分 第45题):如何获取当前登陆操作系统的用户名?
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;
内容如下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;
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
但没有文字居中?
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.
SetWindowLong(Edit_rkdh.handle,GWL_STYLE,GetWindowlong(edit_rkdh.Handle, GWL_STYLE) +ES_CENTER);
但在98下不好用,只有2000下好用,而且2000要UPdate了才好用,我一直没找到原因!
谁说不可以用?可用!