想在一个pagecontrol下动态生成tabsheet,并动态在tabsheet加入一个dbgrid控件,怎样做啊?或者在tabcontrol中动态生成tab标签,并动态在tab下加入一个dbgrid控件。我是想建1个pagecontrol,然后打开excel文件后,就将excel中所有sheet名字加载到tabsheet中,并动态在tabsheet加入dbgrid控件,把excel数据导入进去。怎样做到啊?动态生成tabsheet容易些,可动态在tab下加入一个dbgrid控件,不知道怎么做
解决方案 »
- 引用单元文件的问题
- 在TreeView2中点击节点和前面的加号
- 如何把delphi中的不可见控件制作成ocx或者dll,与其他开发环境共享
- 一个基于sql server2000的数据库应用程序的安装程序
- delphi简单问题,在线等
- cll007(gazo)帮忙啊!
- 求救!急急急!
- 在delphi中怎樣對sql server 表的圖片字段賦值
- ping 这么用为什么不行?
- 兄弟们在我告别单身的最后一晚
- 請教一個procedure edtCodeButtonClick(Sender: TObject; AbsoluteIndex: Integer)是什麼控件!
- 兩貼一起結,200分求解同一問題,請路過高手進來看看!
dbgrid=pagecontrol.Activepage.dbgrid不对,dbgrid.parent=pagecontrol.Activepage也不行,运行就死。
var
dbgrd: TDBGrid;
i: Integer;
begin
dbgrd := nil;
with PageControl1.ActivePage do
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i].ClassNameIs('TDBGrid') then
dbgrd := Components[i] as TDBGrid;
end;
end;
if dbgrd <> nil then
// 添加自己代码
end;
var
i, j, k: Integer;
// grid: TDBGrid; Value: Variant;begin if FileOpenDialog.Execute then
begin
{define a file name with data}
LoadedFileName := FileOpenDialog.FileName; for i := suiPageControl1.PageCount - 1 downto 0 do
suiPageControl1.Pages[i].Free; with TMSExcel.Create(Self) do
try
LoadFromFile(LoadedFileName); for k := 0 to Sheets.Count - 1 do
begin
sheet := Sheets.SpreadSheet(k);
if Assigned(sheet) then
begin
{create a tab and grid for each sheet in workbook}
suiPageControl1.Font.Size := 9;
tab := TsuiTabSheet.Create(suiPageControl1); tab.Caption := sheet.Caption;
tab.PageControl := suiPageControl1; grid[k] := TsuiStringGrid.Create(tab);
grid[k].DefaultRowHeight := 21;
grid[k].DefaultColWidth := 80;
grid[k].Font.Size := 9;
grid[k].Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing];
grid[k].Parent := tab;
grid[k].Align := alClient; grid[k].RowCount := sheet.Cells.UsedRowCount + 1;
grid[k].ColCount := sheet.Cells.UsedColCount + 1; for i := 1 to sheet.Cells.UsedRowCount + 1 do
begin
for j := 1 to sheet.Cells.UsedColCount + 1 do
begin
Value := sheet.Cells.GetValue(j - 1, i - 1);
if (VarType(Value) = varBoolean) then
begin
if Value then
grid[k].Cells[j, i] := 'True'
else
grid[k].Cells[j, i] := 'False'
end
else
grid[k].Cells[j, i] := VarToStr(Value);
end;
end;
end
end; finally
Free
end;
end;
IsOpenFile := True;
end;