Delphi で引数にクラス型?を渡す

関数に汎用性を持たせたり、動的生成したコンポーネントを探す場合に、クラス名で参照したい時がある

以下、クラス名でTComponentを探す例
(後ろから調べて最初に見つかったのを一つ返す)

type
    TComponentClass = class of TComponent;

function FindComponentClass(OwnerComponent: TComponent; FindClass: TComponentClass): TComponent;
    var I: Integer;
begin
    Result := nil;
    for I := OwnerComponent.ComponentCount - 1 downto 0 do begin
        if (OwnerComponent.Components[I] is FindClass) then begin
            Result := OwnerComponent.Components[I];
            Exit;
        end;
    end;
end;

FindComponentClass(Self, TButton); みたいな感じで利用する

コメント