unit VisCtl;

interface

uses
  Windows, SysUtils, Types, UITypes, Classes, Controls, Forms;

type
  TVisCtl = class(TCustomControl)
  protected
    procedure SetWindowWidth(AWidth: Integer); virtual;
    procedure SetWindowHeight(AHeight: Integer); virtual;
    procedure SetDetached(ADetached: Boolean); virtual;
  end;

  TVisObj = class(TPersistent)
  protected
    FName, FTitle, FDescription: string;
    FGUID: TGUID;
  public
    procedure ShowOptionsForm(AParent: TCustomForm = nil); virtual;
    property Name: string read FName write FName;
    property Title: string read FTitle write FTitle;
    property Description: string read FDescription write FDescription;
    property GUID: TGUID read FGUID;
    class function GetRealm: string; virtual;
  end;

  TVisObjClass = class of TVisObj;

var
  VisObjListChanged: TNotifyEvent;

implementation

{ TVisCtl }

procedure TVisCtl.SetDetached(ADetached: Boolean);
begin

end;

procedure TVisCtl.SetWindowHeight(AHeight: Integer);
begin

end;

procedure TVisCtl.SetWindowWidth(AWidth: Integer);
begin

end;

{ TVisObj }

class function TVisObj.GetRealm: string;
begin
  Result := '';
end;

procedure TVisObj.ShowOptionsForm(AParent: TCustomForm);
begin

end;

end.
