Advertisement
Guest User

Untitled

a guest
Dec 16th, 2016
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.20 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, wwdblook, Wwdbdlg;
  8.  
  9. type
  10.   TwwDBLookupComboDlg = class(Wwdbdlg.TwwDBLookupComboDlg); // This is necessary
  11.   TForm1 = class(TForm)
  12.     Button1: TButton;
  13.     wwDBLookupComboDlg1: TwwDBLookupComboDlg;
  14.     procedure FormCreate(Sender: TObject);
  15.   end;
  16.  
  17. var
  18.   Form1: TForm1;
  19.  
  20. implementation
  21.  
  22. {$R *.dfm}
  23.  
  24. type
  25.   TButtonEx = class(TButton)
  26.   end;
  27.  
  28.   TwwDBLookupComboDlgEx = class(TwwDBLookupComboDlg)
  29.   end;
  30.  
  31. procedure PatchInstanceClass(Instance: TObject; NewClass: TClass);
  32. type
  33.   PClass = ^TClass;
  34. begin
  35.   if Assigned(Instance) and Assigned(NewClass)
  36.     and NewClass.InheritsFrom(Instance.ClassType)
  37.     and (NewClass.InstanceSize = Instance.InstanceSize) then
  38.   begin
  39.     PClass(Instance)^ := NewClass;
  40.   end;
  41. end;
  42.  
  43. procedure TForm1.FormCreate(Sender: TObject);
  44. begin
  45.   PatchInstanceClass(Button1, TButtonEx);
  46.   showmessage(Button1.ClassName); // Good: TButtonEx
  47.  
  48.   PatchInstanceClass(wwDBLookupComboDlg1, TwwDBLookupComboDlgEx);
  49.   showmessage(wwDBLookupComboDlg1.ClassName); // Bad: TwwDBLookupComboDlg (should be TwwDBLookupComboDlgEx)
  50. end;
  51.  
  52. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement