2017-08-19 36 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';结束;' –

相关问题