最近公司的事比较忙,大约有一周时间没来园子里面逛了, 很无奈。
现在才明白干的比牛累,吃的比鸡少,睡的比猪差,还要天天遭受不断的折磨的滋味。
前段时间,高铁的事吵的沸沸扬扬, 感到活着就是累,
很多事情真的没什么意义, 信不信由你,反正我是信了..........
今天恰好是传统的七夕节, 我不知道为什么要被冠上“情人节”这个名号,我不明白为什么这些人要把中国的节日非得
和西方的节日扯上关系, 感觉就像柴可夫斯基抽着大旱烟,一边叫卖冰糖葫芦,一边谈着肖邦的夜曲,不伦不类。突然发现
我们活在一个舆论导向的诱导性消费社会里面,我们的消费全部是靠舆论导向在消费,就像前些年那个什么今年过节不收礼
的东西; 走在大街上,看到的是各种商铺,铺天盖地的宣传什么情侣、什么....... 感觉男人真的累啊,一个月普通的收入者
3000左右,我一同事房贷27年,目前每个月交完房租和房贷还剩下几百元,目前物价飞涨,一个月怎么说吃饭也得三、四百;
然后什么水费、电费,乱七八糟的消费加起来,目前又回到了啃老一族。
想了想,发现都是现在的诱导性消费导致的, 你可以想想你买的有几样东西不受现在的诱导性消费信息的影响,这写诱导性
消息如果全部正面积极的话,那也就算了,可怕的是很多都是一些功利性非常强的导向向消费消息, 哎,不说了,连郭美美都能
红, 还有什么不可以的?
信不信由你,反正我是信了...........................
我也不知道说这么废话干什么,不说了, 下面说说今天的正题:
program Project1; uses Forms, Unit1 in 'Unit1.pas' {MainFrm}; {$R *.res} begin Application.Initialize; {D版程序都有一个全局变量Application,类型是TApplication // TApplication封装了一些属性和方法, 使应用程序能够正确地 // 在win环境下运行 //封装的方法包括: 窗口类定义 // 创建应用程序主窗口 // 激活应用程序 // 处理消息 // 添加上下文敏感帮助 // 处理VCL异常 // 仅有窗口应用程序才有application全局对象,console程序没有 不能在对象浏览器浏览application对象, 即不能在设计时改变application对象属性 可以在运行时改变application对象的属性(同样可以在project/options里面改变 application对象的属性) 1、TApplication类的属性 1) TApplication.ExeName属性 能够返回应用程序的全路径和文件名, 是只读属性,不可修改 例如可以 application.mainform.caption:=application.exename 可以使主窗体显示应用程序 的执行路径和可执行文件的文件名 可以使用: ExtractFileName 从application.exename中得到文件名 ExtractFilePath 从application.exename中得到路径名 ExtractFileExt 从application.exename中得到文件扩展名 2)Tapplication.mainform属性 可以通过mainform访问TForm的属性和方法,也可以访问到派生窗体的属性,只要 把mainform强制转换为派生窗体类型即可 Exp: (mainform as Tform1).songtitle:='The Flood' ; mainform是一个只读的属性,只能在project/option里面进行设置 3)TApplication.Handle属性 应用程序的句柄属性 4)TApplication.Icon和TApplication.Title属性 Icon属性用于设置应用程序最小化时代表程序的图标,可以修改Icon属性来改变应用程序的图标 Tile属性是应用程序在任务栏中显示在图标一侧的文字 5) Active属性 active属性是一个只读属性,表示应用程序是否激活和具有输入焦点 这个属性怎么用呢? 可以利用定时器来检测 6)componentcount属性 表明应用程序所包含的组件数, components属性是一个数组,其元素就是属于application的组件,components数组 元素的个数就是TApplication.ComponentCount属性的大小 7)HelpFile属性 指定帮助文件的文件名,需要向TApplication的HelpContext方法及 其他类似方法传递帮助文件文件名 8)Owner属性 这个属性总是nil;因为TApplication不可能被另外的组件拥有 9)showhint属性 这个属性决定是否显示hint信息,如果application.showhint:=false; 则应用程序不会显示任何hint信息 10)Terminate属性 如果应用程序关闭或调用TApplication.Terminate()方法则Terminate属性为Ture } { TApplication的方法 1) CreateForm方法 procedure CreateForm(InstanceClass:TcomponentClass; var Reference); InstanceClass 指定窗体的类 Reference 返回窗体的实例 2) HandleException 用于显示项目中出现的异常相关信息,可以相应Application.OnException事件 来用自己的方式来处理异常 3)HelpCommand方法、HelpContext方法、HelpJump方法 提供了一套与WinHelp.exe交互的方法, HelpCommand用于执行一条WinHelp宏命令和帮助文件中定义的宏 HelpContext用于打开一个帮助主题,主题编号由Context参数传递 HelpJump类似于HelpContext, 其的JumpID参数需要传递一个字符串 4)TApplication.ProcessMessages方法 用于从Windows消息队列中检索任何等待处理的消息并进行处理。 而HandleMessages方法如果没有发现有消息,则使应用程序处于空闲状态 而ProcessMessages则不会使应用程序处于空闲状态。 5)TApplication.Run方法 不需要自己调用这个方法,D会自动添加到项目文件主代码中。 Run方法首先建立一个退出过程,以保证应用程序退出时所有组件都被释放 然后建立一个消息循环来处理消息,知道应用程序终止。 6)其他方法 TApplication.Create方法, 用于创建一个应用程序实例,由D内部调用,应用程序 一般不调用TApplication.Create 方法 TApplication.Destroy 用于删除Tapplication的一个实例,由D内部调用 Tapplication.MessageBox 用于打开一个Windows对话框, 不需要传递窗口句柄 Tapplication.Minimize 用于把应用程序主窗口最小化 Tapplication.Restore 用于把应用程序的主窗口Restore TApplication.Terminate 方法用于终止应用程序的运行,与Halt不同的是,Terminate方法 会调用PostQuitMessage函数看是否还有消息要处理。 } { Tapplication 的事件 OnActive事件 OnException事件 OnHelp事件 OnMessage事件 OnHint事件 OnIdle事件 应用程序空闲时触发这个事件 } Application.CreateForm(TMainFrm, MainFrm); application.Title:='测试'; //Application.CreateForm(TMainFrm2, MainFrm2); Application.Run; end.
我发现Delphi如果按照这个思路来看的话, 应该是在里面封装了WinAPI后形成的一个编程工具体系,我想
如果不用Delphi的RAD特性,估计也能用C一样的纯代码实现Win应用。尤其是从TApplication.CreateForm方法的
使用来看,这个应该和CreateWindow函数具有异曲同工之妙,估计里面就是封装了这个函数而成的。
同时我感觉Delphi操作Windows内核对象的能力和VC里面利用WinAPI操作内核对象一样方便,慢慢以后再讨论
内核对象吧。
有点累了,
这里在这个七夕节,愿有情人..............