Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, wwdblook, Wwdbdlg;
- type
- TwwDBLookupComboDlg = class(Wwdbdlg.TwwDBLookupComboDlg); // This is necessary
- TForm1 = class(TForm)
- Button1: TButton;
- wwDBLookupComboDlg1: TwwDBLookupComboDlg;
- procedure FormCreate(Sender: TObject);
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- type
- TButtonEx = class(TButton)
- end;
- TwwDBLookupComboDlgEx = class(TwwDBLookupComboDlg)
- end;
- procedure PatchInstanceClass(Instance: TObject; NewClass: TClass);
- type
- PClass = ^TClass;
- begin
- if Assigned(Instance) and Assigned(NewClass)
- and NewClass.InheritsFrom(Instance.ClassType)
- and (NewClass.InstanceSize = Instance.InstanceSize) then
- begin
- PClass(Instance)^ := NewClass;
- end;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- PatchInstanceClass(Button1, TButtonEx);
- showmessage(Button1.ClassName); // Good: TButtonEx
- PatchInstanceClass(wwDBLookupComboDlg1, TwwDBLookupComboDlgEx);
- showmessage(wwDBLookupComboDlg1.ClassName); // Bad: TwwDBLookupComboDlg (should be TwwDBLookupComboDlgEx)
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement