自訂元件動態設定欄位寬度問題? |
缺席
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
版大及各為前輩:
我欲在自訂元件內,透過元件的datasource取得欄位長度,然後換算成適當的textbox寬度,雖然已經達到功能 但是卻會出現錯誤訊息,不知道我的程式碼哪邊有錯,可否請前輩們,給予提示! 謝謝! function YaoEdit.Get_DataField: string; begin Result := UTEdit.DataField; ; end; procedure YaoEdit.Set_DataField(aField: string); var i: Integer; current_Field: Integer; begin if UTEdit.DataField <> aField then begin UTEdit.DataField := aField; // 當使用者一設定資料庫的來源,我們就動態改變標題 if UTEdit.DataField <> '' then begin for i := 0 to Self.Datasource.DataSet.Fields.Count - 1 do begin if Self.Datasource.DataSet.Fields.Fields[i].FieldName = aField then begin current_Field := i; end; end; // 假如標題欄位還沒設定文字,我們才幫他捉取資料來源當標題,簡化設定程序 // 若有標題設定,但是沒有設定快捷按鍵,一樣跟隨欄位變更標題 if ((Trim(Get_Title_Label) = '') or (InStr(1, '&', Get_Title_Label) = 0)) then begin Set_Title_Label(UTEdit.DataField); // 假如標題欄位的長度=0 我們才進行調整欄位寬度 if Get_Title_Label_Width = 0 then begin Set_Title_Label_Width(85); end; end; // 自動設定欄位寬度 self.UTEdit.Width := 10 * (Self.Datasource.DataSet.Fields[current_Field].Size); end; TControl_arrangement; end; end; 加上紅色字體的部份會產生錯誤,若刪除則無錯誤訊息!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
解決了!不過蠻有成就感的! VCL 不知道要怎麼簡易Debug! 是否有前輩可以提示一下!
我發現上述的程式碼有一個關鍵錯誤就是,因為要設定EDIT的Field時,需要確定先有DataSource,但由於 比如我在表單上,將物件作複製的行為時,DataSource可能為nil,導致出現錯誤訊息! 所以只要加上 if (Self.Datasource <> nil) then begin 原程式碼 end; 果然要小心啊!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |