⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compfaq.html

📁 对于学习很有帮助
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE></TITLE>
   <META NAME="Author" CONTENT="原著: John Miano 翻译: 陈宽达">
   <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (Win95; I) [Netscape]">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#F6F6F6">

<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
<TR>
<TD BGCOLOR="#FFFF80">Wolfgang Chien's Homepage</TD>

<TD WIDTH="30%" BGCOLOR="#000000"><FONT COLOR="#FFFFFF">Delphi学习笔记
- 典藏篇</FONT></TD>
</TR>
</TABLE>

<H1 ALIGN=CENTER><I><FONT COLOR="#0000FF">Delphi 元件撰写常问问题</FONT></I></H1>

<CENTER><P><FONT COLOR="#000000"><FONT SIZE=+0>版本:5 </FONT></FONT></P></CENTER>

<CENTER><P>译者: <A HREF="http://www.cs.nthu.edu.tw/~br831529">陈宽达 </A>原作者
:<FONT COLOR="#000000"><A HREF="mailto:miano@worldnet.att.net">John M.
Miano</A></FONT></P></CENTER>

<UL>
<CENTER><P><FONT COLOR="#000000">Copyright 1996 - John Miano</FONT></P></CENTER>

<CENTER><P><FONT COLOR="#000000">协助: Glen Boyd Stefan Hoffmeister Ray
Konopka Ray Lischner Max Nilson </FONT></P></CENTER>
</UL>

<CENTER><P><FONT COLOR="#000000">最近修改日期:1997年1月1日 最近修改章节:6.1</FONT></P></CENTER>

<CENTER><P><FONT COLOR="#000000">译稿更新日期 1997 年 3 月 3日</FONT></P></CENTER>

<P>
<HR width="100%"></P>

<H3><B><FONT COLOR="#000000"><FONT SIZE=+1>目次</FONT></FONT></B></H3>

<P><B><FONT COLOR="#000000">第一部分 简介</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#1_1">1.1 此份文件的目的为何? </A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第二部份 ""合环境</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#2_1">2.1 在""合环境中如何找出元件所产生的问题?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_2">2.2 如何检视Delphi所产生的组合语言码?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_3">2.3 我可以在执行时期动态建立元件,但在设计时期就会发生错误。为什麽?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_4">2.4 如何撰写一个无法放置到表格上的元件?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_5">2.5 在程式码编辑器中快速切换程式区段最简单的方法是什麽?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_6">2.6 如何使我的元件在按下滑鼠右键时出现快速功能选单?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_7">2.7 为什麽元件在设计时期会出现『I/O
103』的错误? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#2_8">2.8 为什麽元件编辑器不会将元件属性的变动储存起来?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第三部分 在元件中使用其它元件</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#3_1">3.1 如何在元件中加入卷轴元件并让它在设计时期能动作?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#3_2">3.2 如何建立Windows95式样的卷轴?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第四部分 Bound Controls</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#4_1">4.1 哪里可以找得到有关TDataLink类别的说明文件?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#4_2">4.2 如何得知一个dataset中有几笔记录?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第五部分 VCL </FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#5_1">5.1 使用""合环境除错时如何追踪检视VCL元件的程式码?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#5_2">5.2 我的元件参考到其它元件,如何得到参考元件被消灭的讯息?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#5_3">5.3 什麽是元件讯息? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#5_4">5.4 我的元件得到输入焦点後仍不能接受键盘讯息,为什麽?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第六部分 其它资讯</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#6_1">6.1 有哪些书介绍或讲解如何撰写元件?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#6_2">6.2 有哪些Web站台可以取得撰写元件的资讯?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第七部分 元件的储存与载入</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#7_1">7.1 如何将包含其它物件的物件一起存入DFM档?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#7_2">7.2 如何得知元件是否正从资料流中读出?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#7_3">7.3 如何确定元件的属性是否被正确地储存?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第八部分 工具程式</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#8_1">8.1 有没有Delphi版本的 YACC 及
LEX? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#8_2">8.2 如何秀出JPEG格式图形档?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第九部分 基本程式设计技巧</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#9_1">9.1 如何建立不定数目的物件阵列?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#9_2">9.2 Delphi 2.0的 WinCrt 单元到哪去了?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#9_3">9.3 自制元件时该从哪个类别继承?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十部分 进阶程式设计技巧</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#10_1">10.1 Delphi有与 C++ 一样的 I/O
Stream 类别吗? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#10_2">10.2 如何取得列举型态变数的文字表示?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十一部分 元件虚拟方法</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#11_1">11.1 如何得知元件的 window handle
是何时建立的? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#11_2">11.2 如何得知是否表格上所有元件都已载入完成?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#11_3">11.3 在哪里绘制元件最适合? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#11_4">11.4 如何改变元件的视窗式样?</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十二部分 Windows API</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#12_1">12.1 元件卷动时闪动的很厉害,如何克服这种情况?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#12_2">12.2 如何重新启动Windows? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#12_3">12.3 如何快速大量地更改元件资料?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十三部分 控制项边框</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#13_1">13.1 为什麽我的元件的 Ctl3D 属性设为
True 之後,它依然没有 3D 的边框呢? </A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#13_2">13.2 如何实作 BorderStyle 属性?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十四部分 控制项式样</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#14_1">14.1 当元件重绘时如何防止闪动的情况?
</A></FONT></LI>
</UL>

<P><B><FONT COLOR="#000000">第十五部分 视窗讯息</FONT></B></P>

<UL>
<LI><FONT COLOR="#000000"><A HREF="#15_1">15.1 为什麽我的元件得不到方向键的讯息?
</A></FONT></LI>

<LI><FONT COLOR="#000000"><A HREF="#15_2">15.2 有没有与 Visual Basic『DoEvents』同样功能的函式?
</A></FONT></LI>
</UL>

<P>
<HR WIDTH="100%"></P>

<H3><I><FONT COLOR="#0000FF">第一部分 简介</FONT></I></H3>

<UL>
<P><A NAME="1_1"></A><FONT COLOR="#000000"><B>1.1 此份文件的目的为何?</B>
</FONT></P>

<UL>
<P><FONT COLOR="#000000">这份文件的目的是为了解答有关撰写 Delphi元件时常见或文件上找不到的问题。我曾
经花了一段很长的时间来了解探索 TDataLink 类别,这让我觉得应该将撰写元件时常
遇到的问题及经验心得写下来,分享给大家。不过我并不能保证写在这份文件里头的
解答完全正确。如果你对其中的任何问题有更好的解决方法,或认为有什麽资讯适合放在这份文件里
的话,请告知作者。有任何错误或缺漏也欢迎指正。</FONT></P>

<P><FONT COLOR="#000000">除了再加上更多的问题及解答外,我试著再补充两个部分:</FONT></P>

<OL>
<LI><FONT COLOR="#000000">进阶程式设计师喜爱的工具:这也许跟元件设计没有直接的关系但至少它们跟
Delphi有关系。</FONT></LI>

<LI><FONT COLOR="#000000">值得参考的文件刊物:由於空间的关系,这份文件不能放置太多的范例程式,因
此参考其它文件是十分需要的。这不是一份教材式的文件,我不会做太多条理式
的说明,但会试著将最具有参考价值的文献列出。</FONT></LI>
</OL>

<P><FONT COLOR="#000000">如果你有任何意见或建"",欢迎来信告诉我。 </FONT></P>
</UL>
</UL>

<P>
<HR WIDTH="100%"></P>

<H3><I><FONT COLOR="#0000FF">第二部份 ""合环境</FONT></I></H3>

<UL>
<P><A NAME="2_1"></A><B><FONT COLOR="#000000">2.1 在""合环境中如何找出元件所产生的问题?</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">我发现唯一能找出问题的方法只有:</FONT></P>

<OL>
<LI><FONT COLOR="#000000">在 Delphi ""合环境的 Tools|Options 对话框的 Library
页中将『Compile with debug info』选项打勾。 </FONT></LI>

<LI><FONT COLOR="#000000">选 Component|Rebuild Library 重新编译元件库。
</FONT></LI>

<LI><FONT COLOR="#000000">从 Turbo Debugger 中执行 Delphi。 </FONT></LI>

<LI><FONT COLOR="#000000">选File|Change Dir移至包含元件程式码的目录下。</FONT></LI>
</OL>

<P><FONT COLOR="#000000">如果你的元件发生GPF时就可以检视堆叠然後得知到底是哪些发生问题了。</FONT></P>
</UL>

<P><A NAME="2_2"></A><B><FONT COLOR="#000000">2.2 如何检视 Delphi 所产生的组合语言码?
</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">Glen Boyd 的回答:</FONT></P>

<P><FONT COLOR="#000000">开启登录编辑程式(REGEDIT.EXE),接著到『HKEY_CURRENT_USER\Software\Borland\Delphi\2.0\Debugging』下新增一个字串机
码『EnableCPU』,将它的字串值设为『1』。此後Delphi""合环境的View选单下就会
多一个『CPU』选项,它会开启一个视窗来检视目前程式指令的记忆体及组合语言。你
可以在侦错时利用单步追踪或其它方法来观察它。</FONT></P>
</UL>

<P><A NAME="2_3"></A><B><FONT COLOR="#000000">2.3 我可以在执行时期动态建立元件,但在设计时期就会发生错误。为什麽?
</FONT></B></P>

<OL>
<OL>
<LI><FONT COLOR="#000000">你的元件必须继承自TComponent类别或其衍生类别。</FONT></LI>

<LI><FONT COLOR="#000000">你的元件建构函式及灭构函式宣告必须看起来像这样:</FONT></LI>

<P><B><FONT COLOR="#004080">constructor</FONT></B><FONT COLOR="#000000">
Create(AOwner: TComponent); </FONT><B><FONT COLOR="#004080">override</FONT></B><FONT COLOR="#000000">;
</FONT></P>

<P><B><FONT COLOR="#004080">destructor</FONT></B><FONT COLOR="#000000">
Destroy; </FONT><B><FONT COLOR="#004080">override</FONT></B><FONT COLOR="#000000">
;</FONT></P>

<LI><FONT COLOR="#000000">所有在published区段宣告的栏位型态必须是ordinal、single、double、extended
、comp、currency、string、small set(译注:指元素编号不超过0..31这个范围
的集合;平常的集合可容许的范围为0..255)、method pointer或class其中一种。
如果你宣告了其它型态的栏位,Delphi编译器并不会检查出错误。然而当你使用这
个元件时依然会得到一个GPF。</FONT></LI>
</OL>

<P><FONT COLOR="#000000">如果你想让TMyComponent元件可以在设计时期操作,注意下面的宣告会引发十分严重
的问题:</FONT></P>

<P><B><FONT COLOR="#004080">type</FONT></B><FONT COLOR="#000000"> TComplex
= </FONT><B><FONT COLOR="#004080">record</FONT></B><FONT COLOR="#000000">
</FONT></P>

<OL>
<P><FONT COLOR="#000000">RealPart: Double; </FONT></P>

<P><FONT COLOR="#000000">ComplexPart: Double; </FONT></P>
</OL>

<P><B><FONT COLOR="#004080">end</FONT></B><FONT COLOR="#000000">;</FONT></P>

<P><B><FONT COLOR="#004080">class</FONT></B><FONT COLOR="#000000"> TMyComponent
= </FONT><B><FONT COLOR="#004080">Class</FONT></B><FONT COLOR="#000000">(TComponent)
</FONT></P>

<P><B><FONT COLOR="#004080">private</FONT></B><FONT COLOR="#000000"> </FONT></P>

<OL>
<P><FONT COLOR="#000000">F1: TComplex; </FONT></P>
</OL>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -