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

📄 compfaq.html

📁 对于学习很有帮助
💻 HTML
📖 第 1 页 / 共 5 页
字号:

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

<OL>
<P><B><FONT COLOR="#004080">property</FONT></B><FONT COLOR="#000000"> P1:
TComplex </FONT><B><FONT COLOR="#004080">read</FONT></B><FONT COLOR="#000000">
F1 </FONT><B><FONT COLOR="#004080">write</FONT></B><FONT COLOR="#000000">
F1; </FONT></P>
</OL>

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

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

<UL>
<P><FONT COLOR="#000000">Ray Lischner 的回答:</FONT></P>

<P><FONT COLOR="#000000">如果你不想让使用者将元件拉曳至表格上的话,使用
RegisterNoIcon 及 RegisterClass 程序来注册元件。</FONT></P>
</UL>

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

<UL>
<P><FONT COLOR="#000000">Ray Konopka 的回答:</FONT></P>

<P><FONT COLOR="#000000">在探索 VCL 原始程式码时,强烈建""你最好熟悉程式码编辑器里的书签功能。使用方法
很简单:Ctrl-Shift-N,N 是从 0 至 9 的数字,用来设定一个书签。此後就可以使用
Ctrl-N 来跳跃至书签处。(译注:使用这项功能真的可以节省你许多来回卷动程式及
找寻函式的时间,别迟疑了,快学吧!)</FONT></P>
</UL>

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

<UL>
<P><FONT COLOR="#000000">你必须要建立一个元件编辑器。元件编辑器决定了元件在设计时期时对滑鼠键的反应及动作,你可以为元件定义它自己的快速功能选单。</FONT></P>

<P><FONT COLOR="#000000">建立元件编辑器的步骤大致如下:</FONT></P>

<OL>
<LI><FONT COLOR="#000000">从 TComponentEditor 类别继承一个新的类别。 </FONT></LI>

<LI><FONT COLOR="#000000">改写类别的 GetVerbCount、GetVerb及 ExecuteVerb方法。
</FONT></LI>

<LI><FONT COLOR="#000000">在 Register 程序中使用 RegisterComponentEditor
程序来注册此元件编辑器。</FONT></LI>
</OL>

<P><FONT COLOR="#000000">有关元件编辑器这个主题在『Developing Delphi Components』这本书中有详尽的解
说及资讯。</FONT></P>
</UL>

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

<UL>
<P><FONT COLOR="#000000">你可能在元件中使用了Writeln这个程序。</FONT></P>
</UL>

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

<UL>
<P><FONT COLOR="#000000">我发现有时自制的元件编辑器不会将元件属性储存起来。设计时期一切正常,但是储
存起来再重新读入後就有问题了。</FONT></P>

<P><FONT COLOR="#000000">原因是你很可能忘了在元件编辑器中呼叫此方法:</FONT></P>

<P><FONT COLOR="#000000">Designer.Modified;</FONT></P>

<P><FONT COLOR="#000000">如此一来Delphi才会知道你的元件编辑器更改过属性值了。
</FONT></P>
</UL>
</UL>

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

<H3><I><FONT COLOR="#0000FF">第三部分在元件中使用其它元件 </FONT></I></H3>

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

<UL>
<UL>
<P><FONT COLOR="#000000">你的卷轴元件类别必须处理 CM_DESIGNHITTEST 元件讯息才行。</FONT></P>

<P><FONT COLOR="#000000">TMyScrollBar = </FONT><B><FONT COLOR="#004080">class</FONT></B><FONT COLOR="#000000">
(TScrollBar) </FONT></P>

<UL>
<P><B><FONT COLOR="#004080">procedure</FONT></B><FONT COLOR="#000000">
CMDesignHitTest</FONT></P>

<P><FONT COLOR="#000000">(</FONT><B><FONT COLOR="#004080">var</FONT></B><FONT COLOR="#000000">
Message: TCMDesignHitTest); </FONT><B><FONT COLOR="#004080">message</FONT></B><FONT COLOR="#000000">
CM_DESIGNHITTEST; </FONT></P>
</UL>

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

<P><B><FONT COLOR="#004080">procedure</FONT></B><FONT COLOR="#000000">
TMyScrollBar.CMDesignHitTest( </FONT><B><FONT COLOR="#004080">var</FONT></B><FONT COLOR="#000000">
Message: TCMDesignHitTest);</FONT></P>

<P><B><FONT COLOR="#004080">begin</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">Message.Result := 1; </FONT></P>
</UL>

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

<P><FONT COLOR="#000000">你的元件必须以以下方法建立卷轴:</FONT></P>

<P><FONT COLOR="#000000">TMyScrollBar.Create(</FONT><B><FONT COLOR="#004080">nil</FONT></B><FONT COLOR="#000000">);</FONT></P>

<P><FONT COLOR="#000000">而不是</FONT></P>

<P><FONT COLOR="#000000">TMyScrollBar.Create(Self);</FONT></P>
</UL>

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

<UL>
<P><FONT COLOR="#000000">你必须设定卷轴的页面大小。你可以用以下的程式码来做:</FONT></P>

<P><B><FONT COLOR="#004080">procedure</FONT></B><FONT COLOR="#000000">
SetPageSize(ScrollBar: TScrollBar; PageSize: Integer); </FONT></P>

<P><B><FONT COLOR="#004080">var</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">ScrollInfo: TScrollInfo;</FONT></P>
</UL>

<P><B><FONT COLOR="#004080">begin</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">ScrollInfo.cbSize := Sizeof (ScrollInfo);</FONT></P>

<P><FONT COLOR="#000000">ScrollInfo.fMask := SIF_PAGE;</FONT></P>

<P><FONT COLOR="#000000">ScrollInfo.nPage := PageSize;</FONT></P>

<P><FONT COLOR="#000000">SetScrollInfo (ScrollBar.Handle, SB_CTL, ScrollInfo,
True); </FONT></P>
</UL>

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

<P><FONT COLOR="#000000">要取得目前页面大小可用如下方法:</FONT></P>

<P><B><FONT COLOR="#004080">function</FONT></B><FONT COLOR="#000000"> GetpageSize
(ScrollBar: TScrollBar): Integer; </FONT></P>

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

<UL>
<P><FONT COLOR="#000000">ScrollInfo: TScrollInfo; </FONT></P>
</UL>

<P><B><FONT COLOR="#004080">begin</FONT></B></P>

<UL>
<P><B><FONT COLOR="#004080">if</FONT></B><FONT COLOR="#000000"> HandleAllocated
</FONT><B><FONT COLOR="#004080">then</FONT></B><FONT COLOR="#000000"> </FONT></P>

<P><B><FONT COLOR="#004080">begin</FONT></B></P>

<UL>
<P><FONT COLOR="#000000">ScrollInfo.cbSize := SizeOf (ScrollInfo);</FONT></P>

<P><FONT COLOR="#000000">ScrollInfo.fMask := SIF_PAGE; </FONT></P>

<P><FONT COLOR="#000000">GetScrollInfo (ScrollBar.Handle, SB_CTL, ScrollInfo);</FONT></P>

<P><FONT COLOR="#000000">Result := ScrollInfo.nPage; </FONT></P>
</UL>

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

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

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

<H3><I><FONT COLOR="#0000FF">第四部分 Bound Controls</FONT></I></H3>

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

<UL>
<P><FONT COLOR="#000000">我可以大胆地说全世界有关 TDataLink 的说明文件只有一份,就在这儿:</FONT></P>

<UL>
<LI><FONT COLOR="#000000">属性 (Property) 介绍</FONT></LI>

<P><FONT COLOR="#000000">property Active: Boolean(唯读) </FONT></P>

<UL>
<P><FONT COLOR="#000000">当此 DataLink 连结至一个已开启的 DataSource 时会传回
True。当 Active 状态改变时会 触发ActiveChanged方法。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property ActiveRecord: Integer(可读写) </FONT></P>

<UL>
<P><FONT COLOR="#000000">用来设定或取得 DataLink 缓冲区中目前所指向的记录代码,代码的范围是
0 .. BufferCount - 1。使用它来设定记录代码时必须小心不要超过这个范围,否则
可能导致不可预期的错误。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property BufferCount: Integer(可读写)</FONT></P>

<UL>
<P><FONT COLOR="#000000">DataLink 拥有一个资料缓冲区。而 BufferCount 属性即用来设定或取得缓冲区大小,
缓冲区大小决定了一个dataset同时可以显视的资料记录笔数。对大部分的资料感知元
件来说,BufferCount 的值是 1;但对 TDataGrid 来说,BufferCount 代表它的可
视列数目。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property DataSet: TDataSet(唯读)</FONT></P>

<UL>
<P><FONT COLOR="#000000">传回此 DataLink 所连结的 DataSet。其实就是 DataSource.DataSet。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property DataSource: TDataSource(可读写) </FONT></P>

<UL>
<P><FONT COLOR="#000000">传回此DataLink所连结的DataSource。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property DataSourceFixed: Boolean(可读写)</FONT></P>

<UL>
<P><FONT COLOR="#000000">这个属性可用来防止 DataSource 属性被更改。如果此属性设为
True,当我们试著改变 DataSource 属性时会引发一个例外。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property Editing: Boolean(唯读)</FONT></P>

<UL>
<P><FONT COLOR="#000000">如果 DataLink 正处於编辑状态则传回 True。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property ReadOnly: Boolean(可读写)</FONT></P>

<UL>
<P><FONT COLOR="#000000">设定 DataLink 是否为唯读状态。这个属性并不会影响所连结的
DataSet。在唯读状态下这个 DataLink 无法进入编辑状态。</FONT></P>
</UL>

<P><FONT COLOR="#000000">property RecordCount: Integer(唯读)</FONT></P>

<UL>
<P><FONT COLOR="#000000">传回DataSet的资料记录数目。</FONT></P>
</UL>

<LI><FONT COLOR="#000000">方法 (Method) 介绍</FONT></LI>

<P><FONT COLOR="#000000">function Edit: Boolean;</FONT></P>

<UL>
<P><FONT COLOR="#000000">让所连结的DataSet进入编辑状态。传回值: 成功传回
True ,失败传回 False</FONT></P>
</UL>

<P><FONT COLOR="#000000">procedure UpdateRecord;</FONT></P>

<UL>
<P><FONT COLOR="#000000">我们不直接呼叫这个方法,它是提供其它程式来呼叫的。这个方法只有设定一个旗帜
然後呼叫 UpdateData 方法。</FONT></P>
</UL>

<LI><FONT COLOR="#000000">虚拟方法 ( Virtual Method )</FONT></LI>

<UL>
<P><FONT COLOR="#000000">要让 TDataLink 物件与元件沟通必须改写下列这些方法:</FONT></P>
</UL>

<P><FONT COLOR="#000000">procedure ActiveChanged</FONT></P>

<UL>
<P><FONT COLOR="#000000">当连结的 DataSource 开启状态改变时会呼叫此方法。使用
Active 属性可以得知目前是否为开启状态。</FONT></P>
</UL>

<P><FONT COLOR="#000000">procedure CheckBrowseMode</FONT></P>

<UL>
<P><FONT COLOR="#000000">资料库有任何改变之後都会先呼叫这个方法。</FONT></P>
</UL>

<P><FONT COLOR="#000000">procedure DataSetChanged;</FONT></P>

<UL>
<P><FONT COLOR="#000000">当下列任一事件发生时都会呼叫此方法:</FONT></P>

<UL>
<LI><FONT COLOR="#000000">移至DataSet的开头</FONT></LI>

<LI><FONT COLOR="#000000">移至DataSet的结尾</FONT></LI>

<LI><FONT COLOR="#000000">在DataSet中插入或新增资料</FONT></LI>

<LI><FONT COLOR="#000000">删除DataSet的资料</FONT></LI>

<LI><FONT COLOR="#000000">取消DataSet的编辑</FONT></LI>

<LI><FONT COLOR="#000000">更新记录</FONT></LI>
</UL>

<P><FONT COLOR="#000000">如果不想改写这个方法只要在其中呼叫:</FONT></P>

<P><FONT COLOR="#000000">RecordChanged(nil);</FONT></P>
</UL>

<P><FONT COLOR="#000000">procedure DataSetScrolled(Distance: Integer)</FONT></P>

⌨️ 快捷键说明

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