请问这个控件怎么做? 我想做一个这样的控件,在TComboBox上加一个 ItemValues: TStrings属性,想将一些信息保存在这里面,请问这个控件怎么做?最好给我完整的且没有错误的代码,我写了一个,但有错误 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要用Tstrings.用tstringList.1、定义一个属性:property ItemValues : TstringList read FItemValues write SetItemValues;2、在构造函数里加FItemValues := TStringList.Create;3、在析构函数里加FItemValues.Free; 可以定义一个记录类型,分name,value等属性,每次增加Item时,增加一个记录指针,访问value属性时访问该记录指针即可 我编的调用这两个按钮后,就报错下面有控件代码procedure TForm1.Button1Click(Sender: TObject);begin zcComboBox1.ItemValues.Add('a');end;procedure TForm1.Button2Click(Sender: TObject);var i: integer; s: string;begin if zcComboBox1.ItemValues.Count > 0 then begin s := zcComboBox1.ItemValues.Strings[0]; for i:=1 to zcComboBox1.ItemValues.Count - 1 do s := zcComboBox1.ItemValues.Strings[i]; ShowMessage(s); end;end;我编写的控件代码是这样的:unit zcComBox;interfaceuses Windows, Messages, SysUtils, Classes, Controls, StdCtrls;type TzcComboBox = class(TComboBox) private { Private declarations } FItemValues: TStringList; protected { Protected declarations } procedure SetItemValues(const Value: TStringList); virtual; public { Public declarations } constructor Create(AOwner: TComponent); Override; destructor Destroy; override; published { Published declarations } property ItemValues: TStringList read FItemValues write SetItemValues; end; procedure Register;implementationprocedure Register;begin RegisterComponents('Stanard', [TzcComboBox]);end;constructor TzcComboBox.Create(AOwner: TComponent);begin inherited Create(AOwner); ItemValues := TStringList.Create; FItemValues := TStringList.Create;end;procedure TzcComboBox.SetItemValues(const Value: TStringList);begin if Assigned(FItemValues) then FItemValues.Assign(Value) else FItemValues := Value;end;destructor TzcComboBox.Destroy;begin ItemValues.Free; FItemValues.Free; inherited Destroy;end;end. 将构造函数和析构函数改写即可 ItemValues := TStringList.Create;//这句是错的constructor TzcComboBox.Create(AOwner: TComponent);begin inherited Create(AOwner); FItemValues := TStringList.Create;end;destructor TzcComboBox.Destroy;begin FItemValues.Free; inherited Destroy;end; delphi 7 + access2003 查询数据库,以日期区间为条件,但没能达到预期效果,求原因 怎么创建父窗口和子窗口 DBGRID中的数据如何自动折行 请教各位大哥一个算法问题 怎样将有相同字段的数据表合并生成新表? 莱鸟的一个简单问题 关于XPMenu的问题 急!!!!关于资源的用法 delphi的debug问题 CSDN离线浏览器? 高分急求单机数据库问题 关于dll文件调用,窗体显示问题?哪个高手帮帮忙
1、定义一个属性:
property ItemValues : TstringList read FItemValues write SetItemValues;
2、在构造函数里加
FItemValues := TStringList.Create;
3、在析构函数里加
FItemValues.Free;
下面有控件代码
procedure TForm1.Button1Click(Sender: TObject);
begin
zcComboBox1.ItemValues.Add('a');
end;procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
s: string;
begin
if zcComboBox1.ItemValues.Count > 0 then
begin
s := zcComboBox1.ItemValues.Strings[0];
for i:=1 to zcComboBox1.ItemValues.Count - 1 do
s := zcComboBox1.ItemValues.Strings[i];
ShowMessage(s);
end;
end;
我编写的控件代码是这样的:unit zcComBox;interfaceuses Windows, Messages, SysUtils, Classes, Controls, StdCtrls;type
TzcComboBox = class(TComboBox)
private
{ Private declarations }
FItemValues: TStringList;
protected
{ Protected declarations }
procedure SetItemValues(const Value: TStringList); virtual;
public
{ Public declarations }
constructor Create(AOwner: TComponent); Override;
destructor Destroy; override;
published
{ Published declarations }
property ItemValues: TStringList read FItemValues write SetItemValues;
end;
procedure Register;implementationprocedure Register;
begin
RegisterComponents('Stanard', [TzcComboBox]);
end;constructor TzcComboBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ItemValues := TStringList.Create;
FItemValues := TStringList.Create;
end;procedure TzcComboBox.SetItemValues(const Value: TStringList);
begin
if Assigned(FItemValues) then
FItemValues.Assign(Value)
else
FItemValues := Value;
end;destructor TzcComboBox.Destroy;
begin
ItemValues.Free;
FItemValues.Free;
inherited Destroy;
end;end.
constructor TzcComboBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FItemValues := TStringList.Create;
end;destructor TzcComboBox.Destroy;
begin
FItemValues.Free;
inherited Destroy;
end;