关于大批量的控件输入(20)

  • 主题发起人 主题发起人 terry_zhou82
  • 开始时间 开始时间
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
我的FORM上有很多EDIT,MEMO等控件,我想让FORM关闭时,检查他们的值必须都不能为空?改怎么弄呢?是每个控件都写一行代码?好像也太没有效率的,以前记得好像是sender is Tcontrolthen.....不知道是不是这么写?
 
可以在循环中利用Form的ComponentCount以及Components数组属性来遍历窗体上的所有控件,依次检查每个控件的类型(用is TEdit等等)、名称(Name属性),这样就可以很方便的批量处理了:)
 
我是现场写代码,有不准确的地方,原谅则个:for i := 0 to self.ComponentCount - 1 dobegin if self.Components is TMemo then begin MemoTemp := self.Components as TMemo; if MemoTemp.Text = '' then begin {do sth} end; end else if self.Components is TEdit then begin EditTemp := self.Components as TEdit ; if EditTemp .Text = '' then begin {do sth} end; end; end;
 
uses typinfofor i := 0 to self.ComponentCount - 1 dobegin if (GetPropInfo(Components, 'text') <> nil) and (GetPropValue(Components, 'text') <> '') then begin // do sth end;
 
草原骏马,你的代码还可以写为:for i := 0 to self.ComponentCount - 1 dobegin if self.Components is TCustomEditthen begin customEdit := self.Components as TCustomEdit; if customEdit.Text = '' then begin {do sth} end; end; end; TMemo和TEdit,都是从TCustomEdit继承下来的。terry_zhou82,你说的Sender,是指Event事件的触发者,例如Button的OnClick中,Sender就是指当前button,在这里这种方式不适用。
 
多人接受答案了。
 
后退
顶部