怎样让EDIT文本框的字符串居右??? 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用第三方控件,edit本身很难做到! zsjzwj(北极熊) ,能介绍一个这样的控件吗? 根据输入的字符串长度和EDIT的长度,在字符串前加上EDIT长度-输入字符串的长度的空格,然后根据输入来减少空格的长度。还有类似key=#8时,根据是字母,数字,还是中文,来确定空格长度-1还是-2。就是这样的想法了,好像是很复杂 这问题在CSDN问了N次了我也回答了N次了建议添加到FAQ了用我写的组件可以的了unit EditEx;// TEditEx --- LYSoft.7u7.net by Liu Yang 2002.12.5// support Alignment propertyinterfaceuses Messages, Windows, SysUtils, Classes, Controls, Forms, StdCtrls;type TEditEx = class(TCustomEdit) private { Private declarations } FAlignment: TAlignment; protected { Protected declarations } procedure CreateParams(var Params: TCreateParams); override; procedure Loaded; override; procedure SetAlignment(Value: TAlignment); public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; function GetControlsAlignment: TAlignment; override; published { Published declarations } property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; property Align; property Anchors; property BevelEdges; property BevelInner; property BevelKind default bkNone; property BevelOuter; property BiDiMode; property BorderStyle; property Color; property Constraints; property Ctl3D; property DragCursor; property DragKind; property DragMode; property Enabled; property Font; property HideSelection; property ImeMode; property ImeName; property MaxLength; property OEMConvert; property ParentBiDiMode; property ParentColor; property ParentCtl3D; property ParentFont; property ParentShowHint; property PopupMenu; property ReadOnly; property ShowHint; property TabOrder; property TabStop; property Text; property Visible; property OnChange; property OnClick; property OnContextPopup; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; property OnEnter; property OnExit; property OnKeyDown; property OnKeyPress; property OnKeyUp; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDock; property OnStartDrag; end;procedure Register;implementationprocedure Register;begin RegisterComponents('Custom', [TEditEx]);end;constructor TEditEx.Create(AOwner: TComponent);begin inherited Create(AOwner); ParentBackground := False;end;procedure TEditEx.CreateParams(var Params: TCreateParams);const Alignments: array[Boolean, TAlignment] of DWORD = ((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_RIGHT, ES_LEFT, ES_CENTER));begin inherited CreateParams(Params); with Params do begin Style := Style or Alignments[UseRightToLeftAlignment, FAlignment]; end;end;destructor TEditEx.Destroy();begin inherited Destroy();end;function TEditEx.GetControlsAlignment: TAlignment;begin Result := FAlignment;end;procedure TEditEx.Loaded;begin inherited Loaded; Modified := False;end;procedure TEditEx.SetAlignment(Value:TAlignment);begin if FAlignment <> Value then begin FAlignment := Value; RecreateWnd; end;end;end. procedure TForm1.Edit1Exit(Sender: TObject);begin setwindowlong(edit1.handle, GWL_STYLE, getwindowlong(edit1.handle, GWL_STYLE) and not ES_AUTOHSCROLL or ES_MULTILINE or ES_Right); edit1.invalidate;end; 楼上的办法不错啊,不过是不是写在ONKEYPRESS或者ONKEYDOWN里面更好啊~ 建议使用BusinessSkinForm控件,这些小小的功能很轻松就实现了! 靠,用大炮打蚊子!用得着吗?呵呵!用迂回的方法应该更好些的!直接把memo控件用来模拟不就行 了! memo1.Alignment :=tacenter; memo1.WordWrap :=false;///// 同xiangwangz(<*敝屣荣华 浮云生死 此身何惧*>) 的意见一致这么麻烦干吗? VclSkin 编译问题 隐藏程序运行窗口有什么好方法呢。 一个菜鸟问题:delphi 7中打印报表的Qreport在哪里?怎么添加啊? 申请版主->>>系统设计 ,大家支持一把。 各位帮忙,打卡机怎么用? 基于VCL开发了一个反垃圾邮件程序,请大家帮忙测试一下,谢谢,谢谢:) 简单问题:怎样截取数据流? SQL Server 数据库中字段内容为NULL的处理办法? 用delphi自带的qreport打印 记录数超过2000条,用Lookup字段快,还是用calc字段(用Query查询)快 请教 ADO连接excel时错误 cxGrid的一个用法
还有类似key=#8时,根据是字母,数字,还是中文,来确定空格长度-1还是-2。
就是这样的想法了,好像是很复杂
我也回答了N次了
建议添加到FAQ了用我写的组件可以的了unit EditEx;// TEditEx --- LYSoft.7u7.net by Liu Yang 2002.12.5
// support Alignment propertyinterfaceuses Messages, Windows, SysUtils, Classes, Controls, Forms, StdCtrls;type
TEditEx = class(TCustomEdit)
private
{ Private declarations }
FAlignment: TAlignment;
protected
{ Protected declarations }
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
procedure SetAlignment(Value: TAlignment);
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetControlsAlignment: TAlignment; override;
published
{ Published declarations }
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
property Align;
property Anchors;
property BevelEdges;
property BevelInner;
property BevelKind default bkNone;
property BevelOuter;
property BiDiMode;
property BorderStyle;
property Color;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property HideSelection;
property ImeMode;
property ImeName;
property MaxLength;
property OEMConvert;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Custom', [TEditEx]);
end;constructor TEditEx.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentBackground := False;
end;procedure TEditEx.CreateParams(var Params: TCreateParams);
const
Alignments: array[Boolean, TAlignment] of DWORD =
((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_RIGHT, ES_LEFT, ES_CENTER));
begin
inherited CreateParams(Params);
with Params do
begin
Style := Style or
Alignments[UseRightToLeftAlignment, FAlignment];
end;
end;destructor TEditEx.Destroy();
begin
inherited Destroy();
end;function TEditEx.GetControlsAlignment: TAlignment;
begin
Result := FAlignment;
end;procedure TEditEx.Loaded;
begin
inherited Loaded;
Modified := False;
end;procedure TEditEx.SetAlignment(Value:TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd;
end;
end;end.
begin
setwindowlong(edit1.handle, GWL_STYLE,
getwindowlong(edit1.handle, GWL_STYLE)
and not ES_AUTOHSCROLL or ES_MULTILINE or ES_Right);
edit1.invalidate;
end;
memo1.Alignment :=tacenter;
memo1.WordWrap :=false;
/////
这么麻烦干吗?