社区
Delphi
帖子详情
在delphi中是不是不能在一个form中关掉另一个form?
zxjng
2000-03-02 04:19:00
...全文
267
12
打赏
收藏
在delphi中是不是不能在一个form中关掉另一个form?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sdy_jin
2000-04-21
打赏
举报
回复
完全可以这样实现的。
form.close;
form.free;
旧可以了。
MikeZyx
2000-04-01
打赏
举报
回复
Sayhello说的对,这个问题与具体情况有关,不好回答。
sayhello
2000-04-01
打赏
举报
回复
不一定呀, 如果是form1.showmodal;或者form1 从form2中引用的 form1 是 不能 form2.close 的!
csdn2000
2000-04-01
打赏
举报
回复
在delphi甚至能将机器给关了,haha。
holoboy
2000-03-11
打赏
举报
回复
当然可以,如果是mdi窗体,则用sundaynews和steave的方法,如果不是,若使用的是无模式窗体,也就是用继承方式创建:createparams()的form,tchildform.create(application),则在关闭时,还需注意关闭childform的指针。
zltt
2000-03-11
打赏
举报
回复
zoao说得很全面!但在MDI APP中,MDI窗口关闭时其MDICHILD自动关闭,但不会触发MDICHILD的ONCLOSE EVENT,所以要在ONCLOSE作保存,必须由MDI窗口作处理
zoao
2000-03-11
打赏
举报
回复
uses 对方,然后form2.close.
如果是mdichild则 设置Formclose事件中的 Action:=Cafree;
steave
2000-03-04
打赏
举报
回复
sundaynews说的对!
sundaynews
2000-03-03
打赏
举报
回复
怎么不行?连关掉另一个程序都行。但关MDI的子FORM需要在FORMONCLOSE中设置ACTIVE值。
光明山人
2000-03-02
打赏
举报
回复
肯定是可以的,但可能Form的实例变量值错了。
另外,你的这个问题应当是另外一个问题(“有关关闭form的问题,刚才没有说清楚”)的延续,这样你会用掉很多分的。
jwchc
2000-03-02
打赏
举报
回复
说说你的出现的情况!
dragoncircle
2000-03-02
打赏
举报
回复
当然可以,只要使用form.close就行。
Delphi
中
制作DLL
中
回调函数的应用
Delphi
中
制作DLL •一 Dll的制作一般分为以下几步: 1 在
一个
DLL工程里写
一个
过程或函数 2 写
一个
Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二参数传递 1 参数类型最好与window C++的参数类型一致。不要用
DELPHI
的数据类型。 2 最好有返回值[即使是
一个
过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的
一个
Pointer]是DLL的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是
一个
回调函数]。如下: procedure DllEnterPoint(dwReason: DWORD);far;stdcall; dwReason参数有四种类型: DLL_PROCESS_ATTACH:进程进入时 DLL_PROCESS_DETACH进程退出时 DLL_THREAD_ATTACH 线程进入时 DLL_THREAD_DETACH 线程退出时 在初始化部分写: DLLProc := @DLLEnterPoint; DllEnterPoint(DLL_PROCESS_ATTACH); 2 如
Form
上有TdcomConnection组件,就Uses Activex,在初始化时写一句CoInitialize (nil); 3 在退出时一定保证DcomConnection.Connected := False,并且数据集已关闭。否则报地址错。 四全局变量的使用 在widnows 32位程序
中
,两个应用程序的地址空间是相互没有联系的。虽然DLL在内存
中
是一份, 但变量是在各进程的地址空间
中
,因此你
不能
借助dll的全局变量来达到两个应用程序间的数据 传递,除非你用内存映像文件。 五、其他:调用方式按照标准的Windows调用方式. 六、关于参数传递 •
Delphi
程序之间调用DLL,如果要用String类型的话,要在引用的单元加上ShareMem 单元。 •如果
Delphi
写的DLL供其他开发工具使用的话,不要使用String类型,用PAnsiChar类型。 尽量使用标准DLL接口。指的是传递的参数类型及函数返回类型
不能
是
Delphi
特有的, 比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不 能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。如果使用了string类型或 动态数组类型,且调用方不是
Delphi
程序,则基本上会报错。如果调用方是
Delphi
但调用方或 被调用方没有在工程文件的第一包含单元不是ShareMem,也可能会出错。 七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响应函数,一般来说我们不会自己调用这种函数, 而是有某些系统函数调用,而且不需要向后传递消息。 只要象C/C++这样支持函数指针的语言都 有回调函数的概念,它实际上是向被调用函数传
一个
你的函数地址,然后被调用函数向通过你传 入的函数地址来调用你的函数 。 以上是结构化回调,到高级语言Object Pascal、C++
中
回调函数并没有退出,反而得到延伸与 扩展,在面向对像
中
的回调,其实是指面向对像
中
类对像的事件,事件就是原始的回调函数。面 向对像, 将回调函数定义成事件过程,在程序引用对像时,若指定了对像的过程事件后,那么在 要进行事件触发的地方检查事件过程是否分配,如果分
中
的就执行事,也就是执行了回调函数。
Delphi
界面美化
制作固定大小的
Form
固定的
Form
像
一个
对话框,何不试试下面的语句 巧用
Delphi
制作溅射屏幕 精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。利用一点儿小小的内容,即可给程序的显示添加不少色彩 LED数码管仿真显示程序 在电子设备上广泛地使用LED数码管显示数据,在许多应用软件
中
也经常模拟LED数码管显示数据,使程序画面看起来很有特色 菜单设计
DELPHI
中
自适应表单的实现 我们知道,屏幕分辨率的设置影响着表单布局,假设你的机器上屏幕分辨率是800*600,而最终要分发应用的机器分辨率为640*480,或1024*768,这样你原先设计的表单在新机器上势必会走样 作非常规程序菜单掌握
delphi
高级秘籍 大家可能见过诸如金山毒霸,瑞星杀毒,以及五笔输入法等等在系统托盘(即右下角有时间和输入法图标的地方)在的控制菜单,而在正常的任务栏(即屏幕最下方的“开始”按钮的右边的各式各样)
中
却不出现按钮的程序,即我们常说的在后台运行的程序 用
Delphi
制作动态菜单 所谓动态菜单是指菜单项随着程序的操作变化而变化。现在,我们用
Delphi
来实现这一功能,具体步骤如下 工具栏和状态条 为Windows窗口标题栏添加新按钮 对于我们熟悉的标准windows窗口来讲,标题栏上一般包含有3个按钮,即最大化按钮,最小化按钮和关闭按钮。你想不想在Windows的窗口标题栏上添加
一个
新的自定义按钮 用
Delphi
4实现风Word97格的工具栏 用过Word97的人对它的工具栏印象很深刻,因为它的风格很“酷”,同样IE4.0的工具栏也有类似的风格,Win98的出现,使这种风格的工具栏得到了推广 如何隐藏和显示Windows的任务条 如果隐藏和显示Windows的任务条?仅仅调用以下的函数就可以. 其他技巧
Delphi
利用Windows GDI实现文字倾斜 在
Delphi
开发环境
中
,文字的输出效果一般都是头上脚下的"正统"字符,如何输出带有一定倾斜角度的文字以达到特殊的显示效果呢
Delphi
之三十六计之界面篇 设置状态栏面板对象的Style为OwnerDraw,并在状态栏对象的DrawPanel事件
中
书写以下代码 利用COM技术实现外壳扩展的属性页 当用户在资源管理器
中
调用右键菜单时,会显示
一个
"属性"菜单项,点击属性菜单项会显示
一个
属性页,用户可以获得甚至修改文件信息
DELPHI
专题--API应用
DELPHI
专题--API应用 在
DELPHI
2.0、3.0下读取系统时钟
DELPHI
中
的消息处理机制 通过调用API确定MEMO控件
中
的当前行和列 充分利用WindowsAPI扩展
Delphi
函数 如何把文件删除到回收站
中
在
DELPHI
中
调用API函数 使用
Delphi
获取系统信息 生成非矩形窗口 程序不出现在任务栏 关闭Windows 隐藏桌面上的图标 模拟按下某键 动态修改显示器分辨率 限制
FORM
的大小 控制窗体 快速将某一区域的颜色取反 得到WINDOWS的SYSTEM路径
Delphi
下编程实现
中
文输入法 闪动标题栏 应用程序敏感键的实现 在
Delphi
中
使用动态图标
delphi
经典编程入门
Delphi
是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用
Delphi
开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——
Delphi
的每
一个
设计细节,都将带给您一份欣喜。 1.1
Delphi
基本概念介绍 1.1.1
Delphi
的基本形式
Delphi
实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。
一个
Delphi
程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”
中
加入您的程序。缺省的应用程序是
一个
空白的窗体(
Form
),您可以运行它,结果得到
一个
空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。
Delphi
已经为您做好了一切基础工作——程序框架就是
一个
已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序
中
加入完成您所需功能的代码而已。 在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。
Delphi
把Windows编程的回调、句柄处理等繁复过程都放在
一个
不可见的Romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。 1.1.2 面向对象编程的概念 面向对象的程序设计(Object-Oriented Programming,简记为OOP)是
Delphi
诞生的基础。OOP立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序
中
加入扩展语句,把函数“封装”进Windows编程所必需的“对象”
中
。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而
Delphi
是完全面向对象的,这就使得
Delphi
成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。 一些早期的具有OOP性能的程序语言如C++,Pascal,Smalltalk等,虽然具有面向对象的特征,但
不能
轻松地画出可视化对象,与用户交互能力较差,程序员仍然要编写大量的代码。
Delphi
的推出,填补了这项空白。您不必自己建立对象,只要在提供的程序框架
中
加入完成功能的代码,其余的都交给
Delphi
去做。欲生成漂亮的界面和结构良好的程序丝毫不必绞尽脑汁,
Delphi
将帮助您轻松地完成。它允许在
一个
具有真正OOP扩展的可视化编程环境
中
,使用它的Object Pascal语言。这种革命性的组合,使得可视化编程与面向对象的开发框架紧密地结合起来。 1.2
Delphi
快速入门 在这一节
中
,我们来开发
一个
小程序。随着开发的过程,逐步介绍
Delphi
的主要部件及其操作方法。建议读者按照本书介绍的过程,在您的电脑上直接操作。您将对
Delphi
的可视化编程有
一个
直观、快捷的了解,必将起到事半功倍的效果。 1.2.1 进入
Delphi
的可视化编程环境 1.2.1.1 安装
Delphi
Delphi
的安装与其它应用软件并无不同。2.0版必须在Windows 95以上的操作系统
中
使用。启动Windows 95或Windows NT后,将
Delphi
的光盘放入光驱(CD-ROM)
中
,运行光盘上的\INSTALL\SETUP.EXE文件,它的安装程序会提示您正确地装入
Delphi
。如果您是在微软
中
文Windows环境
中
安装
Delphi
,请参照附录A来设置您的BDE环境,以便于处理
中
文数据。 1.2.1.2 进入
Delphi
环境 为避免隐藏在
Delphi
后的Program Manager和曾经运行过的其它程序扰乱版面,分散您的注意力,不妨在启动
Delphi
前
关掉
其它应用程序;启动
Delphi
后,再最小化隐藏在后面的
Delphi
2.0程序组。这样屏幕上就只留下
Delphi
窗口可见了。 首次加载
Delphi
,屏幕上会出现四个窗口: ● 标题为“
Delphi
-Project1”的
Delphi
主窗口 ● Object Inspector窗口 ● 标题为“
Form
1”的窗体(
Form
)窗口 ● 标题为“Unit1.PAS”的代码编辑窗口。刚启动时这一窗口的大部分被“
Form
1”窗体所掩盖。将“
Form
1”窗体移开,或单击
Form
1窗体下方的状态行,可以使其全部可见。在“
Form
1”窗体的任意可见位置单击鼠标,可以恢复主窗体可见 以下我们将对这四个窗口分别进行介绍。 1.2.2
Delphi
可视化编程环境介绍 1.2.2.1 主窗口(Main
Form
)
Delphi
的主窗口位于屏幕的上端,包括Menu(菜单)、Speed Bar(加速条)和Component Panel(部件选项板)。Menu是下拉式主菜单。Speed Bar位于主窗口的左下端,由两排共14个加速按钮组成。这些按钮是菜单功能的快捷方式,各种图标直观地表示了它能执行的动作。Component Panel由一行、若干页对象按钮所组成,利用它来选择需要的部件并将它放到窗体
中
去。 1.2.2.2 Object Inspector(对象检视器) Object Inspector窗口含有两页:Properties页显示窗体
中
当前被选择部件的属性信息,并允许改变对象的属性;Events页列出了当前部件可以响应的事件。按动Object Inspector下端的“Events”页标签,使得Events页可见,这一定的事件后边的空白处,可以定义对象接受到相应事件时执行的动作。首次启动时,Object Inspector窗口显示的是当前窗体
Form
1的属性。Object Inspector根据对象属性的多少,决定是否有滚行显示。移动滚行条,可以查看当前对象的全部属性。 此外,Object Inspector上还有Object Selector(对象选择器),位于Object Inspector上方的下拉式菜单
中
。它显示了窗体上所有部件的名称和类型,也包含窗体本身。您可以用Object Selector很容易地在窗体的各个部件之间切换,也可以快速地回到窗体本身。当窗体
中
含有较多的对象时,您会发现这是切换对象尤其是回到窗体的最快捷途径。 想使Object Inspector一直可见,可将鼠标移到Object Inspector上,按动右键,以启动Object Inspector的弹出式菜单,将其设置为Stay On Top。这对初学者常是
一个
很重要的设置方式。 1.2.2.3 窗体窗口
Form
s窗口是开展大部分设计的工作区域。首次启动
Delphi
2.0时显示的是窗体
Form
1。可以把部件放在窗体
中
,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。您可以把窗体想象成
一个
可以放置其它部件的容器。窗体上有栅格(Grids),供放置部件时对齐位置用,在程序运行时Grids是不可见的。
一个
真正的应用程序可能有不止
一个
窗口,您可以选用不同的窗体进行设计。其它窗体可以是对话框(Dialog Box)、数据录入框等。 1.2.2.4 代码窗口 代码窗口一开始处于窗体窗口之下。因为在
Delphi
中
,设计用户界面直接在窗体
中
进行,运行结果和设计样板完全一致。当部件被放到窗体上时,
Delphi
会自动生成大部分的用户界面代码。您所应做的只是在它为您生成的框架
中
加入完成所需功能的程序段而已。点动
Form
1的状态行使代码窗口可见。 这个窗口
中
是代码编辑器。可以在其
中
书写
Delphi
应用程序的源代码。当程序
中
含有不止
一个
窗口时,会有几个库单元的源程序出现在代码编辑器
中
。代码编辑器的标题条
中
显示了当前正在编辑的库单元文件名。要查看某一特定程序的源代码,只需用鼠标点动写有该库单元文件名的页标签,就可以对该库单元进行编辑了。
Delphi
5 经典教程
第一部分 快速开发的基础 第1章
Delphi
5下的Windows编程 1 1.1
Delphi
产品家族 1 1.2
Delphi
是什么 3 1.2.1 可视化开发环境 3 1.2.2 编译器的速度和已编译代码的效 率 4 1.2.3 编程语言的功能及其复杂性 4 1.2.4 数据库结构的灵活性和可扩展性 5 1.2.5 框架对设计和使用模式的扩充 5 1.3 历史回顾 5 1.3.1
Delphi
1 5 1.3.2
Delphi
2 6 1.3.3
Delphi
3 6 1.3.4
Delphi
4 7 1.3.5
Delphi
5 7 1.3.6 未来 7 1.4
Delphi
5的IDE 7 1.4.1 主窗口 8 1.4.2 窗体设计器 9 1.4.3 Object Inspector 9 1.4.4 代码编辑器 9 1.4.5 代码浏览器 10 1.4.6 源代码生成器 10 1.5 创建
一个
简单的应用程序 11 1.6 事件机制的优势在哪里 12 1.7 加速原型化 13 1.8 可扩展的组件和环境 13 1.9 IDE最重要的十点功能 13 1.10 总结 15 第2章 Object Pascal语言 16 2.1 注解 16 2.2 新的过程和函数特征 17 2.2.1 圆括号 17 2.2.2 重载 17 2.2.3 缺省值参数 17 2.3 变量 18 2.4 常量 19 2.5 运算符 20 2.5.1 赋值运算符 20 2.5.2 比较运算符 20 2.5.3 逻辑表达式 21 2.5.4 算术运算符 21 2.5.5 按位运算符 22 2.5.6 加减运算过程 22 2.6 Object Pascal类型 23 2.6.1 类型的比较 23 2.6.2 字符 24 2.6.3 字符串 24 2.6.4 变体类型 32 2.6.5 Currency 39 2.7 用户自定义类型 39 2.7.1 数组 39 2.7.2 动态数组 40 2.7.3 记录 41 2.7.4 集合 42 2.7.5 对象 43 2.7.6 指针 44 2.7.7 类型别名 46 2.8 强制类型转换和类型约定 46 2.9 字符串资源 47 2.10 测试条件 47 2.10.1 if语句 47 2.10.2 case语句 48 2.11 循环 49 2.11.1 for循环 49 2.11.2 while循环 49 2.11.3 repeat...until 50 2.11.4 Break()过程 50 2.11.5 Continue()过程 50 2.12 过程和函数 50 2.13 作用域 50 2.14 单元 55 2.14.1 uses子句 55 2.14.2 循环单元引用 56 2.15 包 56 2.15.1 使用
Delphi
的包 56 2.15.2 包的语法 56 2.16 面向对象编程 57 2.17 使用
Delphi
对象 58 2.17.1 声明和实例化 58 2.17.2 析构 59 2.18 方法 59 2.18.1 方法的类型 60 2.18.2 属性 61 2.18.3 可见性表示符 62 2.18.4 友类 62 2.18.5 对象的秘密 63 2.18.6 TObject:所有对象的祖先 63 2.18.7 接口 63 2.19 结构化异常处理 66 2.19.1 异常类 68 2.19.2 执行的流程 70 2.19.3 重新触发异常 71 2.20 运行期类型信息 72 2.21 总结 72 第3章 Win32 API 73 3.1 对象:以前和现在 73 3.1.1 内核对象 73 3.1.2 GDI和用户对象 75 3.2 多任务和多线程 75 3.3 Win32内存管理 76 3.3.1 什么是线性内存模式 76 3.3.2 Win32系统是怎样管理内存的 76 3.4 Win32的错误处理 78 3.5 总结 78 第4章 应用程序框架和设计 79 4.1 理解
Delphi
环境和项目的体系结构 79 4.2 构成
Delphi
5项目的文件 79 4.2.1 项目文件 80 4.2.2 单元文件 80 4.2.3 窗体文件 8
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章