delphi 自定义控件EDIT内容改变事件

COMPUTERZZZ 2010-11-05 03:31:03
unit AntiEdit;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls,ExtCtrls,
Graphics,DBGrids, DB, ADODB,Dialogs;

type
TAntiEdit = class(TEdit)
private
{ Private declarations }
FTimer:TTimer;
FInterval:Integer;
FDBGrid:TDBGrid;
FDataSource:TDataSource;
FQury:TADOQuery;
FConnection:TADOConnection;
FSQLSelect:String;
FColumn:Integer; //返回第几栏
FValue:String;
FOnChange:TNotifyEvent;
procedure MoveShow(Sender:TObject);
procedure SetConnection(const Value:TADOConnection );
procedure SetSQLSelect(const Value: string);

protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent);
destructor Destroy;
procedure StartAni;
procedure StopAni;
procedure WMChange(var message:TMessage);message WM_SETTEXT;   //改变事没有反应
property Interval:Integer read FInterval write FInterval;
property Connection:TADOConnection read FConnection write SetConnection;
property SQLSelect :string read FSQLSelect write SetSQLSelect;

published
{ Published declarations }
end;

//procedure Register;

implementation

//procedure Register;
//begin
// RegisterComponents('Samples', [TAntiEdit]);
//end;

{ TAntiEdit }

constructor TAntiEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
color:=clBlack;
font.Color:=clWhite;
font.Size:=12;
font.Name:='GB2312';
// FDBGrid.DataSource:=FDataSource;
FDBGrid:=TDBGrid.Create(nil);
FQury:=TADOQuery.Create(nil);
FQury.Connection:=FConnection;
FDataSource:=TDataSource.Create(nil);
FDataSource.DataSet:=FQury;


// FDBGrid.DataSource:=
// Update;
// self.Repaint;
// self.Invalidate
// FTimer:=TTimer.Create(self);
// FTimer.Enabled:=False;
// FTimer.OnTimer:=MoveShow;
// FInterval:=1000;

end;

destructor TAntiEdit.Destroy;
begin
FDBGrid.Free;
FDataSource.Free;
FQury.Free;

end;

procedure TAntiEdit.MoveShow(Sender: TObject);
begin
//dadd
end;

procedure TAntiEdit.SetConnection(const Value: TADOConnection);
begin
FConnection:=Value;
end;

procedure TAntiEdit.SetSQLSelect(const Value: string);
begin
FSQLSelect := Value;
end;

procedure TAntiEdit.StartAni;
begin
FTimer.Interval:=FInterval;
FTimer.Enabled:=True;
end;

procedure TAntiEdit.StopAni;
begin
FTimer.Enabled:=False;
end;

procedure TAntiEdit.WMChange(var message: TMessage);
begin
{
FDBGrid.DataSource:= FDataSource;
FQury.Close;
FQury.SQL.Clear;
FQury.SQL.Text:=FSQLSelect;
FQury.Open;
FDBGrid.Parent:=self;
}
Showmessage('ok');
//改变事没有反应 好像有触发

end;

end.
...全文
478 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ecjtu5208 2010-11-23
  • 打赏
  • 举报
回复
ecjtu5208 2010-11-06
  • 打赏
  • 举报
回复
倒是结贴,给分啊。
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
跟踪代码,在源代码里面发现的。
结贴给分啊,楼主。
COMPUTERZZZ 2010-11-05
  • 打赏
  • 举报
回复
OK,这个事件是在哪找到的
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
这个可以
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
procedure WMChange(var message:TMessage);message WM_SETTEXT;   //改变事没有反应
改成
procedure CMTextChanged(var Message: TMessage); message CM_CHANGED;
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
不好意思,刚验证了一下,好像不行,这个消息貌似选得不对。等会儿。。。。。。
COMPUTERZZZ 2010-11-05
  • 打赏
  • 举报
回复
加个inherited有什么用了,它根本没有执行这个过程
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
begin
inherited;{

FDBGrid.DataSource:= FDataSource;
FQury.Close;
FQury.SQL.Clear;
FQury.SQL.Text:=FSQLSelect;
FQury.Open;
FDBGrid.Parent:=self;
}
Showmessage('ok');
//改变事没有反应 好像有触发

end;

COMPUTERZZZ 2010-11-05
  • 打赏
  • 举报
回复
改成了
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;

一样的,没反应
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
procedure WMChange(var message:TMessage);message WM_SETTEXT;   //改变事没有反应
改为
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;覆盖掉
TCustomEdit中定义
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
这样应该可以了
COMPUTERZZZ 2010-11-05
  • 打赏
  • 举报
回复
改成了CM_TEXTCHANGED 还是没反应
bdmh 2010-11-05
  • 打赏
  • 举报
回复
看TCustomEdit中定义
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
ecjtu5208 2010-11-05
  • 打赏
  • 举报
回复
procedure WMChange(var message:TMessage);message WM_SETTEXT;   //改变事没有反应
改成
procedure WMChange(var Message: TMessage); message CM_TEXTCHANGED;
COMPUTERZZZ 2010-11-05
  • 打赏
  • 举报
回复
//改变事没有反应 好像没有触发

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧