现在有这样一个问题,我设置了一个控件数组,这个数组可以动态生成控件,用户可以随意添加并删除控件,但是数组里面删除一个元素之后,后面的元素没办法自动补充上去,有没有像链表一样的数据结构,可以让后面元素自动填充上去的呢?具体应该如何实现?先谢谢大家了
解决方案 »
- Indy 的 IDTcpServer 无缘无故断开客户端
- indy10上傳出錯
- delphi自定义的过程,函数作不作为窗体函数有什么区别?
- 请问如何确定一个字符在ComboBox中的ItemIndex?
- 各位大虾,我现在开发了一个连接SQL SERVER的应用系统,请问怎样把SQL SERVER的客户端引擎和程序一起打包!!(急)
- udpserver,udpclient 用delphi7 7封装在dll 里,出现的问题
- 捕获key值!!!D6漏洞?
- 谁可以解释一下?
- 有一个panel1,里面有一个panel2和image1,可是panel2总是把image1遮住,我想让image1遮住panel2,请问怎么解决啊?
- 打印控制行数
- 求解stringgrid
- 用selectedrows.delete删除多条提示 书签无效
另外比普通数组多了个MOVE操作
不太好办
objList是TStringList
添加:
objList.addObject('btn1',Button1);取出:
var btn:Tbuttion;
idx:Integer;idx:=ObjList.IndexOf('btn1');//按名称取得ID
if idx<>-1 then
begin
btn:=Tbuttion(objlist.Objects[idx]);
//爱怎么处理怎么处理...
end;
怎么判断呢?
除了wzwcn怎么就没有人肯多写些代码了?我对这些数据结构都不太了解,不知道哪个更好,说TObjectList管理对象更好的人能不能像wzwcn一样举个例子?
fList:TList;
{ Private declarations }
procedure TForm1.Button1Click(Sender: TObject);
var
cb:TCheckBox;
rb:TRadioButton;
begin
cb := TCheckBox.Create(nil);
rb := TRadioButton.Create(nil);
if Assigned(fList) then
begin
fList.Add(cb);
flist.Add(rb);
end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
fList := tlist.Create;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
i : Integer;
begin
for i:= 0 to flist.Count -1 do
begin
if (Tobject(fList.Items[i]) is TCheckBox) then
TCheckBox(fList.Items[i]).Free
else if (TObject(fList.Items[i]) is TRadioButton) then
TRadioButton(fList.Items[i]).Free;
end;
flist.Free;end;
var c:TControl;
i:Integer;
begin
for i:=0 to Panel1.ControlCount-1 do
begin
c:=Panel1.Controls[i];
if c is TCheckBox then//是复选框
begin
//处理..
end
else if c is TRadioButton then//是单选框
begin
//处理..
end;
end;
end;
PTNode = ^TNode;
TNode = packed record
id: integer;
type: integer;
...
object: Tobject;
endTlist.add(PTNode);
删除时记得释放
我以前没有认真学过链表之类的数据结构,可能理解还有些偏差,有不对的地方还请大家多多指教。
以下贴出我的解决办法,还望大家不吝赐教。TObjectList的用法
1.定义
var
RadioList: TStringList;
注:要添加引用单元Contnrs
2.初始化
FItems := TObjectList.Create;
3.添加元素
FItems.Add(cxCheckBox1);
FItems.Add(cxRadioButton1);
FItems.Add(cxRadioButton2);
4.取出元素
var
check: TcxCheckBox;
radio: TcxRadioButton; check := TcxCheckBox(FItems[0]);
radio := TcxRadioButton(FItems[1]);
5.删除元素
FItems.Delete(1);
6.计算个数
var
n: Integer; n := FItems.Count;