控件的TEXT自动FORMAT(100分)

  • 主题发起人 主题发起人 pengjinlongex
  • 开始时间 开始时间
P

pengjinlongex

Unregistered / Unconfirmed
GUEST, unregistred user!
我从tcustomedit继承一个控件,我想为text赋值时,对TEXT进行FORMAT,我查了一下TEXT
属性,它是从TCONTROL继承下来的,在TCONTROL里GETTEXT与SETTEXT均是PRIVATE型,且不是
虚方法,我不能覆盖它们,请问我该怎么办,我不想增加另外一个属性
 
众位DFW。请帮忙啊,UP有分
 
重载 DefaultHandler 方法,在里面判断 WM_SETTEXT 消息
procedure TYourEdit.DefaultHandler(var Message);
begin
with TMessage(Message) do
case Msg of
WM_SETTEXT:
begin
// 可以在这里修改
end;
end;
 
怎么修改呀,beta
 
WM_SETTEXT
wParam = 0; // not used; must be zero
lParam = (LPARAM)(LPCTSTR)lpsz; // address of window-text string //改它,它相当于一个pchar
 
你完全可以重载TEdit的OnKeyDown进行修改。

另外也可以利用WM_CHAR消息。
---------------------------------------
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldWinProc: TWndMethod;
procedure NewWinProc(var Message: TMessage);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.NewWinProc(var Message: TMessage);
begin
case Message.Msg of
WM_CHAR: Message.WParamLo := Message.WParamLo + 1; //Edit中显示按键的下一个字符

end; //end of case
OldWinProc(Message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
OldWinProc := Edit1.WindowProc;
Edit1.WindowProc := NewWinProc;
end;

end.
 
OnChange可以吗?
 
输入赋值已经搞定,如下如何办
myedit1.text:=
 
就是我在直接赋值时,不是从键盘输入,想得到一个format后的值
 
重载text,修改写方法;
或者处理,CM_TEXTCHANG;/好象是这个消息,你看看;
 
多人接受答案了。
 
后退
顶部