Skip to content

Instantly share code, notes, and snippets.

@clauwn
Created March 2, 2011 15:57
Show Gist options
  • Save clauwn/851145 to your computer and use it in GitHub Desktop.
Save clauwn/851145 to your computer and use it in GitHub Desktop.
unit uCCRefreshTitleFieldOnChange;
interface
uses SysUtils, Windows, Classes, SuperGlobal, DB;
Type _PTField = ^TField;
Type TRefreshTitleOnFieldChange = Class(TObject)
Constructor Create(); overload;
Destructor Destroy(); override;
Strict Private
m_MyField: _PTField;
m_DynEvent_Orig_OnChange: Procedure(Sender: TField) Of Object;
m_NotifyEvent: TNotifyEvent;
Procedure Setm_MyField(const Value: _PTField);
Procedure p_DynEvent_NewOnChange(Sender: TField);
Public
Constructor Create(const Field: _PTField); overload;
Property Field: _PTField Read m_MyField Write Setm_MyField;
Property OnAlert: TNotifyEvent Read m_NotifyEvent Write m_NotifyEvent;
end;
implementation
{ TRefreshTitleOnFieldChange }
constructor TRefreshTitleOnFieldChange.Create;
begin
inherited Create();
m_MyField:= NIL;
m_DynEvent_Orig_OnChange:= NIL;
end;
constructor TRefreshTitleOnFieldChange.Create(const Field: _PTField);
begin
Create();
Self.Field:= Field;
end;
destructor TRefreshTitleOnFieldChange.Destroy;
begin
Self.OnAlert:= NIL;
inherited;
end;
procedure TRefreshTitleOnFieldChange.p_DynEvent_NewOnChange(Sender: TField);
begin
If Assigned(m_DynEvent_Orig_OnChange) Then
m_DynEvent_Orig_OnChange(Sender);
If Assigned(Self.OnAlert) Then
Self.OnAlert(Self);
end;
procedure TRefreshTitleOnFieldChange.Setm_MyField(const Value: _PTField);
begin
m_MyField:= Value;
If Assigned(m_MyField.OnChange) Then
m_DynEvent_Orig_OnChange:= m_MyField.OnChange;
m_MyField.OnChange:= p_DynEvent_NewOnChange;
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment