请问怎么实现向EDIT中输入文本是从右向左输入? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上两位也太损了,呵呵继承TEdit,重载CreateParams,修改Param即可。procedure TEdit_Ex.CreateParams(var Params: TCreateParams);begin inherited; if self.FTextOnRight then Params.Style:=Params.Style or ES_RIGHT;end; TO:del_c_sharp(头大中......) 在DELPHI中我还真没写过重载,TEdit_Ex就代表了继承TEdit?另外我想EDIT中的光标一开始就定位到最右边。怎么实现? 是的继承一下,就好了。你用的是bcb?我这台电脑没有装,要不然我帮你写个delphi中就像上面的那中写法就可以了 TO:del_c_sharp(头大中......) 关键我只想把EDIT2改成这种从右向左。EDIT1我还想是从左到右。你这样是不是把EDIT1和EDIT2全改了? 当然不是,你要继承tedit生成一个新类tedit_exedit1 还是teditedit2 是 tedit_ex 那tedit_ex继承tedit在上面的声明中怎么写? 用程序写也很简单啊:你每次在 Edit 的 Onchange 事中只要是键盘的 press 事件 那么你就执行一次程序,然后用对 Edit 获取焦点 Edit.setfocus 这样就可以实现从右到左的功能了。 呵呵,你的20分真难挣:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type tedit_ex=class(tedit) protected procedure createparams(var Params: TCreateParams);override; end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private edit2:tedit_ex; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin with tedit_ex.Create(application) do begin parent:=self; left:=100; top:=100; visible:=true; end;end;{ tedit_ex }procedure tedit_ex.createparams(var Params: TCreateParams);begin inherited; Params.Style:=Params.Style or ES_RIGHT;end;end.测试通过 给你一个控件,我自己用的unit UEdit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TUEdit = class(TEdit) private { Private declarations } protected { Protected declarations } public { Public declarations } procedure CreateParams(var Params: TCreateParams); Override; published { Published declarations } end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;end;procedure Register;begin RegisterComponents('Standard', [TUEdit]);end;end. 我也在学习oldcamel33(驼子) 的方法,我相信他的方法错不了 我不想动态创建EDIT,我想用手动拖一个EDIT到FORM上,在写些代码让他具有从右向左输入的特性,以下怎么不行?unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure createparams(var Params: TCreateParams); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1.createparams(var Params: TCreateParams);begin inherited; Params.Style:=Params.Style or ES_RIGHT;end;end. 当然不行了。你的代码根本不符合逻辑。如果你想发放到控件面板上unit UEdit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TUEdit = class(TEdit) private { Private declarations } protected { Protected declarations } public { Public declarations } procedure CreateParams(var Params: TCreateParams); Override; published { Published declarations } end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;end;procedure Register;begin RegisterComponents('Standard', [TUEdit]);end;end.把这段代码存为xxx.pas选择component--->install componentinto new packetunit file name -->xxx.paspackage name --->xxxok!install最后你会发现一个新控件在Standard版 DELPHI ListView 汇总不重复的记录数 输入法自动改变了 rave报表 求救!查询access数据并且放在已有的word文档的表格的指定单元格里,怎么办? 剪贴板的问题 『求助』关于EInvalidPointer异常 我不信没有高手,关于窗体的创建。 急,大家给介绍几个好的网格控件? 请教高手!请问那位大侠知道Delphi中能获取cpu利用率和过程占用cpu率的两个API函数!感激不尽,谢谢 向各位请教!! 新问题出现啦!大家快帮帮手!我出50分!! 请问,有什么方法可以实现网管的一些功能
procedure TEdit_Ex.CreateParams(var Params: TCreateParams);begin inherited; if self.FTextOnRight then Params.Style:=Params.Style or ES_RIGHT;end;
在DELPHI中我还真没写过重载,TEdit_Ex就代表了继承TEdit?
另外我想EDIT中的光标一开始就定位到最右边。怎么实现?
你用的是bcb?
我这台电脑没有装,要不然我帮你写个delphi中就像上面的那中写法就可以了
关键我只想把EDIT2改成这种从右向左。EDIT1我还想是从左到右。你这样是不是把EDIT1和EDIT2全改了?
edit1 还是tedit
edit2 是 tedit_ex
你每次在 Edit 的 Onchange 事中只要是键盘的 press 事件 那么你就执行
一次程序,然后用对 Edit 获取焦点 Edit.setfocus 这样就可以实现从右到
左的功能了。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
tedit_ex=class(tedit)
protected
procedure createparams(var Params: TCreateParams);override;
end;
TForm1 = class(TForm)
Button1: TButton; procedure Button1Click(Sender: TObject);
private
edit2:tedit_ex;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
with tedit_ex.Create(application) do
begin
parent:=self;
left:=100;
top:=100;
visible:=true;
end;
end;{ tedit_ex }procedure tedit_ex.createparams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or ES_RIGHT;
end;end.
测试通过
unit UEdit;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TUEdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); Override;
published
{ Published declarations }
end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
end;procedure Register;
begin
RegisterComponents('Standard', [TUEdit]);
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure createparams(var Params: TCreateParams);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Edit1.createparams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or ES_RIGHT;
end;
end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TUEdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); Override;
published
{ Published declarations }
end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
end;procedure Register;
begin
RegisterComponents('Standard', [TUEdit]);
end;end.把这段代码存为xxx.pas选择component--->install component
into new packetunit file name -->xxx.paspackage name --->xxxok!install最后你会发现一个新控件在Standard版