熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi開發經驗四則

2013-11-11 21:06:35  來源: Delphi編程 

  配置數據引擎(BDESQL Link)的簡單方法

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

  [IDAPI Alias]

  username=SYSDBA

  password=masterkey

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

  制做快速按鈕條的方法

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

  組合生成法

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

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

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

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

  ()調整SpeedButton的大小及在Panel中的位置

  ()選擇SpeedButton設置其屬性Flat為True

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

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

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

  借用ToolBar生成法

  ()在窗體上放置一個ToolBar對象

  ()設置ToolBar的屬性EdgeBordersebLeftebTopebRightebButtom均為True屬性Flat為True;調整ToolBar的大小至合適尺寸

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

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

  ()設置ToolBar的屬性BorderWidth為以調整ToolButton的位置

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

  ()雙擊ImageList通過Add按鈕分別裝入六個圖像與ToolBar中的六個ToolButton一一對應

  ()設置ToolBar的屬性Images為ImageList

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

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

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

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

  建立臨時表的方法

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

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

  使用查詢控件創建臨時表

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

  第添加如下語句

  TQuery CachedUpdates=True;

  TQuery RequestLive=True

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

  例如

  SELECT BiolifeSpecies No Category Common_Name BiolifeSpecies Name BiolifeLength (cm) Length_In Notes Graphic

  FROM biolifedb Biolife

  where BiolifeCategory=′A′ and BiolifeCategory=′B′

  這樣臨時表就建立好了

  使用代碼創建臨時表

  函數代碼如下

  function CreateTableInMemory(const AFieldDefs:TFieldDefs):

  TDataSet;

  var TempTable:TClientDataSet;

  begin

  TempTable:=nil;

  Result:=nil;

  if AFieldDefs〈〉nil then

  begin

  try

  TempTable:=TClientDataSetCreate(Application);

  TempTableFieldDefsAssign(AFieldDefs);

  TempTableCreateDataSet;

  Result:=(TempTable as TDataSet);

  Except

  if TempTable〈〉nil then TempTableFree;

  Result:=nil;

  raise;

  end

  end

  end;

  在程序中按如下方法調用

  procedure TFormButtonClick(Sender: TObject);

  var ADataSet:TDataSet;

  begin

  ADataSet:=TDataSetCreate(Self);

  with ADataSetFieldDefs do

  begin

  Add(′Name′ftStringFalse);

  Add(′Value′ftIntegerFalse);

  end;

  with DataSource do

  begin

  DataSet:=CreateTableInMemory(ADataSetFieldDefs);

  DataSetOpen;

  end;

  ADataSetFree;

  end;

  這樣臨時表就創建完成

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

  在InterBase數據庫中使用函數

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

  DECLARE EXTERNAL FUNCTION SUBSTR

  CSTRING() SMALLINT SMALLINT

  RETURNS CSTRING()

  ENTRY_POINT IB_UDF_substr MODULE_NAME ib_udf

  其中MODULE_NAME為DLL的名稱ENTRY_POINT為函數名

  聲明後便可以使用例如

  select SUBSTR(country)

  from country


From:http://tw.wingwit.com/Article/program/Delphi/201311/8519.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.