gpt4 book ai didi

delphi - 如何在自定义delphi组件中实现字符串列表属性?

转载 作者:行者123 更新时间:2023-12-03 14:52:34 25 4
gpt4 key购买 nike

我正在创建我的第一个自定义 Delphi 组件。它基本上是一个自定义 Tpanel,上面显示标题和行文本。

我希望能够使用字符串列表添加多行文本。

测试组件时,添加行时无法在面板上显示文本行:NewLinesText.add('line1 text')

但是,当我在运行时创建并填充新的字符串列表,然后将其分配给我的控件时,它确实有效:controlPanelitem.NewLinesText = MyNewStringlist

我希望能够添加这样的行:NewLinesText.add('line1 text')

我在 WinXP 上使用 Delphi 7 professional。请参阅下面的代码。

如有任何帮助,我们将不胜感激!

unit ControlPanelItem;

interface

uses
SysUtils, Classes, Controls, ExtCtrls, Graphics, AdvPanel, StdCtrls,
Windows,Forms,Dialogs;

type
tControlPanelItem = class(TAdvPanel)
private
fLinesText : TStrings;
procedure SetLinesText(const Value: TStrings);
procedure SetText;
protected
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
property NewLinesText : TStrings read FLinesText write SetLinesText;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [tControlPanelItem]);
end;

constructor tControlPanelItem.Create(AOwner: TComponent);
begin
inherited;
fLinesText := TStringList.Create;
end;

destructor tControlPanelItem.Destroy;
begin
fLinesText.Free;
inherited;
end;

procedure tControlPanelItem.SetLinesText(const Value: TStrings);
begin
fLinesText.Assign(value);
SetText;
end;

procedure tControlPanelItem.SetText;
var
count : Integer;
begin
for count := 0 to fLinesText.Count - 1 do
ShowMessage(fLinesText.strings[count]);

end;

end.

最佳答案

你应该这样做

procedure SetLines(Lines: TStrings);
begin
FLinesText.Assign(Lines);
// Repaint, update or whatever you need to do.
end;

您可能还需要设置 FLinesOnChange 属性(在创建自定义控件后立即在其构造函数中执行此操作)。将其设置为组件的任何 TNofifyEvent 兼容(我猜是私有(private)的或 protected )过程。在此过程中,您可以进行所需的重新绘制、更新等。

也就是说,做

constructor TControlPanelItem.Create(AOwner: TComponent);
begin
inherited;
FLinesText := TStringList.Create;
TStringList(FLinesText).OnChange := LinesChanged;
end;

procedure TControlPanelItem.LinesChanged(Sender: TObject);
begin
// Repaint, update or whatever you need to do.
end;

关于delphi - 如何在自定义delphi组件中实现字符串列表属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050581/

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