找到動態創建的控件

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

     本來以為動態創建控件很容易,比如,

               TTabSheet *NewGroupPage[10];

               for( int Page = 0; Page < A;++page )

               {

            NewGroupPage[Page] = new TTabSheet(this);
                    NewGroupPage[Page]->PageControl
                                                           = MainContainer;
                     NewGroupPage[Page]->Caption
                                                           = "Page " + IntToStr(Page+1);

                      TLabel *ALabel;
                      ALabel                          = new TLabel(this);
                      ALabel->Parent            = NewGroupPage[Page];
                      ALabel->Caption          = "A: ";
                      ALabel->Font->Size     = 12;
                      ALabel->Left                 = 7;
                      ALabel->Top                 = 5;
                      ALabel->Width              = 145;
                      ALabel->Height             = 24;

                      TLabel *BLabel;
                      BLabel                           = new TLabel(this);
                      BLabel->Parent             = NewGroupPage[Page];
                      BLabel->Caption           = "B : ";
                      BLabel->Font->Size      = 12;
                      BLabel->Left                  = 167;
                      BLabel->Top                  = 5;
                       BLabel->Width              = 145;
                       BLabel->Height             = 24;

                       TEdit *AEdit;
                       AEdit                              = new  TEdit(this);
                       AEdit->Parent                = NewGroupPage[Page];
                       AEdit->AutoSize             = false;
                       AEdit->Font->Size          = 8;
                       AEdit->Left                     = 8;
                       AEdit->Top                     = 34;
                        AEdit->Width                 = 145;
                        AEdit->MaxLength         = 10;

                        TEdit *BEdit;
                        BEdit = new  TEdit(this);
                        BEdit->Parent                = NewGroupPage[Page];
                        BEdit->AutoSize            = false;
                        BEdit->Font->Size         = 8;
                        BEdit->Left                     = 168;
                        BEdit->Top                    = 34;
                        BEdit->Width                  = 145;
                        BEdit->MaxLength          = 10;

                  }

       玩了半天回來,時間不多了,趕緊寫一段自動寫數到剛自動創建的Edit中:

       for( int Page = 0; Page < A;++Page )

        {

                dynamic_cast < TEdit*>
                (
                        MainContainer->Pages[Page]->Controls[0]
                 )->Text = "A";       // 寫第一個Edit

                dynamic_cast < TEdit*>
                (
                        MainContainer->Pages[Page]->Controls[1]
                 )->Text = "B";       // 寫第二個Edit

        } 

        運行。 啊?怎麼沒有東西呢?

  搗弄了半天,還是不對,只好先下班。

  下午接著干,不敢再大意,仔細閱讀了一下Controls的含意。原來,作怪的是,TLabel也占了一個位,要正確地找到TEdit,必須遍歷整個Container.

        找到了原因,解決很容易,如:

       for( int Page = 0; Page < A;++Page )

        {

                int Count;
                Count
                        = dynamic_cast< TWinControl* >
                           (
                                     MainContainer->Pages[ Page ]
                           )->ControlCount;

                for( int i = 0; i < Count;++i )

                { 

                        if(     dynamic_cast < TEdit*>
                                (
                                        MainContainer->Pages[Page]->Controls[i]
                                 ) != NULL 

                        {

                                // 此處省略了分別存取各個元件的判別,

         //只籠統地在TEdit填入數字,具體地,可加計數器。

                                dynamic_cast < TEdit*>
                                (
                                         MainContainer->Pages[Page]->Controls[i]
                                 )->Text = "A";       
                        

                       }

                }

        }

        //-------------------------------------------------------------------------------------

       終於搞定.   

            

      

     

QT 实现类似 Tool Box 抽屉控件同时展开多个代码 QT 使用 Tool Box时, 发现只能展开一个不符合需求。 我想实现类似效果抽屉控件动态创建添加,而且可以同时展开多个。找到了实现的代码,修改一下放在项目里使用,效果如下: 简单使用代码: lockerwidget.h lockerwidget.cpp... 阅读详情

相关推荐

MFC动态创建CEdit控件

在项目开发时,可能遇到动态创建控件的情况。如根据当前用户的数量,动态创建控件显示用户信息等情况,需要动态常见静态文本框和编辑框等。 此时,利用控件类中Create()函数进行动态创建,默认是显示状态。如: 头文件定义:CStatic *p_MyStatic; CPP中实现: p_MyStatic = new CStatic(); p_MyStatic->Create("静态文本框

zqckzqck的专栏 1万+

自动创建控件

这个是摘自网上的,var         a:   Tedit;     begin         a   :=   TEdit.create(self);         a.parent   :=   form1;         a.left   :=   0;         a.top     :=   0;         a.Text   :=   test;      

562

MFC中动态创建控件

本篇文章介绍了在MFC中怎么动态创建各种控件,以及添加相应的响应事件。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从对象窗口中拖出所需控件放在对话框中即可,再恰当批改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不须要调用Create()函数来创建。 动态控件是指在须要时由Create()创建的控件,这与

penpenandtongtong的专栏 4932

动态创建控件和取值

//原帖:http://topic.csdn.net/t/20051019/11/4336067.html//我只摘下了,对我有用的东西。//学习动态创建控件和取值的方法  代码如下:         for(int   i=0;i  {     TextBox   tbcz=new   TextBox();     tbcz.ID="cz"+i;     this.Panel2.Contro

wood's blog 1389

PowerBuilder中动态创建OLE对象心得

        由于PB语言本身的特性,一般很少会在编程时使用第三方控件的。但是一旦使用还真不像VB那么方便。日前在编写一段程序时,就遇到了一点问题。写出来与大家分享心得。        这段程序其实很简单,就是使用第三方提供的加密锁来实现密码或其它用户个人信息的存储。根据其提供的Demo程序,我们知道它有一个控件是用来读写加密锁指定地址数据的,至于其内在逻辑就不用管了,关键是如何调用的问题。

2360

.net web动态生成指定控件 并且在.cs中找到他们

动态生成指定控件CheckBox,RadioButton,TextBox HTML控件

badhou的专栏 1411

WPF动态创建Image的显示问题

原文:WPF动态创建Image的显示问题 最近学习WPF,看到一篇教程讲解如何动态创建Image控件,自己练手时候无论如何也显示不出图片。刚开始以为是图片的路径有问题,可后来将图片的路径设为相对路径或者绝对路径都没有解决问题。于是开始在网上搜索资料,直到发现一篇问答《WPF用Image显示图片失误(为...

weixin_34419326的博客 712

动态控件的状态问题(2)

在完成Page_Load中动态生成试卷的部分后,遇到一个新问题在button事件中,如此引用先前的RadioButtonList控件时,protected void Button_submit_Click(object sender, EventArgs e)...{        //为说明,下面只是列出类似操作的语句        RadioButtonList tmpRad = (R

Johnny_Depp的专栏 721

【已解决】C++ QT动态页面如何为一组checkBox赋值(两种方法)

笔者动态创建页面,动态创建了checkBox,想要动态管理它们,比如给他们赋值一下呀之类的,但是思考了很久,始终不能如愿,大约花了一个多小时。最终成功实现。这里解释两种方法。下面的方法,如果报错,请第一时间考虑头文件包含,在这里也会罗列,包含的头文件。

执念斩长河 732

MFC动态创建控件

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。     一、创建动态控件:  1.建立控件ID号:     ID号是控件的标识,创建控件前必须先为它设置一个ID号。     打开资源中的“String Table”,在空白行上双击鼠标,这时会弹出一个ID属性对话框,在其中的ID编辑框中输入ID,如:IDC_MYBUTTON,在Caption中输入

q5512049的博客 2421

在DELPHI中动态创建控件以及控件的事件

     在DELPHI中我们经常要动态的创建控件以及控件的事件。例如,我们可能想根据程序需要动态的创建一些Tshape组件来创建某个图形,并使得在鼠标移动上去之后可以完成某些操作。这一般需要需要三步: 生成一个制定组件类的实例 为这个实例付初值 在使用完毕后,释放资源    下面将通过一个例子来演示,例子的功能是动态创建一个Tshape的实例MyShap

1万+

WPF 后台动态创建控件

一、基本控件: 1、 Grid 2、 StackPanel 3、 Border 4、 Button 5、 CheckBox 6、 ComboBox 7、 DataGrid 8、 Image 9、 Label 10、 ListBox 11、 RadioButton 12、 Rectangl

qq_31971935的博客 1万+

(32)uniGUI for Delphi下如何动态创建控件

(中行雷威2019.5.30) (同一个世界,同一个梦想,交流学习C++Builder and Delphi XE10,传承c++builder and Delphi的魅力!欢迎各地朋友加入我的QQ群484979943、860634510、299497712,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群。) 【阅读倡议...

路在脚下 3018

VB窗体动态创建控件控件事件

VB窗体动态创建较少,今天,试着弄一个,专为解答之用。 首先创建一个空白窗体,调整大小,修改名称,双击窗体进入代码编辑界面: Public Class VB解答专用窗体 Dim 数据列表 As DataGridView Dim 输入框 As TextBox Private Sub VB解答专用窗体_Load(sender As Object, e As EventAr...

浤济的专栏 4826

动态创建TabCtrl控件的用法

TabCtrl控件可以通过对话框方式直接采用控件静态添加,但是有时候需要去动态创建一个TabCtrl控件,本文是在CFormView上动态创建TabCtrl控件: 1、添加CTabCtrl类的对象: CTabCtrl m_tabCtrl; 2、为TabCtrl控件添加页面,本文创建两个对话框: CDialog1 m_page1; CDialog2 m_page2; 3、在资源视

xdhywj的专栏 1万+

【wpf】05 几种容器动态创建控件的对比

从上面代码实现的效果来看,对于动态生成的控件可以分成两种可能性:一是固定数量和种类的控件生成;二是不固定数量和种类的控件生成。从上面的实现效果可以明显看出,不固定数量的控件生成很容易超出容器范围,从而无法看到,那这里能够胜任此功能的只有使用ScrollViewer和其他容器的组合实现,效果是比较好的。如下:wpf中控件的灵活组合,还有很多值得深入学习的地方,在使用的过程中,逐渐进步。

kewaqi618的博客 2089

VB中动态创建控件

创建数据驱动窗体所谓数据驱动窗体就是根据所请求的数据的不同生成相应的窗体。举例来讲,假设你现在有一个数据库,其中有些字段必须根据登录者的身份加以显示,授权级别高的用户可以浏览并修改这些字段的内容;授权级别一般的用户只能浏览这些字段中的数据;授权级别低的用户则不能浏览这些字段中的内容。要做到这一点就得利用VB动态添加控件的功能。动态创建控件无论你想要创建何种类型的数据驱动窗体,你必须知道如何在运行时

yzmml的专栏 1308

7、DuiLib动态创建控件

在实际业务场景中,并不是所有界面元素都可以通过 XML 预先定义好的,有时候我们需要根据数据库或者服务器返回的数据动态的在界面上创建一些控件。本文将介绍两种方式来动态创建控件的方法,一种是使用纯代码方式,另外一种是使用已经构建好的 XML 来动态创建控件。之前创建控件的方式都是在 XML 写好,设置好显示位置,运行程序后就自动显示出来了。实际一个控件对应的就是 DuiLib 中的一个类,我们只需要在代码中实例化一个控件类对象,设置好显示位置和控件的样式,并插入到指定的容器内就可以显示出来了。假设我们要在窗口

森明帮大于黑虎帮的博客 1420
上一篇: AnsiString 原來是一個字符數組.
下一篇: 根據細表中的主表ID,不重復地列出主表中的字段
tree2000
博客等级 码龄26年 6粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值