読んでみましたが、よくわかりません。 (;_;)
サンプルのコンポーネントを2つ作ってみました。
TEditEx2はイベントが゛発生しないコード
TEditEx3はイベントが゛発生するコード
です。Changeイベント発生状態が変わってしまいます。
引数付きの inherited Changed ではイベント発生しません
引数なしの inherited ではイベント発生します
もう少し教えていただけないでしょうか。
//-------------------------------------------------- //----ソース1 イベントが゛発生しないコード //-------------------------------------------------- unit EditEx2;
interface
uses Windows, SysUtils, Classes, Math, Dialogs, FmtBcd, Forms, Graphics, Controls, StdCtrls, Messages;
type TEditEx2 = class( TEdit ) private {省略} protected { Protected 宣言 } {省略} // イベント procedure Change; override; // プロパティ設定用 public { Public 宣言 } {省略} published { Published 宣言 } {省略} end;
procedure Register;
implementation
procedure Register; begin RegisterComponents ('samples', [TEditEx2]); end;
procedure TEditEx2.Change; begin {省略} // inherited; // ←イベント発生 inherited Changed; // ←イベント発生しない end;
end. //-------------------------------------------------- //----ソース2 イベントが゛発生するコード //-------------------------------------------------- unit EditEx3;
interface
uses Windows, SysUtils, Classes, Math, Dialogs, FmtBcd, Forms, Graphics, Controls, StdCtrls, Messages;
type TEditEx3 = class( TEdit ) private {省略} protected { Protected 宣言 } {省略} // イベント procedure Change; override; // プロパティ設定用 public { Public 宣言 } {省略} published { Published 宣言 } {省略} end;
procedure Register;
implementation
procedure Register; begin RegisterComponents ('samples', [TEditEx3]); end;
procedure TEditEx3.Change; begin {省略} inherited; // ←イベント発生 // inherited Changed; // ←イベント発生しない end;
end.
//-------------------------------------------------- //----2つのサンプルを使ったサンプル //-------------------------------------------------- unit Unit4;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, EditEx2, EditEx3;
type TForm4 = class(TForm) EditEx31: TEditEx3; EditEx21: TEditEx2; Edit1: TEdit; procedure EditEx31Change(Sender: TObject); procedure EditEx21Change(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end;
var Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.EditEx21Change(Sender: TObject); begin // ↓イベントが発生しないので呼ばれない Edit1.Text := 'Ex2 ' + Formatdatetime( 'nn:ss', Now ); end;
procedure TForm4.EditEx31Change(Sender: TObject); begin // ↓イベントが発生して呼ばれる Edit1.Text := 'Ex3 ' + Formatdatetime( 'nn:ss', Now ); end;
end.
|