一个新手的问题!(50分)

L

libra.M

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗体上创建了四个maskedit(maskedit1、maskedit2、maskedit3、maskedit4),
它们的enabled都设置为false,现在我要用一个变量来控制它们的enabled,具体来说
就是,变量为2,则maskedit1、maskedit2的enabled为true,其余不变;变量为3,
则maskedit1、maskedit2、maskedit3的enabled为true.maskedit4不变。
因为我还是个新手,所以请各位不要见笑,多多帮忙!
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask;

type
TForm1 = class(TForm)
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
MaskEdit3: TMaskEdit;
MaskEdit4: TMaskEdit;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
ControlValue: Integer;
MaskEditList: TList;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
ii: Integer;
Count: Integer;
begin
Count := MaskEditList.Count
ControlValue := StrtoInt(Edit1.Text);
if (ControlValue <= 0) or (ControlValue >Count) then Exit;

for ii := 0 to ControlValue-1 do
TMaskEdit(MaskEditList.Items[ii]).Enabled := True;
for ii := Controlvalue to Count-1 do
TMaskEdit(MaskEditList.Items[ii]).Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MaskEditList := TList.Create;
MaskEditList.Add(MaskEdit1);
MaskEditList.Add(MaskEdit2);
MaskEditList.Add(MaskEdit3);
MaskEditList.Add(MaskEdit4);
end;
end.



 
在Edit1中输入数字即可,通过讲这些控件放到一个列表中去读,只是一个方法而已
 
分别设四个maskedit的tag属性为1,2,3,4
根据传入的参数:
//maskedit直接放在form上,如果在其他容器上,需要将form1改成容器名
procedure SetEnabled(i:integer)
var
a:integer
begin
maskedit1.enabled := false
maskedit2.enabled := false
maskedit3.enabled := False
mastedit4.enabled := False
for a:=0 to Form1.controlcount-1 do
begin
if Form1.controls[a].classtype = tmaskedit then
if tmaskedit(form1.controls[a]).tag <= i then
tmaskedit(form1.controls[a]) := true
end;
end
 
使用tag作为标签是delphi的常用技巧。
可惜来晚了。:(
 
谢谢大家!
 
一行搞定(核心思想是一行):
for i:=1 to 4 do
begin
if i<=enablenum then
TMaskEdit(FindComponent('MaskEdit' + IntToStr(i))).enabled:=true
else
TMaskEdit(FindComponent('MaskEdit' + IntToStr(i))).enabled:=fasle;
end;
 
我也是认为Doxpix的答案好,这个比Tag好的多
 
多人接受答案了。
 
to LIBra.M
太对不住我了吧!虽然我的方法没有doxpix好,但也可以轻松解决你的问题呀!
一分都不给分,太伤自尊心了!我记住,以后不会回答你的问题了!
 
呵呵,为了鼓舞fbyang同志的斗志,doxpix决定奉献50分。
不知道fbyang同志有没有意思?
 
to doxpix
这么大度,不好意思了!
 
不好意思50分少了点,不够分,下次多了再给你吧!
 
fbyang请进:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=532934
拿分。
 
顶部