关于Tedit的一个问题(100分)

  • 主题发起人 主题发起人 l-s-m
  • 开始时间 开始时间
L

l-s-m

Unregistered / Unconfirmed
GUEST, unregistred user!
往控件Tedit中输入一个字符这个字符会显示在Tedit的左边,现在我想输入一个字符,让它显示在
Tedit的右边,输入一串字符让它从右往左显示(原先是从左往右显示),不只该怎么办?请各位大
虾指教.
 
自己做控件如TNumEdit
添加属性
property Alignment: TAlignment read FAlignment write SetAlignment default taRightJustify;

继承
procedure TNumEdit.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 Style := Style or Alignments[UseRightToLeftAlignment, FAlignment];
end;
实现
procedure TNumEdit.SetAlignment(Value: TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd;
end;
end;


 
楼上的说法是错误的,正确的方法我也不知道。

用反序字符串的方法做输出好像太笨了(何况DBCS更添乱)。不如老兄把字体改成阿拉伯
国家的,这样好像可以直接支持自右向左的书写习惯……
 
to:mikedeakins
我自己做的控件,用的好好的怎么就错了?岂有此理!
 
继承
constructor TNWEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Alignment := taRightJustify;
end;
和属性的 Alignment 的 default taRightJustify 是对应的。
to:mikedeakins
这么简单的常识都不知道,自己不会就不要说别人错!!!
 
惭愧,老兄的方法确实没有用过,下面的方法是用于阿拉伯地区的。
UseRightToLeftAlignment
UseRightToLeftReading
UseRightToLeftScrollBar

Sorry, Delphiwolf, and thank u.
 
不用那么麻烦,发一个END消息就可以了,

Sendmessage(handle,WM_KEYDOWN,VK_END,0);
好象这样写吧!忘了,自己修改吧,反正这样一定 能实现。
 
简单呀,取个memo构件高度设为edit的高度且不可换行,把Alignment属性设为leftjustify什么的
就可
 
多人接受答案了。
 
后退
顶部