秀圖的問題(跟著Record秀) |
缺席
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
請問各位大大
自已要做一個轉圖的功能 因我想要在Master/Detail中的Detail可以去勾選我要轉的圖檔(資料庫沒有存圖檔) 如: Detail(有記錄著圖檔的位置) ---------------------------------------- 1.jpg 秀圖出來 2.jpg 秀圖出來 3.jpg 秀圖出來 而找了不少文章,都沒有看到類似的功能 想問問各位大大,如果我的秀圖是跟著Record跑 意指有一筆Record會有一個圖檔Show在旁邊 有什麼方向可以做到呢或元件(找過TMS也沒有看到..orz) 附件是設計的樣式(麻煩版主刪除,因為更新的檔案上傳不了..而那個樣式造成誤解) 這一篇附上測試的程式 我附上正在測試的程式 在左邊是用Loop去Show圖 右邊是目前正在改寫的方式(但覺得這種方式不好,應該有更佳的方式) 必竟這種方式目前要計算目前的位置再Show圖
------
初學、初學、學了很久...還是在初學階段..Orz |
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
大大提供的方法,我也想過,但想說如果有更好的方法就無需存入Database那應該比較不會有Database的空間的問題。
主要是我想要Database單純是存資料。 附上我用另一個方法做的程式碼,但我想這不是很好的方式。 謝謝大大提供的意見 [code delphi] var Form1: TForm1; notrun:BOOLEAN; implementation {$R *.dfm} PROCEDURE PShowSmallPic; VAR { wm:取餘數後的值 wrecordcount:畫面的總筆數(非資料) wtempkey:記錄Key } wm,wpoint,wrecordcount,wi,wj:Integer; wtempkey:STRING; BEGIN IF notrun THEN with form1 do begin //因Trigger置於DataSource1DataChange為避免一直觸發 notrun := FALSE; //清除所有image for wj:= 0 to componentcount -1 do if (Components[wj] is Timage) then BEGIN Timage(components[wj]).Picture.Graphic := nil; Timage(components[wj]).Hint := ''; End; //定義一次所Show的圖與DbctrlGrid的數量 wrecordcount := DBCtrlGrid1.PanelCount; //記錄目前所在的位置 wpoint := adoquery1.RecNo; //記錄Key以便在跑完Loop時回所選的Record wtempkey := adoquery1.FieldByName('PicName').AsString; //餘數定義於所在的位置之後Loop往上往下的Show圖 wm := wpoint Mod wrecordcount; //往上第一筆開始Show圖 wi := 1; while (wi < wm) And (adoquery1.RecordCount <> wpoint) do begin ADOQuery1.Prior; for wj:= 0 to componentcount -1 do if (Components[wj] is Timage) AND (Components[wj].name = 'SmallPic' Inttostr(wm-wi)) then BEGIN Timage(components[wj]).Picture.LoadFromFile(GetCurrentDir '\Small\' adoquery1.FieldByName('PicName').AsString); Timage(components[wj]).Hint := adoquery1.FieldByName('PicName').AsString; END; wi := wi 1; end; //找尋所選的Record位置 adoquery1.Locate('PicName',wtempkey,[locaseinsensitive,loCaseInsensitive]); //往下第一筆開始Show圖 //因Image編號由1開始編所以當為0時要轉為1 IF wm=0 Then wi:=1 Else wi := wm; while wi <= wrecordcount do begin for wj:= 0 to componentcount -1 do if (Components[wj] is Timage) AND (Components[wj].name = 'SmallPic' Inttostr(wi)) and NOT adoquery1.Eof THEN BEGIN Timage(components[wj]).Picture.LoadFromFile(GetCurrentDir '\Small\' adoquery1.FieldByName('PicName').AsString); Timage(components[wj]).Hint := adoquery1.FieldByName('PicName').AsString; END; IF NOT adoquery1.Eof THEN ADOQuery1.Next Else Break; wi := wi 1; end; adoquery1.Locate('PicName',wtempkey,[locaseinsensitive,loCaseInsensitive]); notrun := TRUE; end; END; procedure TForm1.Button2Click(Sender: TObject); begin notrun:=TRUE; PShowSmallPic; end; [/code] ===================引 用 pceyes 文 章=================== 用dbimage 每次將其變成縮圖後存入dbimage 存在第二個detail,欄位只要兩個 keyfield, dbimagefield 然後就能用dbctrlGrid來秀圖了 dbimage有64k限制。
------
初學、初學、學了很久...還是在初學階段..Orz |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
大大原先的用意在於用文字表示
設計時期畫面,企圖利用DBCtrlGrid(包覆這兩個項目) ---------------------------------------------------- 勾選項目 Image(一) ---------------------------------------------------- 執行時期(這是一開始Run的時候) 企圖達到這個效果 ---------------------------------------------- □檔案1 Image(秀圖檔案1) □檔案2 Image(秀圖檔案2) □檔案3 Image(秀圖檔案3) □檔案4 Image(秀圖檔案4) □檔案5 Image(秀圖檔案5) □檔案6 Image(秀圖檔案6) ------------------------------------------------- 承上(若我往下意指用Mouse的滾輪時) ------------------------------------------------- □檔案5 Image(秀圖檔案5) □檔案7 Image(秀圖檔案6) □檔案8 Image(秀圖檔案7) □檔案9 Image(秀圖檔案8) □檔案10 Image(秀圖檔案9) □檔案11 Image(秀圖檔案10) -------------------------------------------------- 也就是在DBCtrlGrid中,只放置一個DBcheckbox,Image 但跟隨著DBCtrlGrid的項目變動(Record)變動時,秀圖 也跟著變。 而目前上述的程式碼(未精修..Orz)是做這一部份, 但我放置了5個image來做這個功能判定(想用一個就好...XD) 上述是去記錄目前的位置再Show其他的圖 ===================引 用 kevin2004 文 章=================== 我有寫過類似的功能,圖檔﹝或其他類似的Blob﹞沒有存在DB中,而且有些應用有作壓縮或加解密保護,有時須要移到此人記錄時就要顯示硬碟上相關檔﹝如此人照片﹞。 不曉得你的問題是出在那裏。
------
初學、初學、學了很久...還是在初學階段..Orz |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |