16,748
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyEvent = procedure(sender : TObject) of object;
type
TForm1 = class(TForm)
edt1: TEdit;
procedure FormCreate(Sender: TObject);
procedure edt1Change(Sender: TObject);
private
FChange : TMyEvent;
{ Private declarations }
procedure _Change(sender : TObject);
public
property On_Change : TMyEvent read FChange write FChange;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1._Change(sender: TObject);
begin
ShowMessage('大于10');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FChange := _Change;
end;
procedure TForm1.edt1Change(Sender: TObject);
begin
if StrToInt(edt1.Text) > 10 then On_Change(sender);
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.FValue:='sdfdsf';
form1.FValue:='j';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Value:='sdfdsf';
form1.Value:='j';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OnChange:=yes;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.FValue:='sdfdsf';
form1.FValue:='j';
end;
procedure TForm1.yes(Sender: TObject);
begin
showmessage('yes');
end;
type
TForm1 = class(TForm)
private
FValue: string;
FOnChange: TNotifyEvent;
function getValue: string;
procedure setValue(const Value: string);
public
published
//导出一个属性
property Value: string read getValue write setValue;
//导出一个值变化事件
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.getValue: string;
begin
Result := FValue;
end;
procedure TForm1.setValue(const Value: string);
begin
//属性发生变法时,执行OnChange事件
if Value <> FValue then
begin
if Assigned(FOnChange) then FOnChange(Self);
FValue := Value;
end;
end;
TEdit = class(TCustomEdit)
TCustomEdit = class(TWinControl)
private
FOnChange: TNotifyEvent;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
protected
procedure Change; dynamic;
procedure TCustomEdit.CMTextChanged(var Message: TMessage);
begin
inherited;
if not HandleAllocated or (GetWindowLong(Handle, GWL_STYLE) and
ES_MULTILINE <> 0) then Change;
end;
procedure TCustomEdit.Change;
begin
inherited Changed;
if Assigned(FOnChange) then FOnChange(Self);
end;