Delphi TscGPPageControl动态创建新页面与加载Frame框架

效果展示:

test

 

核心代码:

procedure TMain.scAdvancedListBox2Items0Click(Sender: TObject); //单位设置
begin
  //获取点击的按钮的caption属性
  var i := TscAdvancedListBox(Sender).ItemIndex;
  var cap := TscAdvancedListBox(Sender).Items[i].Caption;

  //创建一个新的标签页
  var newtab := scGPPageControl1.Tabs.Add;
  var tabsIndex := scGPPageControl1.Tabs.Count - 1;
  scGPPageControl1.Tabs[tabsIndex].Caption := cap;
   //创建一个新的页面
  var newpage := scGPPageControl1.CreatePage;
  newtab.Page := newpage;
  scGPPageControl1.ActivePage := newpage;
   //实例化框架
  var frm := TFrmUnit.Create(newpage);
  frm.ISQL := Format('select * from %s', ['单位列表']);
  frm.Parent := newpage;
  frm.getdata;
  BackButtonClick(Sender);
end;

 

说明一:

var i := TscAdvancedListBox(Sender).ItemIndex;
var cap := TscAdvancedListBox(Sender).Items[i].Caption;

这里我原本是想直接一步到位,用 TscAdvancedListltem(Sender).caption的,结果返回空值,后面弹出 sender.className 才知道,这里的sender指向的是 TscAdvancedListBox,这种现象我还是第一次见.

image

 

说明二:

TscGPPageControl控件分为tab(标签)和page(页面)两个部分,动态创建的话,需要分别创建与绑定.

tab的创建语句是: var newtab := scGPPageControl1.Tabs.Add;

page的创建语句是: var newpage := scGPPageControl1.CreatePage;

tab和page绑定的语句是: newtab.Page := newpage;

设置显示页面的语句是:scGPPageControl1.ActivePage := newpage;

说明三:

1.Frame框架,需要实例化才能调用

2.要确定OWER,通常是page,关闭页面时,frame框架也会跟着释放

3.要确定父级(parent).

说明四:

TscGPPageControl属性最好勾选FreeOnClose属性

image

 

posted @ 2025-10-16 13:34  一曲轻扬  阅读(13)  评论(0)    收藏  举报