如何clear 所有 editbox? |
尚未結案
|
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
除以下方法,有沒有其他更好的方法呢?
令我不需每次加editbox, 都作修改.
thx procedure TfrmMain.tabStaffInitalizeAllFields();
begin
edtStaffChiName.Text := '';
edtStaffEngName.Text := '';
edtStaffHKID.Text := '';
edtStaffCheckDigit.Text := '';
edtStaffHomePhone.Text := '';
edtStaffMobilePhone.Text := '';
edtStaffAddress.Text :='';
edtStaffRemarks.Text := '';
end;
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
hi,hkguy80:
1.如果TfrmMain裡所有的Edit都要清掉的話,可以用以下方法
procedure TfrmMain.tabStaffInitalizeAllFields(); var i:Integer; begin for i:=0 to ComponentCount-1 do begin if (Components[i] is TEdit) then (Components[i] as TEdit).Text:=''; end; end;2.如果TfrmMain裡只是部是的TEdit要清的話,如下: procedure TfrmMain.tabStaffInitalizeAllFields(); const EditList:array [0..7] of string = ( 'edtStaffChiName','edtStaffEngName','edtStaffHKID','edtStaffCheckDigit','edtStaffHomePhone', 'edtStaffMobilePhone','edtStaffAddress','edtStaffRemarks'); //裡面擺要清除的元件名稱 var i:Integer; cmp:TComponent; begin for i:=0 to high(EditList) do begin cmp:=FindComponent(EditList[i]); if (cmp is TEdit) then (cmp as TEdit).Text:=''; end; end; |
poemkevin
初階會員 發表:26 回覆:77 積分:30 註冊:2002-10-19 發送簡訊給我 |
change.jian 版主大大的方法比較好呢, 又學到一招了, 很感謝^^ 小弟以前都笨笨的, 只好將edit命名為edit1~edit8
for i := 1 to 8 do
begin
TEdit(frmMain.FindComponent(edtStaff' intToStr(i))).Text := '';
end; 照大大的改法可以改為 const
EditList:array [0..7] of string = (
'edtStaffChiName','edtStaffEngName','edtStaffHKID','edtStaffCheckDigit','edtStaffHomePhone',
'edtStaffMobilePhone','edtStaffAddress','edtStaffRemarks'); //裡面擺要清除的元件名稱
var
i:Integer;
begin
for i:=0 to high(EditList) do
begin
TEdit(frmMain.FindComponent(EditList[i]).Text := '';
end;
end; 發表人 - poemkevin 於 2004/09/14 15:07:26
|
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
這個程式真的很棒.
謝謝.
再請問是否添加parameter,即可改為適合各 form. procedure TfrmMain.tabStaffInitalizeAllFields(frm:Tform);
var
i:Integer;
begin
for i:=0 to frm.ComponentCount-1 do
begin
if (frm.Components[i] is TEdit) then
(frm.Components[i] as TEdit).Text:='';
end;
end; thx.
|
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
I tried the following code.
but the ComponentCount always is equal to 1.
Can anyone help me to correct it?
thx. procedure TfrmMain.tabStaffInitalizeAllFields(tbShtTemp: TTabSheet);
var
i:Integer;
begin
for i:=0 to tabStaff.ComponentCount-1 do
begin
if (tabStaff.Components [i] is TEdit) then
(tabStaff.Components[i] as TEdit).Text:=''
else
if (tabStaff.Components[i] is TDateTimePicker) then
(tabStaff.Components[i] as TdateTimePicker).Date := Date;
end;
end; 發表人 - hkguy80 於 2004/09/14 17:35:12
|
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
1.見底下紅色註解. 2.如果這個procedure是用來清除在傳入的TTabSheet上的元件的話,那麼你要注意TTabSheet上的元件Owner到底是誰,如果Owner不是TTabSheet的話,那麼這個procedure是清不掉TTabSheet上的那些TEdit元件的,因為TTabSheet只是那些TEdit元件的Parent而已
引言: I tried the following code. but the ComponentCount always is equal to 1. Can anyone help me to correct it? thx.procedure TfrmMain.tabStaffInitalizeAllFields(tbShtTemp: TTabSheet); var i:Integer; begin //底下用的是tabStaff, //與上面傳入的tbShtTemp不一樣,所以應該是這裡錯了 for i:=0 to tabStaff.ComponentCount-1 do begin if (tabStaff.Components [i] is TEdit) then (tabStaff.Components[i] as TEdit).Text:='' else if (tabStaff.Components[i] is TDateTimePicker) then (tabStaff.Components[i] as TdateTimePicker).Date := Date; end; end;發表人 - hkguy80 於 2004/09/14 17:35:12 |
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |