畫面有很多欄位資料(非DB欄位),該如何有效率的儲存及載入 |
答題得分者是:t27
|
ANDY8C
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
請問網友 有 PageControl 下有四頁 TabSheet 如圖 每一 TabSheet 都有很多 EDIT 的輸入資料,這些輸入資料,下次程式再啟用時, 希望被更改後的數據還在 所以會有儲存(save) 及載入(LOAD) 的動作 但是 因為每頁 的 EDIT 太多,目前軟體的寫法 儲存 時,以一串文字 => EDIT1.TEXT ',' EDIT2.TEXT ','........存到文字檔 載入時 => 先讀取文字檔那一長串字串( sstring_all:= READLN..... ) 然後 EDIT1.TEXT := PPPASER( sstring_all,1); // 取第 1 個子字串 EDIT2.TEXT := PPPASER( sstring_all,2); // 取第 2 個子字串 EDIT3.TEXT := PPPASER( sstring_all,3); // 取第 3 個子字串....... 等,感覺是苦力的工作, 若欄位是 edit 還好,有明確的數據,若遇到 Combox/chkbox .......等,必須先 indexitem 取值後再存, 一堆判斷式......等很繁瑣的對應軟體寫法 想請問 ,是否有懶人的指令 "Save ALL" , "Load ALL " 可以直接將目前畫面的所有輸入資料及該欄位名稱/型態,都儲存起來. 下次使用 " Load ALL" 後,所有的 edit / combobox/chkbox.....等的值, 都會顯示,且是上次儲存的數據 請建議思考方向及做法,若有範例,感激不盡 謝謝您
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. |
pedro
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
hi
如果您要拉拉雜雜地把整個form都儲存起來,就類似IDE載入表單的方式 http://www.programmer-club.com.tw/ShowSameTitleN/delphi/20399.html 但我的想法,其實可以用Ini來存您所述元件的Text及特定屬性值 1.在表單上找尋是Edit元件,元件名=Edit.Text值,寫入Ini 2.在表單上找尋是ComBox...元件名=..... 參考Is,As及巡覽元件的方法 http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=95168 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=31853 |
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我想兩位前輩都誤會了發帖網友的意思, 他的意思是不是有像procdure 的功能一樣, 只要下一個
xxxxxx.saveall 就可以解決一切, 因為兩位所提的還是要寫一大串code才能完成, 但就我所知 要怎麼收穫就怎麼栽, 我可以寫出一個saveall 的指令出來, 但充其量還是要寫一支procedure 或 function 裡面寫一堆code 來讀取每一個componment 的值, load 或 save 到指定的位置上, 所謂懶人收成法, 就是 看有沒有人寫出這個東西, 後人享用便是了, 可以給一個方向, 搜尋 TComponment 或 FindComponment 著手 |
ANDY8C
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
|
t27
中階會員 ![]() ![]() ![]() 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
參考一下:
儲存: for i := 0 to ComponentCount-1 do begin if Components[i] is TPageControl then begin for j := 0 to TPageControl(Components[i]).PageCount-1 do begin xx := TPageControl(Components[i]).Pages[j].ControlCount; for k := 0 to xx-1 do begin if (TPageControl(Components[i]).Pages[j].Controls[k] is TEDit) then begin end; if (TPageControl(Components[i]).Pages[j].Controls[k] is TCombox) then begin end; end; end; end; end; 讀取: for i := 0 to DataSet.FieldCount-1 do begin cFNa := DataSet.Fields[i].FieldName; TmpComp := self.FindComponent(cFNa); if TmpComp is TEdit then TEdit(self.FindComponent(cFNa)).Text := ; if TmpComp is TMaskEdit then TMaskEdit(TmpComp).Text := ; if TmpComp is TComboBox then TComboBox(TmpComp).Text := ; end;
編輯記錄
t27 重新編輯於 2010-05-23 11:42:53, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |