乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      『Delphi園地』

       容心居 2020-03-22
      Delphi編程代碼規(guī)范 日期:2006-02-20 作者: 人氣:5490 查看:[大字體 中字體 小字體]

      1. 一般的源代碼格式規(guī)則 2
      1.1 縮進 2
      1.2 空格 2
      1.3 邊距 2
      1.4 顏色及文字屬性 2
      1.5 begin···end 2
      2. OBJECT PASCAL 3
      2.1 括號 3
      2.2 保留字和關(guān)鍵字 3
      2.3 過程和函數(shù)(例程) 3
      2.4 變量 4
      2.5 常量(const) 5
      2.6 資源串(resourcestring) 5
      2.7 類型 5
      2.8 構(gòu)造類型 6
      2.9 語句 6
      2.10 結(jié)構(gòu)化異常處理 8
      2.11 類 8
      3. 文件 10
      3.1 項目文件 10
      3.2 Form文件 10
      3.3 數(shù)據(jù)模塊文件 10
      3.4 遠程數(shù)據(jù)模塊文件 10
      3.5 單元文件 10
      3.6 文件頭 11
      3.7 函數(shù)或過程頭格式如下 11
      4. Form與數(shù)據(jù)模塊 12
      4.1 Form 12
      4.2 數(shù)據(jù)模塊 13
      5. 包 14
      5.1 運行期包與設(shè)計期包 14
      5.2 文件命名標準 14
      6. 元件 14
      6.1 自定義的元件 14
      6.2 元件實例的命名規(guī)則 15
      6.3 元件性質(zhì)標識名 15
      6.4 元件的前綴 15


      1. 一般的源代碼格式規(guī)則
      1.1 縮進
      縮進就是每級間有兩個空格。不要在源代碼中保存制表符。這是因為,制表符的寬度隨著不同的用戶設(shè)置和代碼管理實用程序(打印、文檔及版本控制等)而不同。
      通過使用Tools | Editor Options菜單,在Editor Properties對話框的General頁上,不要選中Use tab Character和Optimal Fill復(fù)選框,這樣,制表符就不會被保存。
      1.2 空格
      遇到如下情況,需要添加空格:
      1) 逗號的后面;
      2) 冒號的后面;
      3) 等號的前后;
      4) 賦值號的前后
      5) 運算符(+、-、*、/)的前后。
      1.3 邊距
      邊距設(shè)置為80個字符。源代碼一般不會因?qū)懸粋€單詞而超過邊距,但本規(guī)則比較靈活。只要可能,長度超過一行的語句應(yīng)當用逗號或運算符換行。換行后,應(yīng)縮進兩個字符。
      1.4 顏色及文字屬性
      通過使用Tools | Editor Options菜單,在Editor Properties對話框的Color頁上,設(shè)置相應(yīng)元素的顏色及文字屬性。其中:
      注釋(Comment): 斜體深綠色
      保留字(Reserved word): 粗體天藍色
      字符串(String): 普通洋紅色
      數(shù)值(Number): 普通紅色
      其他元素取Delphi IDE缺省設(shè)置。
      1.5 begin···end
      begin語句必須單獨占一行,例如,下面第一行是錯誤的,而第二行正確:
      for i := 0 to l0 do begin // 錯, begin與for在同一行
      for i := 0 to 10 do // 對, begin在另外一行中
      begin
      end;

      本規(guī)則的一個特殊情況是,當begin為else語句的一部分時,例如:

      if some statement = then
      begin
      ...
      end
      else begin
      SomeOtherStatement;
      end;

      end語句總是單獨一行。
      當begin不為else語句的一部分時,相應(yīng)的end語句與begin語句的縮進量相同。
      2. OBJECT PASCAL
      2.1 括號
      在左括號與下一個字符之間沒有空格。同樣,右括號與前一字符間也沒有空格。下面的例于演示了正確與不正確的空格。

      CallProc( AParameter ); // 錯!
      CallProc(AParameter); // 正確!

      不要在語句中包含多余的括號。在源代碼中,括號只有在確實需要時才使用。下面的例子演示了正確與不正確用法:
      if (i = 42) then // 錯,括號是多余的
      if (i = 42)or (j = 42) then // 正確,必須使用括號
      2.2 保留字和關(guān)鍵字
      Object Pascal語言的保留字和關(guān)鍵字總是全部小寫。
      2.3 過程和函數(shù)(例程)
      2.3.1 命名與格式
      ■ 例程名應(yīng)當以大寫字母開始,且大小寫交錯以增加可讀性。
      下面是一個不正確的寫法:
      procedure thisisapoorlyformattedroutinename;
      改成這樣寫就對了:
      procedure ThisIsMuchMoreReadableRoutineName;
      ■ 例程名應(yīng)當有意義。進行一個動作的例程最好在名稱前加上表示動作的動詞為前綴。
      例如:
      procedure FormatHardDrive;
      ■ 設(shè)置輸入?yún)?shù)值的例程名應(yīng)當以Set為其前綴,例如:
      procedure SetUserName;
      ■ 獲取數(shù)值的例程名應(yīng)當以Get為其前綴,例如:
      function GetUserName: string;
      2.3.2 形參
      ■ 格式
      只要可能,同一類型的形參應(yīng)當歸并在一起:
      procedureFoo(Param1, Param2,Param3: Integer; Param4: string);
      ■ 命名
      所有形參的名稱都應(yīng)當表達出它的用途。如果合適的話,形參的名稱最好以字母A為前綴,例如:
      procedure SomeProc(AuserName: string; AuserAge: integer);
      當參數(shù)名與類的特性或字段同名時,前綴A就有必要了。
      ■ 參數(shù)順序
      形參的順序主要要考慮寄存器調(diào)用規(guī)則。
      最常用的參數(shù)應(yīng)當作為第一個參數(shù),按使用頻率依次從左到右排。
      輸入?yún)?shù)位于輸出參數(shù)之前。
      范圍大的參數(shù)應(yīng)當放在范圍小的參數(shù)之前。例如:
      SomeProc(AP1anet, AContinent, ACountry, AState, ACity);
      有些則例外。例如,在事件處理句柄中,TObject類型的Sender參數(shù)往往是第一個要傳遞的參數(shù)。
      ■ 常量參數(shù)
      要使記錄、數(shù)組、短字符串或接口類型的參數(shù)不能被例程修改,就應(yīng)當把形參標以const。這樣,編譯器將以最有效的方式生成代碼,保證傳遞的參數(shù)不可變。
      如果其他類型的參數(shù)希望不被例程所修改,也可以標上const。盡管這對效率沒有影響,但這給例程的調(diào)用者帶來了更多的信息。
      ■ 命名沖突
      當兩個單元中含有相同名稱的例程時,如果調(diào)用該例程,實際被調(diào)用的是uses子句中最后出現(xiàn)的那個單元中的例程。為避免這種情況,可在方法名前加想要的單元名,例如:
      SysUtils.FindClose(SR);

      Windows.FindClose(Handle)
      2.4 變量
      2.4.1 變量的命名與格式
      變量的名稱應(yīng)當能夠表達出它的用途。
      循環(huán)控制變量常常為單個字母,諸如I、J或K。也可以使用更有意義的名稱,例如UserIndex。布爾變量名必須能清楚表示出True和False值的意義。
      2.4.2 局部變量
      局部變量用于例程內(nèi)部,遵循其他變量的命名規(guī)則。
      局部變量加前綴l_(循環(huán)控制變量除外),如l_UserName。
      如果需要的話,應(yīng)當在例程的入口處立即初始化變量。局部的AnsiString類型的變量自動被初始化為空字符串,局部的接口和調(diào)度接口類型的變量自動被初始化為nil,局部的Variant和OleVariant類型的變量自動被初始化為Unassigned。
      2.4.3 全局變量
      一般不鼓勵使用全局變量。不過,有時候需要用到。即使如此,也應(yīng)當把全局變量限制在需要的環(huán)境中。例如,一個全局變量可能只在單元的Implementation部分是全局的。
      全局數(shù)據(jù)如果將由許多單元使用,就應(yīng)移動到一個公用單元里被所有對象使用。
      全局數(shù)據(jù)可在聲明時直接初始化為一個值。注意,所有全局變量自動進行零初始化,因此,不要將全局變量初始化為諸如0、nil、’’或Unassigned等空值。零初始化的全局變量在.EXE文件中不占空間。零初始化的數(shù)據(jù)保存在虛擬的數(shù)據(jù)段中,而虛擬數(shù)據(jù)段只在應(yīng)用程序啟動時才分配內(nèi)存。非零初始化的全局數(shù)據(jù)則在.EXE文件中占空間。
      2.5 常量(const)
      常量的命名應(yīng)當能夠表達出它的用途。
      如果有類別,該類別的所有常量加前綴,前綴為類別縮寫的小寫字母;例如:對于文件打開方式(File Open Modes),定義常量:
      fmOpenRead = $0000;
      fmOpenWrite = $0001;
      如果無類別,常量的前綴為con。例如:conProductName = ‘GBG2000’;
      2.6 資源串(resourcestring)
      如果在模塊中有提示信息類的字符串,把該字符串定義為資源串。
      資源串的命名應(yīng)當能夠表達出它的用途。
      如果有類別,該類別的所有資源串加前綴,前綴為類別縮寫的小寫字母,同常量定義。
      如果無類別,資源串的前綴為rs。例如:rsFileOpenError = ‘文件打開失敗 !’;
      2.7 類型
      2.7.1 大小寫規(guī)則
      類型標識符是保留字,應(yīng)當全部小寫。Win32 API類型常常全部大寫,并且遵循諸如Windows.pas或其他API單元中關(guān)于特定類型名的規(guī)則。對于其他變量名,第一個字母應(yīng)大寫,其他字母則大小寫交錯。
      下面是一些例子:
      var
      Mytring: string; // 保留字
      WindowsHandle: HWND; // Win32 API 類型
      i: Integer; // 在System單元中介紹的類型標識
      2.7.2 浮點型
      不鼓勵使用Real類型,因為它只是為了與老的Pascal代碼兼容而保留的。通常情況下對于浮點數(shù)應(yīng)當使用Double。Double可被處理器優(yōu)化,是IEEE定義的標準的數(shù)據(jù)格式。當需要比Double提供的范圍更大時,可以使用Extend。Extend是Intel專用的類型,Java不支持。當浮點變量的物理字節(jié)數(shù)很重要時(可能使用其他語言編寫的DLL),則應(yīng)當使用Single。
      2.7.3 枚舉型
      枚舉類型名必須代表枚舉的用途。名稱前要加T字符作為前綴,表示這是個數(shù)據(jù)類型。枚舉類型的標識符列表的前綴應(yīng)包含2~3個小寫字符,來彼此關(guān)聯(lián)。例如:
      TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMeta1, stRB);
      枚舉類型的變量實例的名稱與類型相同,但沒有前綴T,除非為了給變量一個更加特殊的名稱,諸如FavoriteSongType1、FavoriteSongType2等。
      2.7.4 Variant和OleVariant
      一般不建議使用Variant和OleVariant。但是,當數(shù)據(jù)類型只有在運行期才知道時(常常是在COM和數(shù)據(jù)庫應(yīng)用程序中),這兩個類型對編程就有必要。當進行諸如Automation、ActiveX控件的COM編程時,應(yīng)當使用0leVariant;而對于非COM編程,則應(yīng)當使用Variant。這是因為,Variant能夠有效地保存Delphi的原生字符串,而OleVariant則將所有字符串轉(zhuǎn)換為OLE字符串(即WideChar字符串),且沒有引用計數(shù)功能。
      2.8 構(gòu)造類型
      2.8.1 數(shù)組類型
      數(shù)組類型名應(yīng)表達出該數(shù)組的用途。類型名必須加字母T為前綴。如果要聲明一個指向數(shù)組類型的指針,則必須加字母P為前綴,且聲明在類型聲明之前。例如:
      type
      PCycleArray = ^TCycleArray;
      TCycleArray = array[1..100] of integer;
      實際上,數(shù)組類型的變量實例與類型名稱相同,但沒有T前綴。
      2.8.2 記錄類型
      記錄類型名應(yīng)表達出記錄的用途。類型名必須加字母T為前綴。如果要聲明一個指向記錄類型的指計,則必須加字母P為前綴,且其聲明在類型聲明之前。例如:
      type
      PEmployee = ^TEmployee;
      TEmployee = record
      EmployeeName: string;
      EmployeeRate: Double;
      end;
      2.9 語句
      2.9.1 if語句
      在if/then/else語句中,最有可能執(zhí)行的情況應(yīng)放在then子句中,不太可能的情況放在else子句中。
      為了避免出現(xiàn)許多if語句,可以使用case語句代替。
      如果多于5級,不要使用if語句。請改用更清楚的方法。
      不要在if語句中使用多余的括號。
      如果在if語句中有多個條件要測試,應(yīng)按照計算的復(fù)雜程度從右向左排。這樣,可以使代碼充分利用編譯器的短路估算邏輯。例如,如果Conditionl比Condition2快,Condition2比Condition3快,則if語句應(yīng)這樣構(gòu)造:
      if Condition1 and Condition2 and Condition3 then
      如果無else子句且執(zhí)行語句只有一句,該執(zhí)行語句寫在then后,例如:
      if Condition then do some thing;
      2.9.2 case語句
      ■ 概述
      case語句中每種情況常量應(yīng)當按數(shù)字或字母的順序排列。
      每種情況的動作語句應(yīng)當簡短且通常不超過4~5行代碼。如果動作太復(fù)雜,應(yīng)將代碼單獨放在一個過程或函數(shù)中。
      case語句的else子句只用于默認情況或錯誤檢測。
      ■ 格式
      case語句遵循其他一般的縮進和命名規(guī)則。
      2.9.3 while語句
      建議不要使用Exit過程來退出whi1e循環(huán)。如果需要的話,應(yīng)當使用循環(huán)條件退出循環(huán)。
      所有對while循環(huán)進行初始化的代碼應(yīng)當位于while入口前,且不要被無關(guān)的語句隔開。
      2.9.4 for語句
      如果循環(huán)次數(shù)是確定的,應(yīng)當用for語句代替while語句。
      2.9.5 repeat語句
      repeat語句類似于while循環(huán),且遵循同樣的規(guī)則。
      2.9.6 with語句
      ■ 概述
      with語句應(yīng)小心使用。要避免過度使with語句,尤其是在with語句中使用多個對象或記錄。例如:
      with Record1, Record2 do
      這些情況很容易迷惑編程人員,且導(dǎo)致檢測bug困難。
      ■ 格式
      with語句也遵循本章關(guān)于命名和縮進的規(guī)則。
      2.10 結(jié)構(gòu)化異常處理
      2.10.1 概述
      異常處理主要用于糾正錯誤和保護資源。這意味著,凡是分配資源的地方,都必須使用:try…finally來保證資源得到釋放。不過,如果是在單元的initialization/finalization部分或者對象的構(gòu)造/析構(gòu)中來分配/釋放資源則例外。
      2.10.2 try…final1y的用法
      可能的情況,每個資源分配應(yīng)當與:try…finally結(jié)構(gòu)匹配。例如,下面代碼可能導(dǎo)致錯誤:
      SomeClassl := TSomeClass.Create;
      SomeClass2 := TSomeClass.Create;
      try
      {do some code}
      finally
      SomeClass1.Free;
      SomeClass2.Free;
      end;
      上述資源分配的一個安全途徑是:
      SomeClass1 := TSomeClass.Create;
      try
      SomeClass2 := TSomeClass.Create;
      try
      {do some code}
      finally
      SomeClass2.Free;
      end;
      finally
      SomeClass1.Free;
      end;
      2.10.3 try…except的用法
      如果您希望在發(fā)生異常時執(zhí)行一些任務(wù),可以使用try…except。通常,沒有必要為了簡單地顯示一個錯誤信息而使用try…except,因為Application對象能夠自動根據(jù)上下文做到這一點。如果要在except子句中激活默認的異常處理,可以再次觸發(fā)異常。
      2.10.4 try…except…else的用法
      不鼓勵使用帶else子句的try…except,因為這將阻塞所有的異常,包括您沒有準備的異常。
      2.11 類
      2.11.1 命名與格式
      類的名稱應(yīng)當表達出類的用途。類名前要加字母T,表示它是一個類型。例如:
      type
      TCustomer = class(TObject);
      類的實例名稱與類名相同,只不過沒有前綴T。
      var
      Customer: TCustomer;
      注意:關(guān)于元件的命名,請參閱“元件類型命名標準”部分。
      2.11.2 字段
      ■ 命名與格式
      字段的命名遵循與變量相同的規(guī)則,只不過要加前綴F,表示這是字段。
      ■ 可見性
      所有字段必須為私有。如果要在類的作用域之外訪問字段,可借助于類的特性來實現(xiàn)。
      2.11.3 方法
      ■ 命名與格式
      方法的命名遵循與過程和函數(shù)相同的規(guī)則。
      ■ 靜態(tài)方法
      當您不希望一個方法被派生類重載時,應(yīng)當使用靜態(tài)方法。
      ■ 虛擬方法與動態(tài)方法
      當您希望一個方法能被派生類重載,應(yīng)當使用虛擬方法。如果類的方法要被多個派生類直接或間接地使用,則應(yīng)當用動態(tài)方法。例如,某一個類含有一個被頻繁重載的方法,并有100個派生類,則應(yīng)將方法定義為動態(tài)的,這樣,可以減少內(nèi)存的開銷。
      ■ 抽象方法
      如果一個類要創(chuàng)建實例,則不要使用抽象方法。抽象方法只能在那些從不創(chuàng)建實例的基類中使用。
      ■ 特性訪問方法
      所有特性訪問方法應(yīng)當定義在類的私有或保護部分。
      特性訪問方法遵循與過程和函數(shù)相同的規(guī)則。用于讀的方法應(yīng)當加Get前綴,用于寫的方法應(yīng)當加Set前綴,并且有一個叫Value的參數(shù),其類型與特性的類型相同。例如:
      TSomeClass = class(TObject);
      private
      FSomeField: Integer;
      protected
      function GetSomeField: Integer;
      procedure SetSomeField(Value: Integer);
      public
      property SomeField: Integer read GetSomeField write SetSomeField;
      end;
      2.11.4 特性
      特性作為私有字段的訪問器,遵循與字段相同的命名規(guī)則,只不過沒有F前綴。
      特性名應(yīng)為名詞,而不是動詞。特性是數(shù)據(jù),而方法是動作。
      數(shù)組特性名應(yīng)當是復(fù)數(shù),而一般的特性應(yīng)當是單數(shù)。
      2.11.5 訪問方法的使用
      盡管不是必須,但還是建議您使用寫訪問方法來訪問代表私有字段的特性。
      3. 文件
      3.1 項目文件
      項目文件的名稱應(yīng)當具有描述意義。例如,“The Delphi 4 Developer’s Guide Bug Manager”的項目名稱為DDGBugs.dpr,一個系統(tǒng)信息程序的名稱為SysInfo.dpr。
      3.2 Form文件
      Form文件的名稱應(yīng)當表達出Form的用途,且具有Frm后綴。例如,About的文件名叫AboutFrm,主Form的文件名叫MainFrm。
      3.3 數(shù)據(jù)模塊文件
      數(shù)據(jù)模塊文件的名稱應(yīng)當表達出數(shù)據(jù)模塊的作用,且具有DM后綴。例如,Customers數(shù)據(jù)模塊的文件名叫CustomersDM.dfm。
      3.4 遠程數(shù)據(jù)模塊文件
      遠程數(shù)據(jù)模塊文件的名稱應(yīng)當表達出遠程數(shù)據(jù)模塊的用途。名稱后要加RDM后綴。例如,Customers遠程數(shù)據(jù)模塊的文件叫CustomersRDM.dfm。
      3.5 單元文件
      3.5.1 普通單元的結(jié)構(gòu)
      ■ 單元名
      單元的名稱應(yīng)當有描述性。例如,應(yīng)用程序的主Form單元叫MainFrm.pas。
      ■ Uses子句
      Interface部分的Uses子句應(yīng)當只包含該部分需要的單元。不要包含可能由Delphi自動添加的單元名。
      Implementation部分的Uses子句應(yīng)當只包含在該部分需要的單元,不要有多余的單元。
      ■ Interface部分
      Interface部分應(yīng)當只包含需要被外部單元訪問的類型、變量、過程與函數(shù)的聲明。而且,這些聲明應(yīng)當在Implementation部分之前。
      ■ Implementation部分
      Implementation部分包括本單元私有的類型、變量、過程與函數(shù)的聲明。
      ■ Initialization部分
      不要在單元的Initialization部分放置花費時間很多的代碼。否則,將導(dǎo)致應(yīng)用程序啟動時顯得很慢。
      ■ Finalization部分
      確保釋放所有在Initialization部分中分配的資源。
      3.5.2 Form單元
      Form單元文件的名稱與相應(yīng)的Form名稱相同。例如:About的單元名稱叫AboutFrm.pas。主From的單元文件名稱叫為MainFrm.pas。
      3.5.3 數(shù)據(jù)模塊單元
      數(shù)據(jù)模塊單元文件的名稱與相應(yīng)的數(shù)據(jù)模塊名稱相同。例如,Customers數(shù)據(jù)模單元的名稱叫CustomersDM.pas。
      3.5.4 通用的單元
      通用單元的名稱應(yīng)當表達出它的用途。例如,一個實用工具單元的名稱叫ugUtilities.pas,包含全局變量的單元名稱叫CustomerGlobals.pas。
      注意,一個項目中單元名稱必須是唯一的。
      3.5.5 元件單元
      元件單元應(yīng)放在單獨的路徑中,以區(qū)別于定義元件的單元。它們一般與項目不放在同一路徑下。單元文件名稱應(yīng)表達出其內(nèi)容。
      注意,有關(guān)元件命名標準的更多信息,請參閱“自定義元件”部分。
      3.6 文件頭
      所有源文件和項目文件都應(yīng)具有文件頭。一個正確的文件頭應(yīng)包含以下信息:
      //////////////////////////////////////////////////////////////////////(80 chars)// 創(chuàng)建:Tujh010618 (創(chuàng)建信息:創(chuàng)建者、創(chuàng)建日期)
      // 版權(quán):邁特安 (版權(quán))
      // 功能: (本文件的主要功能)
      // 函數(shù): (主要函數(shù)和過程;可?。?br>//////////////////////////////////////////////////////////////////////
      3.7 函數(shù)或過程頭格式如下
      //////////////////////////////////////////////////////////////////////
      // 創(chuàng)建:Tujh010618 (創(chuàng)建信息:創(chuàng)建者、創(chuàng)建日期)
      // 功能:…… (本函數(shù)或過程的主要功能)
      // 參數(shù):Param1-……
      // Param2-(out) …… (out表示輸出參數(shù))
      // 返回:…… (類型、值)
      // 說明:…… (備注信息、調(diào)用方法、初始化數(shù)值等)
      //////////////////////////////////////////////////////////////////////
      4. Form與數(shù)據(jù)模塊
      4.1 Form
      4.1.1 Form類型的命名標準
      Form類型的名稱應(yīng)當表達出Form的用途,且要加T為前綴,后跟描述性名,最后是Form。例如,About的類型名稱為:
      TAboutForm = class(TForm)
      主frm的類型名稱為:
      TMainForm = class(TForm)
      客戶登錄Form的類型名稱為:
      TCustomerEntryForm = class(TForm)
      4.1.2 Form實例的命名標準
      Form實例的名稱與相應(yīng)的類型名稱相同,但沒有前綴T。例如,前面提到的Form類與Form實例的名稱為:
      類型名 實例名
      ---------------------------------------------------------------------------
      TAboutFo rm AboutForm
      TMainForm MainForm
      TCustomerEntryForm CustomerEntryForm
      4.1.3 自動創(chuàng)建的Form
      除非特別原因,只有主Form才自動生成。其他所有Form必須從Project Options對話框的自動生成列表中刪除。更進一步的信息,請參閱后面幾節(jié)。
      4.1.4 模式Form實例化函數(shù)
      所有Form單元都應(yīng)當含有實例化函數(shù),用于創(chuàng)建、設(shè)置、模式顯示和釋放Form。這個函數(shù)將返回由Form返回的模式結(jié)果。傳遞給這個函數(shù)的參數(shù)遵循“參數(shù)傳遞”的規(guī)則。之所以要這樣封裝,是為了便于代碼的重用和維護。
      Form的變量應(yīng)當從單元中移走,改在實例化函數(shù)中作為局部變量定義。注意,這要求從Project Options對話框的自動生成列表中移走該Form。
      例如,下面的單元文件演示了GetUserData的實例化函數(shù)。
      unit UserDataFrm;
      interface
      uses
      Windows, Messages, SysUtils, C1asses, Graphics, Controls, Forms, Dialogs, StdCtrls;
      type
      TUserDataForm = class(TForm)
      edtUserName: TEdit;
      edtUserID: TEdit;
      private
      {Private declarations}
      public
      {Public declarations}
      end;
      function GetUserData(var aUserName: String; var aUserID: Integer): Word;
      implementation
      {$R*.DFM}
      function GetUserData(var aUserName: String; var aUserID: Integ): Word;
      var
      UserDataForm: TUserDataFrom;
      begin
      UserDataForm := TUserDataForm.Create(Application);
      try
      UserDataForm.Caption := ’Getting User Data’;
      Result := UserDataForm.ShowModal;
      if Result = mrOK then
      begin
      aUserName := UserDataForm.edtUserName.Text;
      aUserID := StrToInt(UserDataForm.edtUserName.Text);
      end;
      finally
      UserDataForm.Free;
      end;
      end;
      end.
      4.2 數(shù)據(jù)模塊
      4.2.1 數(shù)據(jù)模塊的命名標準
      數(shù)據(jù)模塊類型名稱應(yīng)表達出它的用途,且要加前綴T ,后跟描述性名稱,最后是DataModule。例如,Customer數(shù)據(jù)模塊的類型名稱為:
      TCustomerDataModule = class(TDataModule);
      Orders數(shù)據(jù)模塊的類型名稱為:
      TOrderDataModule = class(TDataModule);
      4.2.2 數(shù)據(jù)模塊實例的命名標準
      數(shù)據(jù)模塊實例的名稱應(yīng)當與相應(yīng)的類型名稱相同,但沒有前綴T。例如,前面的數(shù)據(jù)模塊類型、實例名稱如下:
      類型名稱 實例名
      ---------------------------------------------------------------------------
      TCustomerDataModule CustomerDataModule
      TOrderDataModule OrderDataModule
      5. 包
      5.1 運行期包與設(shè)計期包
      運行期包中應(yīng)當只包含所需要的單元。那些特性編輯器和元件編輯器的單元應(yīng)當放在設(shè)計期包中。注冊單元也應(yīng)當放在設(shè)計期包中。
      5.2 文件命名標準
      包的命名遵循下列模式:
      iiilibvv.pkg -- 設(shè)計期包
      iiistdvv.pkg -- 運行期包
      其中:
      iii代表一個3字符的前綴,用于標識公司、個人或其他需要標識的事情。
      vv代表包的版本號,其中也包含了De1phi的版本號。
      注意:包名稱中的lib或std 分別表示這是設(shè)計期包或運行期包。例如,《De1phi 5開發(fā)大全》中的包是這樣命名的:
      ddgLib50.pkg -- 設(shè)計期包
      ddgStd50.pkg -- 運行期包
      6. 元件
      6.1 自定義的元件
      6.1.1 元件類型的命名標準
      元件的命名與類的命名類似,只不過它有3個字符的前綴。這些前綴用以標識公司、個人或其他實體。例如,一個時鐘元件可以這樣聲明:
      TddgClock = class(TComponent)
      注意,作為前綴的3個字符要小寫。
      6.1.2 元件單元
      元件單元只能含有一個主要元件,這是指出現(xiàn)在元件選項板上的元件。其他輔助性的元件或?qū)ο笠部梢园谕粏卧小?br>6.1.3 注冊單元
      元件的注冊過程應(yīng)當從元件單元中移走,放在一個單獨的單元中。這個注冊單元用于注冊所有元件、特性編輯器、元件編輯器、向?qū)У取?br>元件注冊應(yīng)當在設(shè)計期包中進行。因此,注冊單元應(yīng)當包含在設(shè)計期包而不是運行期包中。建議注冊單元這樣命名:
      xxxReg.pas
      其中,xxx為3個字符前綴,以標識公司、個人或其他實體。例如,命名為ddgReg.Pas。
      6.2 元件實例的命名規(guī)則
      元件的名稱應(yīng)當具有描述性。Delphi沒有為元件指定默認的名稱。元件應(yīng)當有一個小寫的前綴以表明其類型,這是為了便于在Object Inspector和Code Explorer中查找元件。
      元件類型前綴是元件類型名變化而成的。下面的規(guī)則說明如何定義一個元件類型前綴:
      1) 從元件類型名中移去T 前綴。例如TButton變成Button。
      2) 除了第一個元音,刪去所有元音字母。例如,Button變成Bttn,Edit變成Edt 。
      3) 壓縮雙字母。例如,Bttn變成Btn。
      4) 如發(fā)生沖突,則在某一元件前綴中加入一個元音。例如在TBatton元件的前綴中加入元音變?yōu)閎atn,以區(qū)別TButton的前綴。
      6.3 元件性質(zhì)標識名
      元件性質(zhì)標識名是元件意圖的描述。例如,一個用于關(guān)閉窗體的TButton元件可命名為btnClose。一個編輯人名的元件可命名為edtFirstName。
      6.4 元件的前綴
      下面是Delphi5 標準元件的前綴。
      6.4.1 standard頁
      前綴 元件
      mm TMainMenu
      pm TPopupMenu
      mmi TMainMenuItem
      pmi TPopupMenuItem
      fm TFrame
      lbl TLabel
      edt TEdit
      mem TMemo
      btn TButton
      ck TCheckBox
      rb TRadioButton
      lb TListBox
      cb TComboBox
      scb TScrollBar
      gb TGroupBox
      rg TRadioGroup
      pnl TPanel
      al TActionList
      ac TAction
      6.4.2 Additional頁
      前綴 元件
      bbtn TBitBtn
      sb TSpeedButton
      me TMaskEdit
      sg TStringGrid
      dg TDrawGrid
      img TImage
      shp TShape
      bvl TBevel
      sbx TScrollBox
      clb TCheckListBox
      spl TSplitter
      stx TStaticText
      ctrb TControlBar
      av TApplicationEvents
      cht TChart
      6.4.3 win32頁
      前綴 元件
      tbc TTabControl
      pgc TPageControl
      il TImageList
      re TRichEdit
      tbr TTrackBar
      pb TProgressBar
      ud TUpDown
      hk THotKey
      ani TAnimate
      dtp TDateTimePicker
      mc TMonthCalendar
      tv TTreeView
      lv TListView
      hc THeaderControl
      stb TStatusBar
      tb TToolBar
      clb TCoolBar
      pgs TPageScroller
      6.4.4 System頁
      前綴 元件
      tm TTimer
      pb TPaintBox
      mp TMediaPlayer
      olec TOleContainer
      ddcc TDDEClientConv
      ddci TDDEClientItem
      ddsc TDDEServerConv
      ddsi TDDEServerItem
      6.4.5 Data Access頁
      前綴 元件
      ds TDataSource
      tbl TTable
      qry TQuery
      sp TStoreProce
      db TDataBase
      ssn TSession
      bm TBatchMove
      usql TUpdateSQL
      nt TNestedTable
      6.4.6 Data Controls頁
      前綴 元件
      dbg TDBGrid
      dbn TDBNavigator
      dbt TDBText
      dbe TDBEdit
      dbm TDBMemo
      dbi TDBImage
      dblb TDBListBox
      dbcb TDBComboBox
      dbck TDBCheckBox
      dbrg TDBRadioGroup
      dbll TDBLookupListBox
      dblc TDBLookupComboBox
      dbre TDBRichEdit
      dbcg TDBCtrlGrid
      dbch TDBChart
      6.4.7 ADO頁
      前綴 元件
      adon TADOConnection
      adoc TADOCommand
      adod TADODataSet
      adot TADOTable
      adoq TADOQuery
      ados TADOStoreProc
      rdsn TRDSConnection
      6.4.8 Midas頁
      前綴 元件
      prv TProvider
      cds TClientDataSet
      qcds TQueryClientDataSet
      dcom TDCOMConnection
      olee TOleEnterpriseConnection
      sck TSocketConnection
      rms TRemoteServer
      mid TMidasConnection
      6.4.9 Internet頁
      前綴 元件
      csk TClientSocket
      ssk TServerSocket
      wbd TWebDispatcher
      pp TPageProducer
      tp TQueryTableProducer
      dstp TDataSetTableProducer
      nmdt TNMDayTime
      nec TNMEcho
      nf TNMFinger
      nftp TNMFtp
      nhttp TNMHttp
      nMsg TNMMsg
      nntp TNMNNTP
      npop TNMPop3
      nuup TNMUUProcessor
      smtp TNMSMTP
      nst TNMStrm
      nsts TNMStrmServ
      ntm TNMTime
      nudp TNMUdp
      psk TPowerSock
      ngs TNMGeneralServer
      html THtml
      url TNMUrl
      sml TSimpleMail
      6.4.10 Decision Cube頁
      前綴 元件
      dcb TDecisionCube
      dcq TDecisionQuery
      dcs TDecisionSource
      dcp TDecisionPivot
      dcg TDecisionGrid
      dcgr TDecisionGraph
      6.4.11 QReport頁
      前綴 元件
      qr TQuickReport
      qrsd TQRSubDetail
      qrb TQRBand
      qrcb TQRChildBand
      rqg TQRGroup
      qrl TQRLabel
      qrt TQRText
      qre TQRExpr
      qrs TQRSysData
      qrm TQRMemo
      qrrt TQRRichText
      qrdr TQRDBRichText
      qrsh TQRShape
      qri TQRImage
      qrdi TQRDBMImage
      qrcr TQRCompositeReport
      qrp TQRPreview
      qrch TQRChart
      6.4.12 Dialogs頁
      對話框元件實際是以元件形式封裝的Form,因此它遵循Form的命名規(guī)則。其類型經(jīng)由元件的名稱定義了。實例的名稱與類型的名稱相同,但沒有前綴T。
      前綴 元件
      OpenDialog TOpenDialog
      SaveDialog TSaveDialog
      OpenPicturedialog TOpenPictureDialog
      SavePictureDialog TSavePictureDialog
      FonDialog TFontDialog
      ColorDialog TColorDialog
      PrintDialog TPrintDialog
      PrintSetupDialog TPrinterSetupDialog
      FindDialog TFindDialog
      ReplaceDialog TReplaceDialog
      6.4.13 Win31頁
      前綴 元件
      dbll TDBLookupList
      dblc TDBLookupCombo
      ts TTabSet
      ol TOutline
      tnb TTabbedNoteBook
      nb TNoteBook
      hdr THeader
      flb TFileListBox
      dlb TDirectoryListBox
      dcb TDirveComboBox
      fcb TfilterComboBox
      6.4.14 Samples頁
      前綴 元件
      gg TGauge
      cg TColorGrid
      spb TSpinButton
      spe TSpinEdit
      dol TDirectoryOutline
      cal TCalendear
      ibea TIBEventAlerter
      6.4.15 ActiveX頁
      前綴 元件
      cfx TChartFx
      vsp TVSSpell
      flb TF1Book
      vtc TVTChart
       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多