Dear Delphi-Developer :
I have a problem about my overrided Table : I want to encapsulate ALL
TFields into MY TTable, and
define OnValidate event into a event handler WITHIN the SAME unit. And
thern I test it in a new project.
But I found my event handler doesn't being notified. The Source as follow :
unit mytable;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DB, DBTables;
type
GameHardType = (Saturn, N64, Playstation, ThreeDo, NeoGeo, PCFX);
TTableTable = class(TTable)
private
{ Private declarations }
FGameHard : GameHardType;
procedure CheckName(Sender: TField);
procedure CheckTel(Sender: TField);
{ procedure Table1NAMEValidate(Sender: TField);}
protected
{ Protected declarations }
public
{ Public declarations }
TableName : TStringField;
TableTel : TStringField;
constructor Create(Owner: TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property GameHard : GameHardType read FGameHard write FGameHard;
end;
procedure Register;
implementation
constructor TTableMine.Create(Owner: TComponent);
begin
inherited Create(Owner);
self.DatabaseName := 'IBLOCAL';
self.TableName := 'Table';
{ self.Active := True;}
TableName := TStringField.Create(self);
TableName.DisplayLabel := 'Name';
TableName.FieldName := ' Name';
TableTel := TStringField.Create(self);
TableTel.DisplayLabel := 'Name';
TableTel.FieldName := ' Name';
TableName.OnValidate := CheckName;
TableTel.OnChange := CheckTel;
end;
destructor TTableMine.Destroy;
begin
inherited Destroy;
end;
procedure TTableMine.CheckName(Sender: TField);
begin
if TableName.Text < 'a' then
raise EDatabaseError.Create('Name Must be Greater than ''a''');
end;
procedure TTableMine.CheckTel(Sender: TField);
begin
if TableTel.Text < 'a' then
raise EDatabaseError.Create('Tel Must be Greater than ''a''');
end;
procedure Register;
begin
RegisterComponents('MyComp', [TTableMine]);
end;
end.
Pls Help me, I am in the Hell's Edge if next week end is came ! (Dead Line)