( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2

このエントリーをはてなブックマークに追加
897Delギコ
  ( )   ( )
   ( )
    ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (゚Д゚,,)< SubClass化コンポすべてに対応するのは無理なのかな。
   | ̄ ̄ ̄| \_______
   |二二二|
   |___|
   从从从从

以下のようなTCompo継承コンポを用意してみた。

constructor TFormFucker.Create(AOwner: TComponent);
begin
 inherited;

 if (AOwner is TCustomForm) then
 begin
  FOldFormProc := TCustomForm(AOwner).WindowProc;
  TCustomForm(AOwner).WindowProc := FormWndProc;
 end else
 begin
  FOldFormProc := nil;
 end;
end;

      ( )
  ( )  
   ( ) ( )
    ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (゚Д゚;)_ < 思いもしない罠アリコード
   |U ̄U |  \_______
   |二二二|
   |___|
   从从从从

destructor TFormFucker.Destroy;
begin
 if Assigned(FOldFormProc)
  and (Self.Owner is TCustomForm) then
 begin
  TCustomForm(AOwner).WindowProc := FOldFormProc;
  FOldFormProc := nil;
 end;

 inherited;
end;

procedure TFormFucker.FormWndProc(var Message: TMessage);
begin
 FOldFormProc(Message);
end;