TFrom的問題 |
答題得分者是:wameng
|
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
|
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
Procedure Set_ALLEnabled( ParentControl:TwinControl;
Const Enabled:Boolean=False);
var
I :integer;
begin
For i:=0 to ParentControl.ControlCount-1 do
TControl(ParentControl.Controls[i]).Enabled := Enabled;
end; procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Set_ALLEnabled(Self,Not CheckBox1.Checked);
CheckBox1.enabled := True;
end;
|
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
wameng 大大 我想您可能曲解我的意思了..我再舉個例說明好了...假設我有一個Form
上面放了十個 TEdit,,,我的意思是說...如果今天...我不管對那一個TEdit輸入資料,在輸入資料時..我必須去判別一個總體的Flag變數,當條件成立時..我才允許發生輸入的TEdit 的值被接受,反之則否,,,重點再於,form上面放的不只一種物件,,可能是TEdit,ComboBox,等...具有接受改變值能力的物件,,,我不想一一在物件的...onkeypress, 或者 onchange 事件中去寫攔截程式,,,,,,可否有另一方面,可以直接從Form上去攔截,,,,,且條件不成立時,各控制項內的值,能自動回復至未變更前的值(如果 原來是1 就回復成1 原來是2 就回復成2 )...
多謝您的賜教~~~
------
叔叔有練過,初學者不要學。 |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
雖然 Form 有個屬性
KeyPreview := True;
可以接收所有的OnKeyPress... 及鍵盤按下事件。
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Not CanEdit then Key := #0;
end;
不過,在Combobox 中選擇 Item 就不行了。 或者使用老的笨方法:
所有相同的物件用統一的事件共用就好了。
例如 10 個TEDIT 用同一個 OnKeyPress
再從物件的.TAG 去判斷什麼的。 N 個 Combobox 統一用 OnChange 事件。
只要是事件類型相同,都是可以利用的。 這樣在程式碼中您只會有,一個OnKeypress及OnChange事件 再把相同的程式寫成函數。
在OnKeypress及OnChange事件引用即可。 發表人 - wameng 於 2004/10/04 15:10:14
|
John Wong
初階會員 ![]() ![]() 發表:1 回覆:35 積分:32 註冊:2004-09-18 發送簡訊給我 |
你所指的總體的Flag變數, 其值的判斷是否與正在輸入的資料有關? 若那個Flag是在輸入前便可以決定的話, 你可以把所有相關的元件放入一個panel或scrollbox內, 不允許輸入時便把panel或scrollbox的enable設為false, 那麼內裏的元件便不能更改, 亦不會變灰, 感覺上就是變成readonly了. 如果你須要在各輸入的元設定相同內容的onkeypress或onchange event, 而又覺得太瑣碎的話, 可以在form的onshow event加入類似以下的程或碼: procedure TFML1.FormShow(Sender: TObject);
var i: Integer;
begin
for i := 0 to ComponentCount -1 do begin
if Components[i].ClassName = 'TDBEdit' then begin
(Components[i] as TDBEdit).OnEnter := DBEditOnEnter;
(Components[i] as TDBEdit).OnExit := DBEditOnExit;
end;
end;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |