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

📄 tip03.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><head><title>心得03</title><meta http-equiv=Content-Type content=text/html; charset=gb2312><meta name=GENERATOR content=Microsoft FrontPage 3.0><style><!--
A{text-transform: none; text-decoration: none;}
A:hover {color: #F77C02 ; text-decoration: underline;} }
--></style><style type=text/css><!--
.font1 {font-size:10.5pt; line-height:15pt; align=center}
.font2 {font-size:9pt; line-height:13pt; }
A{text-transform: none; text-decoration:none;color:#0000FF}
a:hover {text-decoration:underline;color:#FFFFF}
--></style></head><body bgcolor=#FFFFFF><p><span class=font2> </span></p><pre><span class=font2><i>98-8-23 22:00</i>
<b>raise的用法</b>
看Demo时学的:
  raise Exception.Create('Project ID is required');
  
在工程文件中Application.Run语句之前加入下面语句,可不让主Form在运行时显示:
  Application.ShowMainForm := False;
  
在CSDemos.dpr中,有许多有用的c/s编程技巧……

<i>98-8-23 21:40</i>
<b>在Delphi代码中定义数据库</b>
近来由于应用上的需要,要在运行中动态生成数据库,结构不定。我想一定要用
BDE32API中的知识才能实现。无意中在5月7日的《中国计算机报》上发现一篇文
章《在Delphi代码中定义数据库》,帮了我的大忙。部分代码如下:
procedure tform1.create_tbl;
var tbl:ttable;
begin
  tbl:=ttable.create(self); // 如没有声明中的&quot;tform1.&quot;,Delphi不认这个self
  with tbl do
  begin
    datebasename:=;dbdemos';
    tablename:='my_tbl';
    with fielddefs do
    begin
      clear;
      add('No',ftInteger,0,false);
      add('Name',ftString,0,false);
      ...
    end;
    with indexdefs do
    begin
      clear;
      add('primary','no',[ixPrimary,ixUnique]);
      ...
    end;
    CreateTable;
  end;
end;

<i>98-8-20 22:24</i>
<b>异种数据库之间的互相转换</b>
记得过去曾经见到过一篇文章,介绍如何用一极简单的方法将异种数据库之间
的表(Table)相互转化,但没有记住作者是用了什么方法。现在,我需要有这
样一种工具,怎么也找不到,只能用笨办法,一条记录一条记录地Insert。好
在刚刚在看Help文件时找到了要找的:那就是用TBatchMove!真是的,天天都
在我眼皮底下晃,为什么到现在才发现……
有个Demo工程在Delphi 3\HELP\EXAMPLES\BATCHMV之下,功能很全的。

<i>98-8-20 22:22</i>
<b>在程序运行一耗时操作时改变鼠标形状</b>
begin
  screen.cursor:=crHourglass;
  try
    ...  // do some long-time work
  finally
    screen.cursor:=crDefault;
  end;
end;

<i>1998-08-19 11:03</i>
<b>在TQuery中查询时关键字冲突</b>
我用了这样一个查询:
  select no,name,py,belong from dwbm
结果Delphi提示&quot;Invalid use of keyword...&quot;,换成
  select &quot;no&quot;,name,py,belong from dwbm
查询结果的第一列又恒为 &quot;no&quot;,经反复试验,最后终于成功了:
select &quot;a&quot;.&quot;no&quot;,name,py,belong from dwbm a

<i>1998-08-18 14:06</i>
<b>我的第一篇Delphi文章《Delphi使用技巧四则》</b> 请看 
  <a href=http://www.ciw.com.cn/ciw/751/d0902.htm>http://www.ciw.com.cn/ciw/751/d0902.htm</a>
这是中国计算机报的站点。

<i>98-8-15 20:56</i>
<b>InsertRecord和AppendRecord的一条注意事项</b>
在用InsertRecord插入一条记录时,发现有两个字段颠倒了。又核对了一
遍数据库(table)中的字段顺序,没有发现不一致的地方。想起用了Field
Editor,会不会是……打开Field Editor,果然,为了显示的需要,我把
其中两个字段对调了位置。原来,InsertRecord中的字段顺序应该与Field
Editor中的顺序一致才行。这一点,好象书上和联机帮助上都没有提到过。
这一点,对AppendRecord也同样。

<i>98-8-12 21:44</i>
<b>一夜之间</b>
昨天朋友找我帮忙,编制一个数据库应用软件,必须在今天早上之前完成。
我答应了,因为我知道Delphi的能力,也了解到这个应用并不是多么复
杂。结果,从晚8点到晚0点,程序顺利作成,而且没有忘记加了个About
版权信息对话框和一个Splash启动封面。连我也从来没有想到过一夜之
间做好一个界面漂亮功能齐全的软件!

记得有本书上介绍一位程序员用Delphi用了一天一夜的时间,为一家大
公司开发出一套大型软件的演示版,击败了他的一个在此之前总是比他
提前完成的竞争对手。在这24小时里,他不光拚命地工作,而且还要应
付失火、朋友拜访、嘴唇被碰破、失恋等意外事件。但最终,他还是胜
利了。所有这些,都只是因为:他用上了Delphi!

哈哈!Delphi真是给咱们程序员脸上贴金!

<i>98-8-12 9:39</i>
<b>TSplitter的用法</b>
见到过一些文档中提到过在运行中改变两个Panel的边界的方法。其实,Delphi 3.0
提供了一个组件TSplitter,可以非常轻松地实现上述功能。步骤如下:
1、加入Panel1,Align设为alLeft。(也可根据情况设为right,bottom或top)
2、在Form1的空白处加入一个Splitter,可以看到它自动处于紧贴Panel1的位置。
   如果不是紧贴,可以把它的Align设成和Panel1一样即好。
3、加入Panel2,Align设为alClient。(必须有一个Panel为alClient)
运行,把鼠标放在两个Panel之间,当光标改变成双向箭头形状时拖动它。
试一下,是不是很爽?

<i>98-8-7 18:07</i>
<b>pchar的一个特别之处</b>
var p:pchar;
begin
  getmem(p,10);
  p:='';
  if p='' then 
  ...
这是错误的! if 语句应该这样写
  if p+'a'='a' then ...
才行。您要是不信,试一下就知道了。

<i>98-8-7 10:18</i>
<b>使用OnFilterRecord时应注意的一个问题</b>
我在制作一个数据库应用程序时遇到下面的现象:
运行时好好的,退出程序时,出现
'Invalid variant type conversion'.
程序中的实现过程如下:
procedure TMainForm.RadioButton1Click(Sender: TObject);
begin
  Datamodule2.payedquery.OnFilterRecord := BfsjFilter;
end;
...
procedure TMainForm.BfsjFilter(DataSet: TDataSet; var Accept: Boolean);
begin
  accept:=(copy(dataset['Bfsj'],1,6)&gt;=monthfrom.text);
end;
真奇怪。用单步执行,原来在Close之后,程序又执行了TMainForm.BfsjFilter中的
语句。有办法了:
在Mainform的OnClose里加入一行
  Datamodule2.payedquery.OnFilterRecord := nil;
错误不再。

<i>98-8-4 22:50</i>
<b>关于文件夹的几个函数</b>
uses filectrl;
procedure ForceDirectorys(dir:string) ------------ 一次建立指定的多级文件夹
function DirectoryExists(Name: string): Boolean; - 指定文件夹是否存在
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; 
                      HelpCtx: Longint):Boolean; - 打开一个选择文件夹的对话框(英文的)

<b>快捷方式(ShortCut)</b>
uses shlobj,comobj;
var

⌨️ 快捷键说明

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