==系統應用篇==
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工具欄下的Open
Open Project
Save
Save All
Undo
Redo
Debug工具欄下的Pause
Add Watch
Program Reset
Run
Desktop工具欄下的Save Current Desktop
Set Debug Desktop
Component Palette工具欄
設置窗口布局
為了能跟高效的編寫程序
合理的布置各個窗口是很重要的
我常用的窗口有
Object Inspector
Project 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 : 選擇當前選中組件的容器(通常是Panel
GroupBox或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 TForm
Mine;
begin
end;
==窗體操作篇==
在有多個窗體的程序中
Delphi默認是將它們在程序啟動時全部創建(只是都隱藏了
只顯示一個主窗體)
這樣
那些暫時不必要啟動的窗體就占用了許多內存空間
所以我們需要在菜單Project|Options
的Forms標簽頁下
將那些暫時不要啟動的窗體從
Auto
create forms
下轉移到
Available forms
中
這樣
這些窗體的創建和釋放就需要代碼來實現了
A.兩種創建窗體方法之比較
對於這些非自動創建的窗體
我們必須在Show之前Creat(Self)或Create(Application)
將其創建
如Form
Creat(Self)和Form
Create(Application)
可是
它們兩個到底有什麼區別呢?其實兩者區別不大
但如果Owner是屬於別的窗口或控件的話
當它的Owner被釋放的時候
該Owner所擁有的也會被釋放
關鍵的區別是由誰來管理該窗體的資源
用第一種方法創建
該窗體的資源由編程者來負責管理
用第二種方法創建
該窗體的資源由Application來管理
B.幾種窗體的釋放方法
既然是為了節約內存
那麼用完了的窗體就應該
搬出
內存
在這裡我列舉幾個大同小異的方法
(
)
procedure TForm
Button
Click(Sender :TObject);
begin
if Form
= nil then
Form
:=TForm
Create(Application);
Form
ShowModal;
end;
procedure TForm
close(Sender: TObject; var Action: TCloseAction);
begin
ModalResult := mrNone;
Action := caFree;
Form
:= nil;
end;
(
)
procedure TForm
Button
Click(Sender :TObject);
begin
if not Assigned(Form
) then
begin
Application
CreateForm(TForm
Form
);
try
Form
ShowModal;
finally
Form
Free;
Form
:= nil;
end;
end
else
Form
ShowModal;
end;
(
)
procedure TForm
Button
Click(Sender :TObject);
begin
Form
Close;
Form
Release;
end;
==控件使用篇==
A.大名鼎鼎的RXLib控件包是由三位俄羅斯高手編寫的
非常的出色!不過
內容太多了
要用好也不容易
我在此拿RxRichEdit簡單地說幾點
好多人都問RxLib怎麼安裝
似乎的確有點復雜
呵呵
所以我也順便說一下
運行rxinst
exe將RxLib先安裝到\Program Files\Borland\Delphi
(或
)\RX文件夾下
然後打開Delphi
選File\Open
將RXCTL
DPK
RXDB
DPK
RXBDE
DPK分別打開後按compile
繼續打開
DCLRX
DPK
DCLRXDB
DPK和DCLRXBD
DPK
將這三個分別按compile後按install就可以了:
)
?AllowObjects屬性
Win
下默認設置為True
右鍵菜單沒有問題
但設為False時快捷菜單會連續出現兩次
Win
下
設為True時會使右鍵菜單無法彈出
而False時卻顯示正常
所以
為了系統的兼容性
需要判斷當前OS版本
procedure TFormMain
FormCreate(Sender: TObject);
var
OSVI:OSVERSIONINFO;
begin
OSVI
dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(OSVI);
case OSVI
dwPlatformId of
:RxRichEdit
AllowObjects:=true;
:RxRichEdit
AllowObjects:=false;
end;
end;
但我不知這個屬性為什麼會有這麼一個問題
還望高手指點
?OnURLClick事件
RXRichEdit有自動將網頁地址轉為超鏈接格式
但具體的行為還是要自己寫代碼的
不然這些地址就成了個空殼了
procedure TFormMain
RXRichEdit
URLClick(Sender: TObject; const URLText: String; Button: TMouseButton);
begin
if Button = mbLeft then
ShellExecute(Handle
nil
PChar(URLText)
nil
nil
SW_SHOW);
end;
B.為了節約內存
優化運行
我們總是動態創建組件
可當用完之後
如果不及時徹底的將其從內存中清理出去
那就有違我們的初衷了
可怎麼
殺死
所創建的組件? 比如創建了一個Edit控件
現在想讓它消失
但用Edit
Free後
調用Edit
Text卻仍然存在……我們知道
光Free是不行的
這只是將Edit所指向的內存空間釋放了
但是指針並沒有設定為nil
當調用Edit
Text時
Delphi仍然會根據Edit提供的指針訪問已經釋放的內存區域
所以會產生Access Violation
錯誤
所以我們需要在Free後Edit:=nil或者FreeAndNil(只在Delphi
下有效)將指針nil掉
才能保證以後的正常運行
C.將各控件的提示文本顯示於狀態行上
這個可用Application的OnHint事件
但由於Application為不可件對象
因此可以采用如下方法
public
procedure DisplayHint(Sender: TObject); //聲明一個方法用於顯示提示文本
end;
procedure TForm
DisplayHint(Sender: TObject); //實現部分
begin
StatusBar
SimpleText := GetLongHint(Application
Hint);
end;
procedure TForm
FormCreate(Sender: TObject);
begin
Application
OnHint := DisplayHint;
end;
這樣顯示在狀態欄裡的文本和提示框(就是那個自動出現的黃色小框)裡的是一樣的
如果想要在狀態欄裡的提示文本更加詳細怎麼辦?其實
只要控件的Hint屬性這樣寫
MyHint|It
s just a MyHint!
就可以讓
|
前的內容顯示在提示框(Help Hint box)裡
|
的後面的內容顯示在狀態欄裡了
D.ListView使用中的一些要點
以下以一個兩列的ListView為例
→增加一行
with ListVi
From:http://tw.wingwit.com/Article/program/Delphi/201311/8398.html