兩個元件之間Use的問題 |
答題得分者是:ccchen
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
請問: 我現在做了兩個元件,
一個是DateEdit繼承MaskEdit,主要功能是能夠做到日期格式判斷和設定Mask。
另一個是DateStyle繼承TComponet,主要是用來存放目前系統的日期格式(m/d/y or y/d/m....)。 因為日期格式是寫在資料庫內,載入到系統,無法寫死在元件內,所以設計了一個DateStyle來讓元件使用者自己手動輸入日期格式到DateStyle內,再由DateEdit連結DateStyle來找取其內容中的日期格式,主要的目的是怕如果今天系統一但變更別的日期格式時,我必須要到每一個Form上去修改DateEdit的日期格式,所以用一個DateStyle來存放日期格式,每個元件去連他。 但是現在面臨到一個問題,如果今天我DateStyle設定為y/m/d格式,如果目前有一個DateEdit連到DateStyle去捉到值時,我去修改DateStyle日期格式為d/m/y,再拉一個DateEdit元件去連DateStyel元件,則在Design Time時DateEdit1的格式為y/m/d,而DateEdit2的格式為d/m/y,雖然在RunTime時,兩個都會變成d/m/y,但是在Design時怕會照成自己判斷錯誤等狀態(Ex:以為沒有改到DateStyle)。 請問:
是否有辦法當我更改DateStyle的日期格式時,則此時所有連到DateStyle(DateEdit use DateStyle)的DateEdit都會變成目前DateStyle的日期格式(不論是在Design Time or Run Time的階段。 之前是有想過DateStyle 下開放屬性,去連結所有的DateEdit元件(Ex: propety DE1 : TDateEdit,然後在Object inspactor中選擇DateEdit1),但一方面專案還在開發,如果又增加使用DateEdit1時,則又要去增加DE2~...,另一個不能用的原因是DateEdit已經Use了DateStyle元件,而DateStyle不能再Use DateEdit,會造成循環Use。 所以想問問看大家,有沒有什麼辦法在我修改了DateStyle元件的日期格式時,原本已經連到DateStyle的DateEdit在Design Time也能立刻改變成新的日期格式。
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
|
Gspeed
一般會員 發表:2 回覆:9 積分:12 註冊:2002-04-05 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
1. 如果只是針對目前form,dateStyle改變時要改form上每一dateEdit,則只要在DateStyle中style property之Setvalue, 找到form上斤所有dateedit即可
[例]
procedure TDateStyle.SetStyle(value:string); var i:integer; begin if csDesigning in ComponentState then for i:=0 to TForm(owner).controlcount - 1 do if TForm(owner).controls[i] is TDateEdit then // change DateEdit's style property2. 若要在style改變時更改整個project中之TDateEdit則須要寫一個Expert繼承TIAddInNotifier, 此Expert接受TDateStyle類別中style Property更改時之訊息, 並serarch整個project中所有form逐一修改TDateEdit之property 3. DateEdit已Use了DateStyle元件,而DateStyle不能再Use DateEdit,會造成循環Use。 此問題並不存在, 只要使用向前宣告即可 [例] TDateStyle=class; //向前宣告即可 TDateEdit=class(TMaskEdit) ... end; implementation uses DateStyle; //於此use不會造成循環Use 在DateStyle中則可直接於interfacepart uses TDateEdit 4. 針對Date的問題我認為應該不用如此麻煩,GUI上user所看到的日期格式不應依資料庫不同而有差異, 應依user之需求,你可以直接設定shortdateformat之global?數即可更改所有顯示, 至於寫入資料庫時所用之DateFormat你應自行用函數解決, 不應成為user之負擔, 你以為如何 發表人 - ccchen 於 2002/08/25 10:49:48 發表人 - ccchen 於 2002/08/25 10:50:12 |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |