delphi 动态控件问题,哥弟姐妹们帮帮忙啊!!!

来源:百度知道 编辑:UC知道 时间:2024/06/28 02:23:51
动态创建tabsheet控件,并在里边创建N个combobox框,动态创建的tabsheet和combobox框数量不定,由用户决定(combobox)。怎么将tabsheet名称和combobox填写的数据提交数据库?
动态创建问题已经解决了,就是不知道怎么提交到数据库啊。

这个是创建tabsheet控件和combobox框代码:
procedure TForm2.ComboBoxSLSelect(Sender: TObject);
var
i,k:integer;
TmpTabsheet : Ttabsheet;
Tmpcombobox: TCombobox;
begin
for k:= pagecontrol2.ControlCount - 1 downto 0 do //如存在,则清除
begin
if pagecontrol2.Controls[k] is Ttabsheet then
(pagecontrol2.Controls[k] as Ttabsheet).Free;
end;
for i:= 1 to strtoint(comboboxSL.Text) do //动态创建tabsheet
begin
TmpTabsheet := TTabSheet.Create(Self);
with TmpTabsheet do
begin
Caption:='款式'+inttostr(i);
Name:='TabSheetKS' + IntToStr(i);
PageControl:=PageControl2;
Tmpcombobox:= Tcombobox.Create(TmpTabsheet); //
Tmpcombobox.Name :='ComboboxKS' + IntToStr(i);
Tmpcombobox.Parent := TmpTabsheet;
tmpcombobox.Width :=80;
tmpcombobox.Tex

先定义好数据库的数据表,例如数据表:
表名:ComboboxData。字段:,tID, tName, tParent,tWidth, tText, tParentID。
数据表2:表名:TabSheetData。
字段:pID, pName, pParentName

将Combobox的信息保存到表ComboboxData
将TabSheet信息保存到TabSheetData
每次程序需要动态创建,则,先读取数据库,ComboboxData的记录数就是要动态创建的Combobox,TabSheetData的记录数就是动态创建的TabSheet,组件的信息可以用循环直接赋值到动态创建时的组件。
这个不难的。有问题的话再找我吧。
我以前做电视墙功能时动态创建的组件和信息都很多。也不难解决。如果你不想用这种方法的话,还有更快速的方法,就是利用流,实现组件属性的存取。

例如:
var
MemStream: TMemoryStream;
FileStream: TFileStream;
begin
try
FileStream := TFileStream.Create('Test.dat', fmOpenRead);
FileStream.Position := 0;
MemStream := TMemoryStream.Create;
ObjectTextToBinary(FileStream, MemStream); //数据的转换
Memo := TMemo.Create(Self);
Memo.Parent := Self;
MemStream.Position := 0;
Memo := TMemo(MemStream.ReadComponent(Memo)); //读取Memo属性
finally
FileStream.Free;
MemStream.Free;