Delphi TscGPPageControl动态创建新页面与加载Frame框架
效果展示:

核心代码:
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,这种现象我还是第一次见.

说明二:
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属性

 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号