請教一個TImage的呼叫程式問題 |
尚未結案
|
chateau_frank
一般會員 發表:20 回覆:32 積分:10 註冊:2005-07-07 發送簡訊給我 |
各位大大晚安
我的程式如下:
procedure TForm1.DBGrid1CellClick(Column: TColumn); var showpic1:string; DBEdit1.Text := 'ImageName'; DBEdit2.Text := 'ImageSize'; If AnsiEndsText('jpg',ShowPic1) then begin Image1.Picture.LoadFromFile(showpic1); end;我的問題是在DBGrid1中,如用滑鼠去點每一列的欄位,Image1的圖片就會自動更換,但如用鍵盤的上下鍵,圖片就不動如山,但其他的DBEdit欄位卻可以隨著鍵盤而更新資料,請大大們教導如何解此疑問,感謝。 |
chateau_frank
一般會員 發表:20 回覆:32 積分:10 註冊:2005-07-07 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
您的這段程式我不知道是不是不完整?因為沒有找到變量ShowPic1的賦值語句,所以不請楚你的ShowPic1所指示的圖片來源好何處。 是不是您的ShowPic1指定為固定文件?
如:
procedure TForm1.DBGrid1CellClick(Column: TColumn); var showpic1:string; begin DBEdit1.DataField := 'ImageName'; DBEdit2.DataField := 'ImageSize'; ShowPic1 := 'C:\Pic1.jpg'; If AnsiEndsText('jpg',ShowPic1) then begin Image1.Picture.LoadFromFile(showpic1); end; end; 如果您的ShowPic1指定來源為數據表中,如: ShowPic := DBEdit1.Text; 則您檢查DBEdit1.Text所指示的文件是否存在。---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 ---------------------------
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
chateau_frank
一般會員 發表:20 回覆:32 積分:10 註冊:2005-07-07 發送簡訊給我 |
謝謝大大指導
我這段程式碼因為沒有用copy來貼的,是用打的,因此漏打了,正確的打法確實如大大所擔心的,我在程序之前已有指定路徑,且已有圖片,兩邊都是對稱的,沒有遺漏或打錯路徑,就以大大所指導的程式來做例子,我的問題還是存在的,因為用鍵盤上下鍵所指的資料圖片不會變動,但用滑鼠去按卻會隨著資料不同而變化圖片:
procedure TForm1.DBGrid1CellClick(Column: TColumn); var showpic1:string; begin DBEdit1.DataField := 'ImageName'; DBEdit2.DataField := 'ImageSize'; ShowPic1 := 'C:\Pic1.jpg'; If AnsiEndsText('jpg',ShowPic1) then begin Image1.Picture.LoadFromFile(showpic1); end; end; |
cwc65536
初階會員 發表:47 回覆:121 積分:48 註冊:2004-10-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
原因是這樣的: 您用的是DBGrid組件的OnCellClick事件來進行處理,而這個事件是針對鼠標動作的事件,也就是說對於鍵盤操作,並不會觸發該事件,所以當您使用鼠標點擊時,該事件中的代碼才會執行,並可以看到圖片的載入變化,而當您使用鍵盤時,該事件中的代碼沒有執行,Image1也就不會載入圖片了。 基於這個原因,所以建議您改用TTable或TQuery等數據集組件的AfterScroll事件來處理:
uses jpeg, StrUtils; procedure TForm1.Table1AfterScroll(DataSet: TDataSet); var showpic1:string; begin ShowPic1 := DBEdit1.Text; If AnsiEndsText('jpg',ShowPic1) then begin Image1.Picture.LoadFromFile(showpic1); end; end;---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 --------------------------- 發表人 - h@visli 於 2005/07/29 22:05:06
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
chateau_frank
一般會員 發表:20 回覆:32 積分:10 註冊:2005-07-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |