2017-08-19 63 views
0

我想創建一個將設置其自己的屬性的過程。請參考示例代碼。我使用DELPHI XE如何將組件調用到其自身事件 - DELPHI

樣本:

procedure TCarcassUpdateForm.ChangeText; 
    begin 
     if self.Text = '' then 
     begin 
     Self.Text := '0'; 
     end; 
    end; 

//Edit 14 
procedure TCarcassUpdateForm.MyDBLabeledEdit14Exit(Sender: TObject); 
    begin 
    ChangeText 
    end; 

//Edit 15 
procedure TCarcassUpdateForm.MyDBLabeledEdit15Exit(Sender: TObject); 
    begin 
    ChangeText 
    end; 

回答

1

你的做法是毫無意義的我。如果我理解你想要做什麼,這裏是你應該做的,而不是:

  • 單擊控件之一(我們稱之爲DBEdit1以方便)。
  • 切換到Object Inspector的Events選項卡,然後雙擊OnExit事件。
  • 在代碼編輯器,你會看到

    procedure TCarcassUpdateForm.DBEdit1Exit(Sender: TObject); 
    begin 
    
    end; 
    
  • 編輯該代碼:

    procedure TCarcassUpdateForm.DBEdit1Exit(Sender: TObject); 
    var 
        Edit: TDBEdit; // replace with your actual control class 
    begin 
        // Replace TDBEdit with the your actual control class 
        Edit := (Sender as TDBEdit); 
        if Edit.Text = '' then 
        Edit.Text := '0'; 
    end; 
    
  • 回到對象檢查和DBEdit1Exit改變OnExit事件的名稱到AllDBEditExit

  • 在窗體設計器,按Ctrl +LeftClick每次你想擁有同樣的行爲來選擇他們所有的控件。
  • 在「對象檢查器事件」選項卡中,單擊OnExit事件中的下拉列表,然後選擇AllDBEditExit作爲事件名稱。
+2

我會建議調整'OnExit'處理程序不要多次調用'as'運算符,因爲這將在運行時執行冗餘查找。調用它一次並將結果保存在局部變量中,例如:'procedure TCarcassUpdateForm.AllDBEditExit(Sender:TObject); var編輯:TDBEdit;開始編輯:=發件人爲TDBEdit;如果Edit.Text =''則Edit.Text:='0';結束;' –

相關問題