文档库 最新最全的文档下载
当前位置:文档库 › jsj_Delphi 插件创建

jsj_Delphi 插件创建

jsj_Delphi 插件创建
jsj_Delphi 插件创建

MFC中如何动态创建控件并响应其消息

原理: 利用窗体上的消息都会经OnCmdMsg进行路由处理的原理,在这里截获自己动态生成的那些控件,然后通过自定义消息发送出去(带上控件id),经自己的消息处理函数处理即可。 1、定义起始控件ID号,和自定义消息 UINT Start_CtlID = 1980; #define DynamicBtnMessage WM_USER+200 后面动态创建的控件id号会基于Start_CtlID自增; 2、在OnInitDialog中动态创建控件 窗体类中定义:CArray btnArray 以保存动态创建的按钮 int btnw=120;int btnh = 50;//创建*3个button,顺序排列 for (int i=0;i<5;i++) { for (int j=0;j<5;j++) { CString str; str.Format(_T("Cam%d"),Start_CtlID-1980); r.left =100 + (j*btnw); r.top =250 + (i*btnh); r.bottom = r.top + btnh; r.right =r.left + btnw; CButton *btn = CreateButton(Start_CtlID,str,r, BS_FLAT); btn->ShowWindow(SW_SHOW); btnArray.Add(btn); } }

3 在OnCmdMsg中处理控件点击消息 BOOL CFormDlg::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { // 判断传进来的控件id位于动态创建button的id之间,并且命令nCode是控件命令(比如点击事件消息),注:其它系统事件也会走到这个函数里进行分发的。 if (nID>=1980 && nID<=Start_CtlID-1 && CN_COMMAND==nCode) { //发送自定义消息,并附上控件ID PostMessage(DynamicBtnMessage,nID,NULL); } return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } 4、在自定义消息处理函数中处理点击事件 在BEGIN_MESSAGEMAP和END_MESSAGE_MAP之间加入以下消息映射: ON_MESSAGE(DynamicBtnMessage, &CpngFormDlg::OnDynamicBtnMessage) 在头文件中定义消息响应函数: afx_msg LRESULT OnDynamicBtnMessage(WPARAM wParam, LPARAM lParam); LRESULT CpngFormDlg::OnDynamicBtnMessage(WPARAM wParam, LPARAM lParam) { g_ClickBtnID = (UINT)wParam-1980; if (g_ClickBtnID>=0 && g_ClickBtnID<=100) { CString str; str.Format(_T("button %d is clicked!"),g_ClickBtnID);//获取到点击的是谁 AfxMessageBox(str); } return TRUE; }

C#.NET中动态添加与删除控件

C#.NET中动态添加与删除控件 数组为共享公用功能的一组控件一起工作提供了便捷的途径。例如,一组控件可能用于显示相关的数据,或者在被点击时提供相关的行为。C#本身并不支持控件数组的建立,但是你可以通过编程复制控件数组的所有功能。本文介绍复制控件数组功能的简单组件的建立。 控件数组的主要用处有: 1,使用相同的名称与索引访问一组控件,允许用编号检索和设置数据项并且在整个数组中重复。这个功能可以使用下面的代码实现。 伪代码 myControl[myIndex].MyProperty = myValue; myControl[myIndex + 1].MyMethod 2,多个对象使用同一个事件处理程序(event handler)处理事件,在这些事件中检索和使用索引,代码如下: 伪代码 private void myControl_Click(System.Object sender, System.EventArgs e) { Messagebox.Show("You have clicked MyControl number " + myControl.Index); } 3,在运行时动态添加或者删除控件,代码如下: 伪代码 for (int i = 1; i < 6; i++) { //插入代码来建立控件并给属性赋值 } C#允许你复制与控件数组相关的一些功能。例如,你能使用委托把多个对象的事件绑定到一个事件处理程序。但是,如果把这些功能合并到一个动态的、容易管理的组件中更加简便。本文将建立有下面特性的组件: ·建立索引和排序控件的集合。将使用按钮集合来演示。 ·一个事件处理程序来处理衍生的按钮的点击事件。 ·使用索引引用控件和成员的代码。 ·给窗体动态添加和删除控件的代码。 建立项目 在本节中将建立并命名一个项目,并给该项目添加一个类。该类将封装实现控件数组的代码。 1、选择File-> New-> Project菜单打开New Project对话框。

VB中动态创建控件

VB中动态创建控件 VB相关技术:https://www.wendangku.net/doc/f013191200.html,/s/blog_5ccce2820100lof8.html 创建数据驱动窗体 所谓数据驱动窗体就是根据所请求的数据的不同生成相应的窗体。举例来讲,假设你现在有一个数据库,其中有些字段必须根据登录者的身份加以显示,授权级别高的用户可以浏览并修改这些字段的内容;授权级别一般的用户只能浏览这些字段中的数据;授权级别低的用户则不能浏览这些字段中的内容。要做到这一点就得利用VB动态添加控件的功能。 动态创建控件 无论你想要创建何种类型的数据驱动窗体,你必须知道如何在运行时动态地创建控件。你可以通过控件数组做到这一点,但VB6的Controls集合所提供的Add 方法,功能更强大,灵活性更高。使用该方法,你不需要在设计时将控件的实例放在窗体上。实际上,用Add方法你甚至可以创建程序在编译时根本不存在的控件。这种方法的用法也很简单: ' 声明一个窗体级的变量 Dim WithEvents txtTotal As TextBox Sub CreateTextbox() ' 创建新的Textbox控件 Set txtTotal = Controls.Add("VB.TextBox", "txtTotal") ' 将控件移动到你所需要的地方 txtTotal.Move 1000, 800, 1200, 300 ' 创建时,所有的控件都是不可见的 txtTotal.Visible = True End Sub 请注意Add方法的第二个参数:分配给控件的名称。从代码可读性出发,这个名称一般都与变量名相同。你可以用这个名称从Controls集合中获取相应的控件或移除该控件。例如: Controls.Remove "txtTotal" 在变量声明时加上WithEvents关键字,即使在设计时窗体不存在该控件,你也可以为该控件的事件编写代码。

VB动态添加控件的简单方法

VB动态添加控件并对其进行拖放操作改变位置 用Controls.Add添加控件 Dim WithEvents mypic As PictureBox Private Sub Command1_Click() Set mypic = Controls.Add("VB.PictureBox", "mypic") mypic.Left = 50 mypic.Top = 50 mypic.Visible = True End Sub 至于拖放操作,在程序中设置好mypic控件的有关属性后,处理mypic的有关事件即可 注意: 如果是控件数组的话,建议采用:load 控件数组名(索引) 的方法添加控件 '可先手工画一个控件,Visable设置为False,Index设置为0 '若需要多个就用load object(index)来加载,并把它们的visable设置为true;不需要多个就真接把原有的那个的visable设成显示就行了。 Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Private Sub Command1_MouseDown(Index As Integer, Button As Integer, _ Shift As Integer, X As Single, Y As Single) If Button = 1 Then ReleaseCapture '移动控件 SendMessage Command1(Index).hwnd, &HA1, 2, 0& End If End Sub

vb动态添加删除控件汇总

VB 动态添加删除控件汇总 1. 概述在使用Visual Basic 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。本人在设计网络监控系统时,需要在原理图与实物示意图间切换。切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。下面将就Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组 和控件集合作详细的阐述。2. 基于控件数组的动态控件的创建与删除vb 中的控件数组实际上也是一种数组,其中的每个控件具有相同的Name 属性,但具有不同的Index 属性,在这里Name 属性类似于数组的名字,而Index 属性类似于数组的下标同时,控件数组也支持普通VBA 数组的LBound 、UBound 和Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。下面给出利用Load 命令动态添加控件和Unload 命令动态删除控件的一般方法:(1) 首先在窗体上放置一个TextBox ,其Name 属性设置为Text1 ,Index 属性设置为0 ,这样我们就创建了一个

TextBox 控件数组,其中有一个成员。(2)在窗体上放置一个命令按钮Command1 ,在其Click 事件中添加如下的代码:Load Text1(1)Text1(1).left=0Text1(1).visible=true(3) 在窗体上放置一个命令按钮Command2 ,在其Click 事件中添加如下的代码:Unload Text1(1)(4)运行。单击命令按钮Command1 ,窗体上会出现一个新的文本框;单击命令按钮Command2 ,窗体上刚出现的新的文本框就被删除。需要注意的是:Load 命令创建的控件Text1(1) 与设计时已经放在窗体上的控件Text1(0) 有完全相同的属性,也包括大小和位置等属性,例外的就是Index 属性不一样,Visible 属性默认为False, 所以必须在Load 方法执行之后,执行调整控件位置的语句[yu ju],并把其Visible 属性设置为True ,以便在窗体上可见。Unload 命令只能删除动态加载的控件,若删除设计时创建的控件会产生错误[cuo wu]。另外,利用上面提到的数组的一些方法,可以有效的简化代码的编写。以下的代码可以删除所有动态创建的Text1 控件数组中的控件: Do While Text1.Count>1Unload Text1(Text1.Ubound)Loop需要说明[shuo ming]的是,菜单数组是控件数组的一种特殊的形式,只是它是在菜单编辑器[bian ji qi]中设置相应的Name 和Index 属性,而且要求一个菜单控件数组中的菜单项必须是

android中利用linearlayout动态添加控件 - androider的专栏 -

Android中利用LinearLayout动态添加控件- Androider的 专栏-... 在androidUI布局中,一般都是利用xml来布局控件,这是比较方便和直观的,但是有时却需要动态生成,下面就举2个简单例子来说明怎么动态添加控件: 1.动态添加2个垂直排列的Button view plaincopy to clipboardprint? 01. @Override 02. public void onCreate(Bundle savedInstanceState) { 03. super.onCreate(savedInstanceState); 04. //setContentView(https://www.wendangku.net/doc/f013191200.html,yout.main); 05. final LinearLayout layout2=new LinearLayout(this); 06. layout2.setOrientation(LinearLayout.VERTICAL); 07. Button btn1=new Button(this); 08. setContentView(layout2); 09. Button btn2=new Button(this); 10. btn1.setText("Button1"); 11. btn2.setText("Button2"); 12. layout2.addView(btn1);

13. layout2.addView(btn2); 14. 15. 16. setContentView(layout2); 17.} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(https://www.wendangku.net/doc/f013191200.html,yout.main); final LinearLayout layout2=new LinearLayout(this); layout2.setOrientation(LinearLayout.VERTICAL); Button btn1=new Button(this); setContentView(layout2); Button btn2=new Button(this); btn1.setText("Button1"); btn2.setText("Button2"); layout2.addView(btn1); layout2.addView(btn2); setContentView(layout2); }

vb动态添加控件

搞了快一个下午的这个东东, 其实是在搞一个在VB6.0中动态添加控件和时间的一个实现, 没用过VB6.0, IDE也么有VS好用... 好多东东在探索 结果就报了个这个错误.... run-time error '91' object variable or with block variable not set 查了好久, 原来是使用变量的时候, 没有去new它, 因为别人给的sample中, Dim的时候, 有new, 单身我拿过来用的时候, dim后面的new在build的时候不通过, 我就拿掉了, 结果运行的时候一直出这个问题.. 动态添加控件和时间的, 参考如下(等哪天我有空了,再来写) 创建数据驱动窗体 所谓数据驱动窗体就是根据所请求的数据的不同生成相应的窗体。举例来讲,假设你现在有一个数据库,其中有些字段必须根据登录者的身份加以显示,授权级别高的用户可以浏览并修改这些字段的内容;授权级别一般的用户只能浏览这些字段中的数据;授权级别低的用户则不能浏览这些字段中的内容。要做到这一点就得利用VB动态添加控件的功能。 动态创建控件 无论你想要创建何种类型的数据驱动窗体,你必须知道如何在运行时动态地创建控件。你可以通过控件数组做到这一点,但VB6的Controls集合所提供的Add方法,功能更强大,灵活性更高。使用该方法,你不需要在设计时将控件的实例放在窗体上。实际上,用Add方法你甚至可以创建程序在编译时根本不存在的控件。这种方法的用法也很简单: ' 声明一个窗体级的变量 Dim WithEvents txtTotal As TextBox Sub CreateTextbox() ' 创建新的Textbox控件

vb实现动态添加控件

vb实现动态添加控件 VB6有一个新功能,可以动态添加控件,不用控件数组: object.Add (ProgID, name, container) 参数说明 Object 必需的。一个对象表达式,其值是“应用于”列表中的一个对象。 ProgID 必需的。一个标识控件的字符串。大多数控件的ProgID 都可通过查看对象浏览器来决定。控件的ProgID是由控件的库和类组成的。 例如,CommandButton控件的ProgID是 https://www.wendangku.net/doc/f013191200.html,mandButton。在ProgID 与对象浏览器中所显示的不一样的情况下,Visual Basic 将显示一个包括正确 ProgId 的错误信息。 name 必要的。一个字符串,用来标识集合的成员。 container 可选的。一个对象引用,它指定控件的容器。如果没有指定或为NULL,缺省值为 Controls 集合所属的容器。通过指定该参数,可以把一个控件放置在任何现存的容器控件(如 Frame控件)中。用户控件或 ActiveX 文档也可以作为一个容器。 举例: //在picture1上面添加一个commandbutton Private Sub Form_Load() Form1.Controls.Add "https://www.wendangku.net/doc/f013191200.html,mandButton", "cmdOk", Picture1 With Form1!cmdOk .Visible = True .Width = 500 .Caption = "确认(&Y)" End With End Sub 重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用Add 方法之前您必须也添加这个控件的许可证关键字。 在运行时添加未引用的控件: 您也可以利 Add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 Toolbox 中的控件)。为此,您必须也把控件的License关键字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字: Option Explicit Private WithEvents extCtl As VBControlExtender Private Sub Form_Load() Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe" Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1") extCtl.Visible = True The control is invisible by default. End Sub 但是,为了编程这样一个未引用控件的事件,您必须使用WithEvents关键字声明一个对象变量为VBControlExtender 对象(如上),并且设置该对象变量到Add 方法返回的引用上。然后,利用VBControlExtender 对象的ObjectEvent事件来编程该控件的事件。下面是一个简单的例子。 Option Explicit Dim WithEvents objExt As VBControlExtender 声明 Extender 变量

VB6.0动态增删控件

Vb6.0动态增删控件的实现 经常在网上和杂志上看到问vb怎样动态增加控件,笔者在编一程序时,曾经用到,下面作一个较为详细的描述,希望能给大家有所帮助。 最简单的方法:控件数组。 在VB编程中有一个控件数组的概念, 通过置控件的INDEX 索引值的控制, 不仅可以建立一组具有紧密联系的相同控件, 而且可以实现在程序运行状态中增加控件数目功能, 这在实际编程中应用的非常广泛;在编程中实现具体增加控件数组如下代码即可,请先在窗体上添加一个option控件,名称为option1,并将index属性设为0. Private Sub Form_ load() Dim i As Integer For i = 1 To 5 Load Option1(i) ' 给数组添加 5 个选项按钮。 Option1(i).Top = Option1(i - 1).Top + 350’设置顶端位置 Option1(i).left= Option1(i - 1).left+800 Option1(i).Visible = True’显示增加的控件 Option1(i).caption = i Next i End Sub Private Sub Option1_Click(Index As Integer) MsgBox ("您点击了index为" & Index & "的option控件.") End Sub (二)通过Add方法实现 Add方法在Controls集合中添加一个控件并返回一个对控件的引用。Add 方法的语法为:

Object.Add(ProgID,Name,Container)

VB动态添加控件的简单方法

V B动态添加控件的简单 方法 SANY GROUP system office room 【SANYUA16H-

V B动态添加控件并对其进行拖放操作改变位置用Controls.Add添加控件 DimWithEventsmypicAsPictureBox PrivateSubCommand1_Click() Setmypic=Controls.Add("VB.PictureBox","mypic") mypic.Left=50 mypic.Top=50 mypic.Visible=True EndSub 至于拖放操作,在程序中设置好mypic控件的有关属性后,处理mypic的有关事件即可 注意: 如果是控件数组的话,建议采用:load控件数组名(索引)的方法添加控件 '可先手工画一个控件,Visable设置为False,Index设置为0 '若需要多个就用loadobject(index)来加载,并把它们的visable设置为true;不需要多个就真接把原有的那个的visable设成显示就行了。 PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(_ ByValhwndAsLong,ByValwMsgAsLong,_ ByValwParamAsLong,lParamAsAny)AsLong PrivateSubCommand1_MouseDown(IndexAsInteger,ButtonAsInteger,_ ShiftAsInteger,XAsSingle,YAsSingle) IfButton=1Then ReleaseCapture'移动控件 SendMessageCommand1(Index).hwnd,&HA1,2,0&

VB6.0动态加载ActiveX控件漫谈

熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程,但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在Set 语句中用New 关键字、CreateObject 或GetObject 从部件外面将对象引用赋予变量。如果对象是从属对象,则需使用高层对象的方法,在Set 语句中指定一个对象引用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True 这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如何实现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说明。 一、ActiveX控件 ActiveX 控件是Visual Basic 工具箱的扩充部分。使用ActiveX 控件的方法与使用其它标准内装的控件,如CheckBox 控件,完全一样。在程序中加入ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ActiveX 部件通过客户端/服务器关系与应用程序—及与部件相互之间—交互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。例如,假设应用程序使用ActiveX 控件来提供一个标准的雇员窗体,供公司的多种应用程序使用。提供雇员窗体的ActiveX 控件就是服务器,使用这个控件的应用程序就是服务器的客户端。 二、加载方法 VB6.0 中对Controls 集合进行了扩展,以前版本中Controls 集合在窗体上列举出已加载的控件,这在迭代过程中是很有用的。Controls 集合标识一个叫做Controls 的内在窗体级变量。如果忽略可选的object 所在处的整数,则关键字Controls 必须包括在内。我们通常在窗口中使用如下代码: Text1.Text="Hello, world" 其实也可以使用如下代码达到同一目的: Controls(1).Text="Hello, world" 在VB6.0中除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0中只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处),增加了Add 方法,该方法就是用于动态加载控件的: Controls.Add(progid as String, Name as String);

在Delphi中动态创建控件并处理添加事件处理

在Delphi中动态创建控件并处理添加事件处理unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls; type TForm1 = class(TForm) procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } btn:TButton; procedure btnClick(Sender:TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnClick(Sender: TObject); begin close; end; procedure TForm1.FormDestroy(Sender: TObject); begin btn.Free; end; procedure TForm1.FormCreate(Sender: TObject);

begin btn:=TButton.Create(Self); btn.Parent:=Self; btn.Height:=30; btn.Width:=75; btn.Visible:=True; btn.top:=Self.Top+50; btn.Left:=Self.Left+50; btn.Caption:='动态控件'; btn.OnClick:=btnClick end; end.

vb6中如何动态添加控件

vb6中如何动态添加控件 vb6中可以动态添加控件,不用控件数组: object.add (progid, name, container) 参数说明: object:必需。一个对象表达式,其值是“应用于”列表中的一个对象。 progid:必需。一个标识控件的字符串。大多数控件的 progid 都可通过查看对象浏览器来决定。控件的 progid 是由控件的库和类组成的。例如,commandbutton 控件的 progid 是https://www.wendangku.net/doc/f013191200.html,mandbutton。在progid 与对象浏览器中所显示的不一样的情况下,visual basic 将显示一个包括正确 progid 的错误信息。 name:必要。一个字符串,用来标识集合的成员。 container:可选。一个对象引用,它指定控件的容器。如果没有指定或为null,缺省值为controls 集合所属的容器。通过指定该参数,可以把一个控件放置在任何现存的容器控件(如frame 控件)中。用户控件或 activex 文档也可以作为一个容器。 举例:(在picture1上面添加一个commandbutton) private sub form_load() form1.controls.add "https://www.wendangku.net/doc/f013191200.html,mandbutton", "cmdok", picture1 with form1!cmdok .visible = true .width = 500 .caption = "确认(&y)" end with end sub 重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 add 方法之前您必须也添加这个控件的许可证关键字。 在运行时添加未引用的控件 您也可以利用 add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 toolbox 中的控件)。为此,您必须也把控件的license 关键字添加到 licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字: option explicit private withevents extctl as vbcontrolextender private sub form_load() licenses.add "prjweeks.weeksctl", "xydsfasfjewfe" set extctl = form1.controls.add("prjweeks.weeksctl", "ctl1") extctl.visible = true ’ the control is invisible by default. end sub 但是,为了编程这样一个未引用控件的事件,您必须使用 withevents 关键字声明一个对象变量为vbcontrolextender 对象(如上),并且设置该对象变量到add 方法返回的引用上。然后,利用vbcontrolextender 对象的 objectevent事件来编程该控件的事件。下面是一个简单的例子: option explicit dim withevents objext as vbcontrolextender ’声明 extender 变量 private sub loadcontrol() licenses.add "project1.control1", "xydsfasfjewfe"

修改对话框为BCG工程、手动添加控件

修改对话框为BCG工程、手动添加控件

一.修改现有的对话框程序为BCG工程。 1.在StdAfx.h文档中添加#include ,包含BCGCBProInc.h头文件。 2.将自己的对话框子类的父类改为CBCGPDialog。可以在***Dlg.h文件中添加一个#define CDialog CBCGPDialog宏,或者直接将CDialog替换为CBCGPDialog。 3.将App类添加一个父类CBCGPWorkspace。class C***App : public CWinApp, public CBCGPWorkspace。 4.在***Dlg.cpp中对话框的构造函数中,添加 // Enable Office 2007 look: CBCGPVisualManager::SetDefaultMa nager (RUNTIME_CLASS (CBCGPVisualManager2007)); // Enable Visual Manager style: EnableVisualManagerStyle(); 这样可以其外观看起来像 VisualManager2007。 5.在***.cpp的InitInstance函数结束之前添加BCGCBProCleanUp ();

6.设置包含目录和库目录分别包含所需的BCG 头文件和库。 二.手动添加编辑框控件。 1.在对话框类中添加成员变量CEdit m_edit; // Embedded edit object 2.在对话框类的OnInitDialog()函数中添加创建编辑框的代码(也可以设置其焦点): m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL | WS_BORDER, rect, this, ID_EXTRA_EDIT); m_edit.SetFocus(); return FALSE; 3.在resource.h中添加ID_EXTRA_EDIT资源号。#define ID_EXTRA_EDIT 1001 三.多文档App类的InitInstance函数中的SetRegistryKey和SetRegistryBase的使用。SetRegistryKey这个函数将应用程序的设置保存在注册表而不是INI文件中。这个函数设置m_pszRegistry Key,它被CWinApp的成员函数GetProfileInt,GetProfileString,

easyUI动态添加控件带渲染效果

jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法 2011-03-22 12:53 现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如: class="easyui-layout" 等 处理方法: 在html片段加载完毕后使用 Js代码 1.$.parser.parse(context) 即可重新渲染。 实现原理: 首先附上jquery.parser.js的源码 Js代码 1.(function($){ 2. $.parser = { 3. auto: true, 4. plugins:['linkbutton','menu','menubutton','splitbutton','layout', 5. 'tree','window','dialog','datagrid', 6. 'combobox','combotree','numberbox','validatebox', 7. 'calendar','datebox','panel','tabs','accordion' 8. ], 9. parse: function(context){ 10. if ($.parser.auto){ 11. for(var i=0; i<$.parser.plugins.length; i++){ 12. (function(){

13. var name = $.parser.plugins[i]; 14. var r = $('.easyui-' + name, context); 15. if (r.length){ 16. if (r[name]){ 17. r[name](); 18. } else if (window.easyloader){ 19. easyloader.load(name, function(){ 20. r[name](); 21. }) 22. } 23. } 24. })(); 25. } 26. } 27. } 28. }; 29. $(function(){ 30. $.parser.parse(); 31. }); 32.})(jQuery); 框架默认在页面加载完成后自动使用$.parser.parse()对整个文档进行渲染 Js代码 1.$.parser.auto //是否自动进行渲染 2.$.parser.plugins //包含目前EasyUI框架中所有的插件名称 3.$.parser.parse(context) 4.//context 为待查找的 DOM 元素集、文档或 jQuery 对象,为空时默认为整个文 档 5.//渲染对象为: class="easyui-pluginName"的元素

在易语言中动态创建控件及响应事件

在易语言中动态创建控件及响应事件 〖例程说明〗在程序运行时动态创建控件?的确有用,但在易语言中是怎样做的?不太复杂,不外是两步:根据同类原型控件样本复制一个新的同类控件;响应动态生成控件的事件。而动态复制控件样本又分三步:用“复制窗口组件”命令复制一个新的同类控件样本;安排好新创建控件的位置,并设置该控件可视为真;给新控件加上标记以便让程序识别是哪个新创建的控件。 其中需要注意两个前提事项:先要在编辑程序时,绘制一个提供在运行中复制的同类控件(本例叫“原型框”);用控件数组定义各个新控件以方便管理。 本例程示范最简单地创建控件并响应事件。示范在窗口中创建一个横排的编辑框列,每点一下按钮就在排中添加一个新的编辑框。当双击某个新编辑框时可以识别响应的是哪个新编辑框的“编辑框被双击”事件,从而决定由哪个新编辑框回应双击事件。 〖例程说明〗如下: 窗口程序集:窗口程序集1 程序集变量:新框数据类型:编辑框数组:0 备注:新的编辑框 程序集变量:框号数据类型:整数型 ══════════════════════════════ 子程序:_按钮1_被单击 框号=框号+1 重定义数组(新框, 真, 框号) 复制窗口组件(原型框, 新框[框号]) 新框[框号].移动(原型框.左边+原型框.宽度×框号, 原型框.顶边, 原型框.宽度, 原型框.高度) 新框[框号].内容=“按钮”+到文本(框号) 新框[框号].可视=真 新框[框号].标记=到文本(框号) ══════════════════════════════ 子程序:_原型框_被双击 返回值类型:逻辑型

参数:横向位置数据类型:整数型 参数:纵向位置数据类型:整数型 参数:功能键状态数据类型:整数型 局部变量:框编号数据类型:整数型 局部变量:事件框数据类型:编辑框 局部变量:框编号1 数据类型:整数型 事件框=取事件组件() 框编号=到数值(事件框.标记) 信息框(“这是第”+到文本(框编号) +“个新编辑框”, 0, ) 〖总结引申〗怎样才能使新创建的控件响应事件呢?其中关键是给复制好的新控件加上唯一的标记文本,然后在发生事件后用“取事件组件”命令获取事件发生的控件,并回应该事件。 还有另外一种方法也可以响应动态创建控件的事件,就是将动态控件的事件交由一个同类控件来响应并处理,要用“事件转移”命令转移事件控制权。示例将事件控件权交给原型编辑框,代码如下: 窗口程序集:窗口程序集1 程序集变量:新框数据类型:编辑框数组:0 备注:新的编辑框 程序集变量:框号数据类型:整数型 ══════════════════════════════ 子程序:_按钮1_被单击 框号=框号+1 重定义数组(新框, 真, 框号) 复制窗口组件(原型框, 新框[框号]) 事件转移(新框[框号], 原型框) 新框[框号].移动(原型框.左边+原型框.宽度×框号, 原型框.顶边, 原型框.宽度, 原型框.高度) 新框[框号].内容=“按钮”+到文本(框号) 新框[框号].可视=真 新框[框号].标记=到文本(框号)

相关文档
相关文档 最新文档