程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi開發經驗四則

Delphi開發經驗四則

編輯:Delphi

配置數據引擎(BDE、SQL Link)的簡單方法

在數據庫程序分發時,需要攜帶數據引擎(BDE、SQL Link),並且在客戶端安裝完程序後還需要配置數據引擎,如用戶名(username)、密碼(PassWord)等等。如果手工配置的話,工作量比較大,這時,我們可利用InstallShield For Delphi輕松實現配置。在用InstallShIEld For Delphi制作安裝程序時,在生成安裝程序的目錄裡有一個*.iwz的文本文件,只要在[IDAPI Alias]片段中手工加入即可。 例如:

[IDAPI Alias]

username=SYSDBA

passWord=masterkey

安裝程序後數據引擎自動配置完畢。

制做快速按鈕條的方法

快速按鈕條上的每一個圖形按鈕都代表著一項常用的功能,同時,這些圖形按鈕尺寸較普通的圖標大,可以放置更大、更形象的圖形,甚至可以帶上簡短的提示,這對於用戶執行最常用的功能很有幫助。基於上述原因,越來越多的Windows應用程序采用快速按鈕條來改善應用程序的界面。筆者在用Delphi編程時,采用了兩種不同的方法來實現快速按鈕條,本文結合制作一個具有兩組、共六個按鈕的快速按鈕條的實例,列出了這兩種方法的具體設計步驟。

1.組合生成法

(1)在窗體上放置一個Panel1對象,作為圖形按鈕的載體。

(2)設置Panel1的屬性Caption為空,屬性Align為alTop,調整其高度至合適尺寸。

(3)在Panel1上放置六個SpeedButton按鈕(選用SpeedButton,是因它具有浮動特性)。

(4)在Panel1上放置兩個Bevel對象,調整其位置和大小,用於分隔按鈕組。

(5)調整SpeedButton1的大小及在Panel1中的位置。

(6)選擇SpeedButton1,設置其屬性Flat為True。

(7)單擊SpeedButton1的屬性Glyph所對應的省略號小按鈕,打開PictureEditor窗口,選擇一個象征“查詢”的圖標。設置屬性ShowHint為True,屬性Hint為“查詢”。

(8)按步驟(5)至(7)的方法,分別設置好其余幾個SpeedButton按鈕的屬性。

這樣,一個快速按鈕條就制作完成了。運行時,快速按鈕均以浮動方式顯示,當鼠標移至其上時,即顯示按鈕外框,並顯示小提示。

2.借用ToolBar生成法

(1)在窗體上放置一個ToolBar1對象。

(2)設置ToolBar1的屬性EdgeBorders.ebLeft、ebTop、ebRight、ebButtom均為True;屬性Flat為True;調整ToolBar1的大小至合適尺寸。

(3)選擇ToolBar1,用右鍵點出快速選單,分別點擊NewButton和NewSeparator增加六個按鈕ToolButton和兩條分隔欄線。

(4)任意選擇一個ToolButton按鈕,調整其大小至合適尺寸,所有的ToolButton也同時被調整好。

(5)設置ToolBar1的屬性BorderWidth為3,以調整ToolButton的位置。

(6)在窗體上放置一個ImageList1對象,設置它的屬性Height和Width的數值,以適應較大尺寸的圖像。

(7)雙擊ImageList1,通過“Add”按鈕分別裝入六個圖像,與ToolBar1中的六個ToolButton一一對應。

(8)設置ToolBar1的屬性Images為ImageList1。

(9)設置六個ToolButton的屬性ShowHint為True,並分別設置各自的小提示屬性Hint。

(10)還可以設置ToolBar1的HotImages指定鼠標指向按鈕時的圖片集。

采用ToolBar實現的快速按鈕條在外觀上與第一種方法制作的類似。

以上兩種方法均能實現快速按鈕條,但各有千秋:第一種設計過程較為簡單;第二種方法則提供了更多的功能,如可用HotImages指定鼠標指向按鈕時的圖片集。讀者不妨從中選擇一種,並可繼續完善其功能。

建立臨時表的方法

數據輸入是開發數據庫程序的必然環節。在ClIEnt/Server結構中,客戶端可能要輸入一批數據後,再向服務器的後台數據庫提交,這就需要在本地(客戶端)建立臨時數據表來存儲用戶輸入的數據,待提交後,清除本地數據表。這種方法的好處是:提高輸入效率,減小網絡負擔。

由於用戶一次輸入的數據量一般情況下較小(不會超過幾百條記錄),所以臨時表可以建立在內存中,這樣處理速度較快。臨時表創建有如下兩種方法:

1.使用查詢控件創建臨時表

第1步:在窗體上放入查詢控件(TQuery),並設置好所連接的數據表。

第2步:添加如下語句:

TQuery. CachedUpdates=True;

TQuery. RequestLive=True。

第3步:在原有的SQL語句後加入一條Where子語句,要求加入這條Where子語句後SQL查詢結果為空。

例如:

SELECT Biolife."Species No", Category, Common_Name, Biolife."SpecIEs Name", Biolife."Length (cm)", Length_In, Notes, Graphic

FROM "biolife.db" Biolife

where Biolife.Category=′A′ and Biolife.Category=′B′

這樣臨時表就建立好了。

2.使用代碼創建臨時表

函數代碼如下:

function CreateTableInMemory(const AFieldDefs:TFIEldDefs):

TDataSet;

var TempTable:TClIEntDataSet;

begin

TempTable:=nil;

Result:=nil;

if AFIEldDefs〈〉nil then

begin

try

TempTable:=TClIEntDataSet.Create(Application);

TempTable.FieldDefs.Assign(AFIEldDefs);

TempTable.CreateDataSet;

Result:=(TempTable as TDataSet);

Except

if TempTable〈〉nil then TempTable.Free;

Result:=nil;

raise;

end

end

end;

在程序中按如下方法調用:

procedure TForm1.Button1Click(Sender: TObject);

var ADataSet:TDataSet;

begin

ADataSet:=TDataSet.Create(Self);

with ADataSet.FIEldDefs do

begin

Add(′Name′,ftString,30,False);

Add(′Value′,ftInteger,0,False);

end;

with DataSource1 do

begin

DataSet:=CreateTableInMemory(ADataSet.FIEldDefs);

DataSet.Open;

end;

ADataSet.Free;

end;

這樣,臨時表就創建完成。

方法1使用簡單,但由於利用了查詢控件,清空數據時需要查詢服務器後台數據庫,所以速度稍慢,而且不適用於臨時表中各個字段由幾個數據表的字段拼湊而成的情況。方法2適用范圍廣、速度快,但需要編寫代碼。

在InterBase數據庫中使用函數

程序員可能在用InterBase作為後台數據庫時,常會為其提供的函數過少而感到使用不便(只有四個),無法方便地編寫出復雜的存儲過程。InterBase本身無法編寫函數,但它可以使用外部函數(調用DLL中的函數)。下例中說明如何在InterBase 中聲明SUBSTR函數。

DECLARE EXTERNAL FUNCTION SUBSTR

CSTRING(80), SMALLINT, SMALLINT

RETURNS CSTRING(80)

ENTRY_POINT "IB_UDF_substr" MODULE_NAME "ib_udf"

其中:MODULE_NAME為DLL的名稱,ENTRY_POINT為函數名。

聲明後便可以使用,例如:

select SUBSTR(country)

from country

本例使用的是Delphi安裝時自帶的IBLocal數據庫,用戶也可以自己編寫函數來擴充InterBase。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved