如果edit1对应checkbox1,edit2对应checkbox2,edit3对应checkbox3.....
就是假如某个edit取值为a的时候,它对应的checkbox为true,否则为false
有没有简单的写法,不用一个一个的写

解决方案 »

  1.   

    1.假设窗体FORM1中有四个EDIT.及四个checkbox
      名称分别为:
        Edit1
        Edit2
        Edit3
        Edit4
        CheckBox1
        CheckBox2
        CheckBox3
        CheckBox4
    2.在EDIT1的EXIT事件写入以下代码:procedure TForm1.Edit1Exit(Sender: TObject);
    var
    str:string;
    i:string;
    begin
       if Sender is TEdit then begin   str:= AnsiUpperCase(TEdit(Sender).Text);
       i:=Copy(TEdit(Sender).Name,Length(TEdit(Sender).Name),maxint);
       TCheckBox(Form1.FindComponent('CheckBox'+i)).Checked:=str='A';   end;
    end;
    3.Edit2,Edit3,Edit4的EXIT事件全部指向EDIT1的EXIT事件.
      

  2.   

    edit和checkbox靠tag对应
    再在EDIT1的EXIT事件写入关联代码,所有edit都关联该方法
      

  3.   

    看你给的问题,你应该是有很多这样的控件对。
    你可以换个思路,把一组控件放在一个 Frames 中,然后在你的控制窗体中加入多个这样的Frames,这样你的控制将会变的很简单。
    就拿你给的问题来说,创建一个 Frames 其中放一个 TEdit 一个 TCheckBox
    在Edit的OnChange事件中处理本 Frames 对应的 CheckBox 的 Checked
    代码如下:
    procedure TFrame2.Edit1Change(Sender: TObject);
    begin
      CheckBox1.Checked := (Edit1.Text = 'A');
    end;这样,处理后,你在主窗体中,添加这个 Frames 则这些新加入的 Frames 就自动能够处理 Checked 了如果你的 Edit 和 CheckBox 不在一个窗体或者说不能统一布局,那么你可以参考 Label 控件的 FocusControl 属性的实现方式,重载 TEdit 控件,加入一个属性可以在设计期让其指向一个CheckBox,然后TEdit的重载其 Change 方法,控制其对应的CheckBox的 Checked 的设置用Delphi来摆积木式地开发,仅仅是一种对Delphi的肤浅应用,因为Delphi的这种搭积木的功能太强大了,所以很多初学Delphi的人就停留在了搭积木的程序设计上不深入了,其实,Delphi实现的面向对象的编程理念是非常完善和强大的。