1. 有一Function, 功能是判斷Table XYZ 中有無記錄。請完善該Function:
function RecordExists(adoCnt: TADOConnection, SomeTable: string): Boolean;
var
   …
begin
   …
end;2.   有一用戶表,包括用戶ID、姓名、部門。其中用戶ID為PK。現在,我們要編寫輸入界面,請根據你的經驗作出分析。
          
         按鈕      新增   修改   刪除   取消    退出
     
              編輯框      用戶id
            編輯框      姓名
              編輯框       部門a. 當按下<新增>後
   按鈕<新增>的 Enabled = ?
   按鈕<修改>的 Enabled = ?
   按鈕<刪除>的 Enabled = ?
   按鈕<取消>的 Enabled = ?
   按鈕<退出>的 Enabled = ?
   下拉列表<用戶ID>的 Enabled = ?
   編輯框<姓名>的 Enabled = ?
   編輯框<部門>的 Enabled = ?b. 當按下<取消>後
   按鈕<新增>的 Enabled = ?
   按鈕<修改>的 Enabled = ?
   按鈕<刪除>的 Enabled = ?
   按鈕<取消>的 Enabled = ?
   按鈕<退出>的 Enabled = ?
   下拉列表<用戶ID>的 Enabled = ?
   編輯框<姓名>的 Enabled = ?
   編輯框<部門>的 Enabled = ?3. 判斷以下説法是否正確,如果錯誤,請修正
a. Private定義的變量在Unit内可見
b. Private定義的方法可以被子類繼承
c. public 和 published定義的可見範圍相同
d. Protected方法在其子類中可見,在子類的子類中同樣可見。4. 控件TMyEdit 繼承TEdit,請寫出定義語句5. 修改TMyEdit (繼承於TEdit),使其只接受數字輸入6. 在使用DateTimeToStr(Now)時,結果返回"2004-01-01 下午01:20:01" 而非我們希望的"2004-01-01 01:20:01 pm",請問如何處理,就可使我們在程序的任何地方調用DateTimeToStr(Now)時都返回希望的格式。7. 請將1.23轉換成整型值。將定義為String[10]的變量a 轉換成PChar型。8. 我們經常在事件參數中看到Sender,它的定義是TObject。現在,我們明確知道Sender的類是XYZ且有一方法名為UpdateMe。請問,在該事件中如何調用UpdateMe方法9. 請簡要説明overload和override的區別10.請定義一名為 FunName 的屬性。其讀方法為直接取變量FFunName的值,寫方法為SetFunName

解决方案 »

  1.   

    1.
    function   RecordExists(adoCnt:   TADOConnection,   SomeTable:   string):   Boolean; 
    var 
       a:TADOQuery;
    begin 
       a:=TADOQuery.Create;
       a.Connection:=adoCnt;
       a.SQL.Text:='select * from '+SomeTable;
       a.open;
       if a.RecordCount <=0 then Result:=True
       else Result:=False;
       a.Close;
    end; 2.
    a.   當按下 <新增> 後 
          按鈕 <新增> 的   Enabled   =   ? False
          按鈕 <修改> 的   Enabled   =   ? False
          按鈕 <刪除> 的   Enabled   =   ? False
          按鈕 <取消> 的   Enabled   =   ? True
          按鈕 <退出> 的   Enabled   =   ? False
          下拉列表 <用戶ID> 的   Enabled   =   ? False
          編輯框 <姓名> 的   Enabled   =   ? True
          編輯框 <部門> 的   Enabled   =   ? Trueb.   當按下 <取消> 後 
          按鈕 <新增> 的   Enabled   =   ? True
          按鈕 <修改> 的   Enabled   =   ? True
          按鈕 <刪除> 的   Enabled   =   ? True
          按鈕 <取消> 的   Enabled   =   ? False
          按鈕 <退出> 的   Enabled   =   ? True
          下拉列表 <用戶ID> 的   Enabled   =   ? True
          編輯框 <姓名> 的   Enabled   =   ? False
          編輯框 <部門> 的   Enabled   =   ? False3.
    a.   Private定義的變量在Unit内可見 
    b.   Private定義的方法可以被子類繼承 //X
    c.   public   和   published定義的可見範圍相同 
    d.   Protected方法在其子類中可見,在子類的子類中同樣可見。 4.   
      TMyEdit = class (TEdit)
    5.  
      懒得写了
      
    6.
    FormatDateTime(yyyy-mm-dd hh:mm:ss am/pm',Now);7.
    Trunc(1.23)
    PChar(a);8.
    (Sender as XYZ).UpdateMe;9.
    overload重载
    override覆盖10.
    property FunName read FFunName write SetFunName;
      

  2.   

    路过,二楼的不错,都回答了!
    //对了,顺便补充以下第 5 个问题
    5.修改TMyEdit繼承於TEdit),使其只接受數字輸入 
    procedure TMyEdit.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in['0'..'9']) then
        key := #0;
    end;
      

  3.   

    第一个可以简化为:
    function RecordExists(adoCnt: TADOConnection; SomeTable: string): Boolean;   
    var   
      a:TADOQuery; 
    begin
      a:=TADOQuery.Create; 
      a.Connection:=adoCnt; 
      a.SQL.Text:='select * from '+SomeTable; 
      a.open; 
      Result := not a.IsEmpty;
      a.Close; 
      a.Free;
    end;   佩服1楼的耐心