==系统应用篇==
A.Delphi自代了大量的常用控件如Delphi就有一百多了而今年出的Delphi更是Delphi的倍这么多控件就是在*的分辨率下也无法全部显示他们的组件面板而每次要按那两颗小按钮来显示更多的面板真是非常不方便!但通过添加下面那一个注册表键值就能实现组件面板自动展开
[HKEY_CURRENT_USER\Software\Borland\Delphi\X\Extras]
AutoPaletteSelect=
(注X表示你的Delphi的版本号如果没有Extras主键则新建即可下同)
B.每次新建窗体然后设置其字体大小……真是好麻烦的!那就再添加一个以下的键值让系统自动来设置吧
[HKEY_CURRENT_USER\Software\Borland\Delphi\X\FormDesign]
DefaultFont=宋体_
(注_表示空格也可以用Bold(粗体)等代替)
C.自定义工作环境让它更加适合自己
设置工具栏在Delphi的工具栏右键单击选Customize然后挑选需要的按钮拖到工具上把不要的拖出来我常用的是Standard工具栏下的OpenOpen ProjectSaveSave AllUndoRedoDebug工具栏下的PauseAdd WatchProgram ResetRunDesktop工具栏下的Save Current DesktopSet Debug DesktopComponent Palette工具栏
设置窗口布局为了能跟高效的编写程序合理的布置各个窗口是很重要的我常用的窗口有Object InspectorProject Manager(View|Project Manager)Watch List(Run|Add Watch) 具体的停放位置如图
[图]设置好各个窗体后按Desktop工具栏上的Save Current Desktop按钮保存
?设置显示颜色让代码的颜色更符合自己的习惯有利于编写时思维的清晰Tools|Editor Options打开Editor Properties选Color标签页设置代码颜色以下仅解释一下几个常用的
Whitespace空白处即背景
Comment注释
Reserved word保留字
String字符串
Number数字
Execution Point正在执行的当前行(即F步入时所到达的那一行)
Enabled break断点
Error line错误发生行
D.掌握一些Delphi编程中的快捷键能够极大程度的提高效率还不会让你因为过多无聊的设置等而感到厌烦现在如果不用这些快捷键我会很不适应这样的编程的!以下我就介绍一下我常用的几个快捷键
Esc : 选择当前选中组件的容器(通常是PanelGroupBox或Form等)
Ctrl+方向键 将所选组件移动一个像素
Ctrl+Shift+方向键 将所选组件移动一大格(类似Fireworks中按住Shift再用方向键移动时的效果)
Shift+方向键 调整选中组件的大小每次一像素
Shift+选中组件 按住Shift键再用鼠标点击组件可以同时选择多个组件
Ctrl+鼠标左键 在procedure中掉用其他的函数(如一个自定义的过程)在这个调用处按住Ctrl会发现当鼠标移上去的时候变成了一个类似超链接的格式鼠标单击就能直接转到所调用的此函数的实现部分这个功能我可是用的最多了让我找模块变得非常方便!
Ctrl+Shift+C 在一个对象中声明了一个方法然后把光标放到它的上面按下Ctrl+Shift+C就可以为他的实现建立一个基本框架如
TForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure Mine;
end;
把光标放到procedure Mine这行按下Ctrl+Shift+C下面这段代码将自动插入到单元中
procedure TFormMine;
begin
end;
==窗体操作篇==
在有多个窗体的程序中Delphi默认是将它们在程序启动时全部创建(只是都隐藏了只显示一个主窗体)这样那些暂时不必要启动的窗体就占用了许多内存空间所以我们需要在菜单Project|Options的Forms标签页下将那些暂时不要启动的窗体从Autocreate forms下转移到Available forms中这样这些窗体的创建和释放就需要代码来实现了
A.两种创建窗体方法之比较对于这些非自动创建的窗体我们必须在Show之前Creat(Self)或Create(Application)将其创建如FormCreat(Self)和FormCreate(Application)可是它们两个到底有什么区别呢?其实两者区别不大
但如果Owner是属于别的窗口或控件的话当它的Owner被释放的时候该Owner所拥有的也会被释放关键的区别是由谁来管理该窗体的资源用第一种方法创建该窗体的资源由编程者来负责管理用第二种方法创建该窗体的资源由Application来管理
B.几种窗体的释放方法既然是为了节约内存那么用完了的窗体就应该搬出内存在这里我列举几个大同小异的方法
()
procedure TFormButtonClick(Sender :TObject);
begin
if Form = nil then
Form:=TFormCreate(Application);
FormShowModal;
end;
procedure TFormclose(Sender: TObject; var Action: TCloseAction);
begin
ModalResult := mrNone;
Action := caFree;
Form := nil;
end;
()
procedure TFormButtonClick(Sender :TObject);
begin
if not Assigned(Form) then
begin
ApplicationCreateForm(TFormForm);
try
FormShowModal;
finally
FormFree;
Form := nil;
end;
end
else
FormShowModal;
end;
()
procedure TFormButtonClick(Sender :TObject);
begin
FormClose;
FormRelease;
end;
==控件使用篇==
A.大名鼎鼎的RXLib控件包是由三位俄罗斯高手编写的非常的出色!不过内容太多了要用好也不容易我在此拿RxRichEdit简单地说几点
好多人都问RxLib怎么安装似乎的确有点复杂呵呵所以我也顺便说一下
运行rxinstexe将RxLib先安装到\Program Files\Borland\Delphi(或)\RX文件夹下然后打开Delphi选File\Open将RXCTLDPKRXDBDPKRXBDEDPK分别打开后按compile继续打开DCLRXDPKDCLRXDBDPK和DCLRXBDDPK将这三个分别按compile后按install就可以了:)
?AllowObjects属性Win下默认设置为True右键菜单没有问题但设为False时快捷菜单会连续出现两次Win下设为True时会使右键菜单无法弹出而False时却显示正常所以为了系统的兼容性需要判断当前OS版本
procedure TFormMainFormCreate(Sender: TObject);
var
OSVI:OSVERSIONINFO;
begin
OSVIdwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(OSVI);
case OSVIdwPlatformId of
:RxRichEditAllowObjects:=true;
:RxRichEditAllowObjects:=false;
end;
end;
但我不知这个属性为什么会有这么一个问题还望高手指点
?OnURLClick事件RXRichEdit有自动将网页地址转为超链接格式但具体的行为还是要自己写代码的不然这些地址就成了个空壳了
procedure TFormMainRXRichEditURLClick(Sender: TObject; const URLText: String; Button: TMouseButton);
begin
if Button = mbLeft then
ShellExecute(Handle nil PChar(URLText) nil nil SW_SHOW);
end;
B.为了节约内存优化运行我们总是动态创建组件可当用完之后如果不及时彻底的将其从内存中清理出去那就有违我们的初衷了可怎么杀死所创建的组件? 比如创建了一个Edit控件现在想让它消失但用EditFree后调用EditText却仍然存在……我们知道光Free是不行的这只是将Edit所指向的内存空间释放了但是指针并没有设定为nil当调用EditText时Delphi仍然会根据Edit提供的指针访问已经释放的内存区域所以会产生Access Violation 错误所以我们需要在Free后Edit:=nil或者FreeAndNil(只在Delphi下有效)将指针nil掉才能保证以后的正常运行
C.将各控件的提示文本显示于状态行上这个可用Application的OnHint事件但由于Application为不可件对象因此可以采用如下方法
public
procedure DisplayHint(Sender: TObject); //声明一个方法用于显示提示文本
end;
procedure TFormDisplayHint(Sender: TObject); //实现部分
begin
StatusBarSimpleText := GetLongHint(ApplicationHint);
end;
procedure TFormFormCreate(Sender: TObject);
begin
ApplicationOnHint := DisplayHint;
end;
这样显示在状态栏里的文本和提示框(就是那个自动出现的黄色小框)里的是一样的如果想要在状态栏里的提示文本更加详细怎么办?其实只要控件的Hint属性这样写MyHint|Its just a MyHint!就可以让|前的内容显示在提示框(Help Hint box)里|的后面的内容显示在状态栏里了
D.ListView使用中的一些要点以下以一个两列的ListView为例
→增加一行
with ListVi