delphi - 组件的默认属性值

标签 delphi properties components delphi-7

我想知道是否可以为组件定义默认属性值。
换句话说,我想在设计时为系统中的每个 TDBGrid 设置一个唯一的名称(可能是 GUID),这可能吗?还有另一种方法可以控制在运行时和设计时都有效的组件的唯一性。我关闭delphi后它也必须持续存在;例如组合框列表值。

提前致谢!

编辑

下面是代码,它不起作用:

type
  TMDBGrid = class(TDBGrid)
  private
    FUniqueName: String;
  protected
    function DefaultUniqueName: String;
    function GetUniqueName: String;
    procedure SetUniqueName(const AName: String);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property UniqueName: String read GetUniqueName write SetUniqueName;
  end;

procedure Register;

implementation

uses uComponentUtils;

procedure Register;
begin
  RegisterComponents('MLStandard', [TMDBGrid]);
end;

{ TMDBGrid }

constructor TMDBGrid.Create(AOwner: TComponent);
begin
  inherited;
  FUniqueName := DefaultUniqueName;
end;

function TMDBGrid.DefaultUniqueName: String;
begin
  Result := GenerateGUID(True);
end;

function TMDBGrid.GetUniqueName: String;
begin
  Result := '';
end;

procedure TMDBGrid.SetUniqueName(const AName: String);
begin
  FUniqueName := AName;
  if FUniqueName = '' then
    FUniqueName := DefaultUniqueName;
end;

function GenerateGUID(PlainText: Boolean = False): String;
var G: TGUID;
begin
  CreateGUID(G);
  Result:= GUIDToString(G);
  if PlainText then
    Result := MultiStringReplace(Result, ['{','}','[',']','-','.',' ','(',')'],
                                         ['','','','','','','','',''],
                                         [rfReplaceAll, rfIgnoreCase]);
end;

“它不起作用” 表示当 TDBGrid 添加到任何表单时,UNIQUENAME 为空。它应该有一个 GUID。

最佳答案

您对 GetUniqueName 的实现不返回任何东西。需要返回FUniqueName .

function TMDBGrid.GetUniqueName: String;
begin
  Result := FUniqueName;
end;

或者您可以删除 getter 并将属性更改为:
property UniqueName: String read FUniqueName write SetUniqueName;

关于delphi - 组件的默认属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906546/

相关文章:

delphi - 如果客户端关闭异常,通知Datasanap Server

ios - IndexPath.row 值未存储

java - 将 setProperty 传递给内部对象的 setProperty

github - 在我的Vue项目中使用来自GitHub的组件。 (我是一个完整的初学者)

delphi - 在运行时创建自定义标题栏和边框,TMainMenu 起作用

delphi - 插件/插件依赖如何工作?

delphi - delphi中的虚拟类创建/销毁

kotlin - 是否可以更改 Kotlin 的属性 getter 类型?

java - 子组件setSize的地方在哪里

delphi - 创建时约束组件父级