语言为基础,同过将常用的功能封装为组件放在VCL(可视化组件库)中,极大地提高了程序开发的效率。...Delphi中定义的类一般均以大写字母”T”开头,如窗体TForm 2.组件(Component):Delphi常规应用程序开发的基础,类似于积木的作用。实际上是一个完成一定功能的类。...主要包含8个部分:菜单栏、工具栏、组件面板、窗体设计器、代码编辑器、对象查看器、对象树形查看器、代码浏览器 2.2菜单栏(Main Menu) 菜单栏提供了Delphi6集成开发环境的所有功能。...【Print】:打印当前文件或者窗体 13:【Exit】:退出整个Delphi6集成开发环境 一个新的应用程序从【New】/【Application】开始,通过【Open Object】菜单可以打开一个已经存在的项目...【Units】:用于打开项目中所用到的单元文件 【Forms】:用于打开项目中所用到的窗体 【Toolbars】:调整主窗口下的工具栏 5.
[+] 窗体和应用程序类表示Form和Application对象,这些类是从TComponent派生而来,它们实际也是组件,单独地把它列举出来,以示与拖到窗体上的控件加以区别。...TImage组件能够在窗体放置图像,可以从磁盘上选择这个图像文件。 TBevel提供了一个更美观的窗体。 TStringGrid和TDrawGrid类提供了一种表示网格信息的方法。...3、数据库组件类 VCL还有一组主数据库组件,不但包括可视化组件,也包括非可视化组件,非可视化数据库组件包括TDateSource,TDatabase,TTable和TQuery。...所有显示文本的组件类都有TFont类。 除了这里列出的GDI类以外,还有一些其他类,在以后的Delphi学习过程中,我们将会学习到更多有关这方面的类,并掌握使用它们。...更多这些类的详细信息请大家自己看看Delphi VCL Help。 这不是全部 讨论到这里并没有讨论到所有的VCL类,但这里所涉及到的类在应用程序中用到的可能性很大。
接下来重要的方法是CreateForm:创建窗体.这个方法在使用dll内的窗体时更重要,因为只有它才能主动的修复dll入口,不然的话程序容易内存泄漏....,这时就需要用ProcessMessages,不然程序将变得非常消息慢(换言之,消息就是线程的组成部分 ) 在使用数据模块时 ,如果连接的数据库是access,则必须加入forms,activex单元...(技巧:有些时候你可能会在窗体上放满控件,这样就选不中窗体了,这个时候可以点任何一个控件,然后不断的按ESC,这样它就会按父类的顺序一级一级向上跳转,最后会跳到窗体上 。)...编写dll的方法和编写exe的方法完全一样。 控件类: 第一个重要的是actionlist。...也就是说end.后面写的代码,编译器不会检查,但是要注意一点,那些代码也会被编译到程序内。
IDE中的原生VCL图表工具。...如果您正在构建仪表板,您可以在每个仪表板面板上放置多个可调整大小的图表。FireMonkey框架将处理不同平台的大部分变化。...图片03、各个行业的报表VCL组件提供了大量图表,以最有效和可管理的方式显示您的数据。超过60种具有2D和3D视图的图表类型 - 从常见的条形图、折线图、面积图到财务和统计图表。...图片三、TeeGrid VCL简介Delphi VCL & FMX 的网格组件为您的 RAD Studio 项目提供了一个非常快速的网格。...01、图表全面收集超过60种图表类型 - 从常见的条形图、折线图、饼图到带有地图和仪表、2D、3D视图、响应式、交互式和完全可定制的财务和统计图表。图片02、网格轻量级且功能齐全的数据网格。
CKme Delphi,是Windows平台下Object Pascal语言集成开发环境,支持应用程序快速开发。...第三步 用DeDe反编译看一下 Events(事件) Controls(控件) 上图中我们发现了5个事件,第一个窗体创建与输入的字符应该无关,而后面的键盘按键放下、面板单击和面板双击、还有检查密码,应该就和用户名.../注册码的获取和检测有关了,还可以看到“注册成功”的代码段就是面板单击事件中。...第五步 看一下chkcode事件的代码,从chkcode事件的代码中可以看到,如果输入的序列号正确,则往地址 [esi+0x30c] 中写入 0x3E 。...的值是否为0x85是的话顺序执行到注册成功处,否则跳过注册成功。
image.png 使用Com组件 新建一个窗体或者用户控件,将刚才添加的Adobe PDF Reader 组件拖入到窗体中就可以像winform控件一样操作该控件了。...3、COM技术 Microsoft组件对象模型(COM)定义了一个二进制互操作性标准,用于创建在运行时进行交互的可重用软件库。您可以使用COM库,而无需将其编译到应用程序中。...唯一标识组件及其接口的机制。 组件加载器,可从部署中创建组件实例。 COM具有多个部分,这些部分可以一起工作以创建由可重用组件构建的应用程序: 一个主机系统提供了一个运行时环境符合的COM规范。...我们知道dll的接口是为了C设计的,它导出的基本都是C的函数,从原理上来说,将dll加载到内存之后,会告诉你一组函数的地址,你自己call进去就可以调用相应的函数。...ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
Python For Delphi搭建了Delphi和强大的脚本语言Python的桥梁,使用起来非常方便,让Delphi华丽的界面配合Python强大、简洁、稳定的后台逻辑处理能力,让应用程序模块清晰、...版本 Python For Delphi支持的Python版本为2.3,而最新最稳定的Python是2.4,使用时会提示找不到python23.dll的错误。...Python的库路径,设置成功后会写入注册表。...3、 安装python24.dll到系统目录,如c:/winnt/system32。...4、 在自己写的Delphi程序中,用TPythonEngine的OnPathInitialization事件设置Lib和DLLs的路径,并且将自己编写的模块所在的目录也加到路径中。
(当我们点击exe之后,程序运行,系统会创建一个与与程序同名的进程) 既然我们要防止程序运行多次,也就是说程序只能运行一次,从操作系统的角度来讲就是该程序的进程只能是唯一的,分析到这里我们自然就想到了,...如果熟悉.NET类库的人肯定知道.NET类库中有一个Process类,该类的意思就是一个进程的抽象。(有些人就会说,我一开始不知道有这个类那怎么办呢?...从上面的分析过程中可以看出,我们解决这个问题的思路就是从进程入手,第三点的思路就是直接从进程数量入手,而第四点思路也是从进程入手,只是做了一个变换罢了,让一个变量来唯一标识一个进程,当变量存在时说明该程序进程也运行了...——只能是最小化的窗体显示出来,如果隐藏到托盘中则不能把运行的程序显示出来 using System; using System.Diagnostics; using System.Runtime.InteropServices...// 方法四相对于方法三而言应该可以说是一个改进, // 因为方法三只能是最小化的窗体显示出来,如果隐藏到托盘中则不能把运行的程序显示出来
实战: 创建一个VB.NET Windows应用程序:VBTestDynamicComponent。将前面介绍的两个类ComponentList和LoadComponent加入到工程中。...我们在程序启动时从配置文件中读入相关的程序集信息和类名信息,为此在主窗体的Form_Load过程中添加以下代码: 01 Private objLoadComponent As LoadComponent...DLL文件名和类名,第11、12句获取第一个DLL文件名和类名,然后在第14句装入组件库,第15句装入对象,因为返回的对象其实是一个窗体,所以,在第16句可以直接调用Show()方法显示此窗体。...从代码中可以看见,在.NET中动态创建对象是多么地方便和简单!请注意:在工程中我们甚至不需要给工程添加对特定组件的引用!本例中动态创建的对象是窗体,而Form对象是缺省就可使用的。...想想如果在我们的示例中创建的两个窗体是另两个复杂的程序的主窗体,这不就意味着我们的程序可以非常方便地集成它们吗?实现起来太简单了,不就是在配置文件中增加一两行代码吗?
简介 因为某个项目的POS机用了SP-POS802的打印机,针对这个打印机要开发一个调用打印机的动态库。收到了厂家发来的打印机指令和动态库的开发要求。...做了这个,好久没用Delphi开发东西了,正好借次再熟悉一下。 动态库的文档 动态库的文件 ?...需要加入的接口 初始化打印机 打印字符串 全部切纸 部分切纸 走纸 开钱箱 关闭打印机 打开关闭黑标功能 开发 用delphi7新建一个Library起名为OtherPrinter ?...新建一个窗体文件Comform,在窗体中增加一个TComPort控件,不用写任何代码。 ? 然后我们现新建一个单元文件OthPrint,这个单元文件处理写所有入口函数。 ?...---- 这样写完了,我们通过Ctrl+F9进行编译,生成的DLL文件就可以看到了 ? ---- -END-
在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。 当我们执行某一个程序时,相应的DLL文件就会被调用。...使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。...所以,应用程序可以在需要时才将DLL载入到内存中,这让程序的可维护性变得很高。...比如我们在修改应用程序的某一块功能时,可以只针对这块功能对应的DLL文件中的内容,而不必全局修改代码 便于不同领域的程序员之间合作 目前可以用的编程工具有很多,比如VB、VC、Delphi等,如果好几个人合作来编写一个大的程序...节省内存 如果多个应用程序调用的是同一个动态链接库,那么这个DLL文件不会被重复多次装入内存中,而是由这些应用程序共享同一个已载入内存的DLL。
单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库...应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。...主窗体的代码这就完成了 ---- 插件编写 我们在解决方法里面再新建三个类库,为别叫Plugin1,Plugin2,Plugin3 ? Plugin1 ?...插件里面的Text 和Do()就是实现接口的对应方法,我们在plugin1里面定义为插件1, DO的方法实现弹出窗体显示插件1中文 Plugin2 ?...Button的事件就是弹出窗体显示我是插件3 ---- 这样代码就完后实现了,编译完成后我们把三个插件的DLL放到运行目录下的plugin下面 ---- ?
进程间通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件和注册表等来间接实现进程间数据通讯任务...以上这几种方法各有优缺点,具体到在进程间进行大数据量数据的快速交换问题上,则可以排除使用配置文件和注册表的方法;另外,由于管道和socket套接字的使用需要有网卡的支持,因此也可以不予考虑。...三、发送消息实现进程间通讯具体步骤 1.新建windows应用程序 (1)打开VS2008,新建一个“windows 应用程序”,主窗口为Form1,项目名称:ProcessCommunication...(1)打开VS2008,新建一个“windows 应用程序”,主窗口为Form1,项目名称:ProcessCommunication1, 并在Form1上添加一个按钮和一个文本框 using System...启动ProcessCommunication1.exe可执行文件,在弹出的窗体中的文本框中输入任意数字,点击button1按钮,接受消息窗体textBox1即显示该数字。 到此结束。 ?
常用的处理窗体的API函数如下(注意:API函数必须放在窗体中...): 使用C#语言,要引用DllImport,必须要添加using System.Runtime.InteropServices命名空间...(2)枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数,利用该法可以获得所有当前打开的窗体的句柄信息 [DllImport("user32.dll")]public static extern...(即EnumWindows中lParam) 下面用一个例子对该方法说明 程序中要实现一个功能:可以在当前打开的窗体中找到目标窗体,并在需要时将其激活,置为前台窗体 using System;using...根据窗口标题查找的一般多用在多窗口的应用程序中,因为程序中的窗体标题固定,方便搜索。但要是对于系统中的一些窗体,例如记事本窗体,PPT等,窗体的标题是不定的,所以用窗口类搜索更方便。...查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。
C# WinForm项目中自带的窗体风格很普通,一点都不美观。DotNetBar就是一套.NET美化控件库,有70几个控件以及多种界面的皮肤风格。...DevComponents.DotNetBar.Design.dll 控件在设计时可见所必要的程序集 DevComponents.DotNetBar2.dll 控件所在的程序集 2.建立一个窗体类FrmTest...,并在FrmTest的代码文件中添加using DevComponents.DotNetBar;引用,并把窗体的基类Form更改成Office2007Form,如下所示: using DevComponents.DotNetBar...public FrmTest() { InitializeComponent(); } } } 3.打开FrmTest窗体的设计面板就可以发现窗体的风格已经变成了...4.到目前为止,我们已经能够更改窗体的风格了,但是现在还不能为整个项目变换风格,我们需要使用一个StyleManager来控制整个项目的风格,拖一个StyleManager控件到窗体上,这样就把窗体和风格管理控件进行关联
学习目标: C#数据库应用程序的开发环境的构成 服务器资源管理器 类型化数据集 创建简单的数据库应用程序 水晶报表 Notes: 类型化数据集 利用服务器资源管理器建立数据连接 利用服务器资源管理器可执行的任务如下...4)生成到SQL Server和其他数据库的数据连接。 5)存储数据库项目和引用。...”按钮后即进入数据集窗口,从服务器资源管理器中选择一个数据连接,然后将该数据连接中的表拖曳到数据集设计界面,经过编译就建立了一个类型化数据集。...) 数据库应用程序的结构与设计步骤 数据库应用程序结构 数据库应用程序由数据访问窗体控件、数据源控件和ADO.NET数据访问对象组成。...3.ADO.NET对象 数据库应用程序的设计步骤 1.创建解决方案的项目 2.添加Windows窗体 3.设计用户界面 4.创建事件处理程序和编译、调试、运行程序 数据源控件与数据访问窗体控件
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的应用程序的模块化 前言 我们都知道,为了构成一个低耦合,高内聚的应用程序,我们会分层,拿一个WPF程序来说,我们通过MVVM模式去将一个应用程序的分成...IContainerRegistry containerRegistry) { } } 1.代码注册 然后我们在PrismMetroSample.Shell主窗体的项目分别引用...\Modules" }; } 3.使用配置文件App.config注册 3.1注册模块 我们在主窗体项目PrismMetroSample.Shell添加一个App.config文件: App.config...MedicineModule的代码实现,首先我们已经在App.cs中将MedicineModule设置为"按需"加载,然后我们在主窗体通过一个按钮去加载MedicineModule,代码如下: MainWindowViewModle.cs...演示,点击病人列表,出来的病人详细页是没有数据的,这涉及到窗体之间的通讯,病人列表和病人详细页属于同一模块,这很好办,如何我要将搜索到的药物加到当前病人详细页的药物列表里面,这就涉及到不同模块窗体之间的通讯
这里我采用另外一种方案,不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD,而秘诀就是对表单控件进行扩展。... 在我们这个小例子中,表单窗体(Form2)的数据变化后(新增、修改),可以立即反应到主窗体(Form1)上,而不用主窗体去重新加载数据,这里就必须用到数据绑定集合: private BindingList... UserBindingList = new BindingList(); //填充集合的代码,就是将数据从数据库查询出来,然后放到该集合中,代码略 this.dataGridView1...增加数据,在新窗体中录入数据 ? 单击按钮保存数据,主窗体列表中自动增加一行数据 ? 新窗口先不关闭,修改下消费金额,确定,发现主窗口列表的数据被同步修改了。...整个过程没有从数据库去重新刷新数据到主窗口网格控件的,实现了多个窗体之见的数据同步。
包含了常用窗体和常用控件,以及工业工具,类Web控件,使用该控件库可以快速的搭建一个漂亮的应用程序。 漂亮:控件UI以漂亮的Web控件为范本,让你做出来的应用更有WEB感觉,更加扁平化,更加漂亮。...下载 进入官网 http://www.hzhcontrols.com/,下载控件库源码 导入项目 新建一个自己的要开发窗体应用程序winform项目 HZHCnntrolTest ?...项目引用 现在是HZH_Controls控件库导入到自己项目的解决方案中了,现在要应用到项目中,这样当需要更改控件库中的代码时,不需要每次都对控件库项目点击生成,如何引用呢,可以通过 右键自己的项目下的引用...项目生成 当项目开发完毕,为防止项目生成包过大,可以将控件库生成之后,从自己项目引入生成控件库的dll,之后将控件库解决方案从自己项目移除即可,步骤如下 右键自己项目-->添加引用-->浏览 ?...前提可以将自己项目中之前引用中的解决方案先删除,然后再引用dll文件 还可以直接从nuget上引用,这样更方便: 如图,选择【Browse】,输入【HZHControls】,点击右侧的【install】
领取专属 10元无门槛券
手把手带您无忧上云