我正在创建我的第一个自定义 Delphi 组件,它基本上是一个带有标题和行文本的自定义 TPanel。
我希望能够使用 StringList 添加多行文本。但是,在测试组件时,当添加行时,文本行无法显示在面板上:NewLinesText.add('line1 text')。
然而,当我在运行时创建并填充一个新的 StringList,然后将其分配给我的控件时,它确实起作用: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.```
我希望能够使用 StringList 添加多行文本。但是,在测试组件时,当添加行时,文本行无法显示在面板上:NewLinesText.add('line1 text')。
然而,当我在运行时创建并填充一个新的 StringList,然后将其分配给我的控件时,它确实起作用: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.```
OnChange
? - Andreas Rejbrand