gpt4 book ai didi

delphi - 组件的默认属性值

转载 作者:行者123 更新时间:2023-12-03 19:16:48 24 4
gpt4 key购买 nike

我想知道是否可以为组件定义默认属性值。
换句话说,我想在设计时为系统中的每个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com