全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1043
推到 Plurk!
推到 Facebook!

jpeg 的bug (瀏覽 及 新增 有問題)

尚未結案
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-13 23:04:06 IP:61.13.xxx.xxx 未訂閱
我好不容易用 TImage1 做出了可存讀jpeg檔 但是我做出來的程式有點問題 當我新增一筆資料(第3筆)時 我的TImage1的地方 會殘留著我瀏覽過的上一筆 資料內的圖片 如下圖所示 //照理說按新增後 TImage1的地方應該是空白的//  另外 我在新增一筆資料資料時 我並沒有對Timage1做載入圖片的動作   我按了儲存的botton後  我再瀏覽到(第3筆)時 它TImage1的地方也還是會 殘留著"上一筆資料瀏覽過的圖片" 以上就是我的問題 不知大家看的懂不懂        以下是我載入圖片botton內的程式碼: procedure TForm1.Button2Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin ADOTable1.edit; ADOTable1.FieldByName('img_filename').AsString:=extractfilename(OpenPictureDialog1.filename); ADOTable1.FieldByName('img_filesize').AsInteger:=filesizes(OpenPictureDialog1.filename); TBlobField(ADOTable1.FieldByName('img_filedata')).loadfromfile(OpenPictureDialog1.filename); ADOTable1AfterScroll(ADOTable1); end; end; 以下是在ADOTable1AfterScroll內的程式碼: procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet); begin image1.Picture.Create; if not ADOTable1.eof then if trim(ADOTable1.FieldByName('img_filename').asstring)<>'' then begin TBlobField(ADOTable1.FieldByName('img_filedata')).savetofile(ApplicationPath+ADOTable1.FieldByName('img_filename').asstring); Image1.Picture.LoadFromFile(ApplicationPath+ADOTable1.FieldByName('img_filename').asstring); deletefile(ApplicationPath+ADOTable1.FieldByName('img_filename').asstring); end; end; 麻煩各位了 幫幫小弟吧 !!!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-14 00:31:05 IP:218.163.xxx.xxx 未訂閱
加入紅色部分
//新增按鈕
procedure TForm1.ToolButton5Click(Sender: TObject);
begin
CanEdit := True;
ADOTable1.Insert;
image1.Picture:=nil;
end;    =================
下一筆按鈕..改成:
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
CanEdit := False;
if ADOTable1.Eof then
 begin
  ToolButton3.Enabled:=false;
  ToolButton4.Enabled:=false;
  showmessage('已再資料庫的最後一筆處了');
 end
  else
  begin
   ToolButton3.Enabled:=true;
   ADOTable1.Next;
  end;
end;
===================================
//最後一筆
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
CanEdit := False;
ADOTable1.Last;
ToolButton4.Enabled:=false;
end;
====================================
其他: 第一筆、上一筆按鈕 要加入
ToolButton3.Enabled:=true;
ToolButton4.Enabled:=true;
這兩行    
網海無涯,學無止境! 發表人 - qoo1234 於 2003/10/14 00:43:05
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-14 00:45:51 IP:61.13.xxx.xxx 未訂閱
恩 還是有bug 耶 當瀏覽時 瀏覽到空的image時 還是會有殘影 另外 當我瀏覽或新增時 如果操作不當(如在新增一筆資料時 突然 按了上一筆鍵) 它的下一筆功能鍵就會喪失耶 ???
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-14 00:52:11 IP:61.13.xxx.xxx 未訂閱
恩 更正 現在唯一的一個bug 就是當瀏覽到"空"的Image時 它會有殘影 能不能將殘影變成空白啊?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-14 00:56:14 IP:218.163.xxx.xxx 未訂閱
引言: 恩 還是有bug 耶 當瀏覽時 瀏覽到空的image時 還是會有殘影 另外 當我瀏覽或新增時 如果操作不當(如在新增一筆資料時 突然 按了上一筆鍵) 它的下一筆功能鍵就會喪失耶 ???
=======================
第一筆、上一筆、最後一筆,都加入:
if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
=======================
下一筆,多加了紅色部分:
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
CanEdit := False;
if ADOTable1.Eof then
 begin
  ToolButton3.Enabled:=false;
  ToolButton4.Enabled:=false;
  showmessage('已再資料庫的最後一筆處了');
 end
  else
  begin
   ToolButton3.Enabled:=true;
   ADOTable1.Next;
   if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
  end;
end;    
網海無涯,學無止境! 發表人 - qoo1234 於 2003/10/14 00:57:19
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-14 01:10:06 IP:218.163.xxx.xxx 未訂閱
引言:另外 當我瀏覽或新增時 如果操作不當(如在新增一筆資料時 突然 按了上一筆鍵) 它的下一筆功能鍵就會喪失耶 ???
新增、修改按鈕 加入 ToolButton1.Enabled:=False; ToolButton2.Enabled:=False; ToolButton3.Enabled:=False; ToolButton4.Enabled:=False; 儲存、取消按鈕 加入 ToolButton1.Enabled:=true; ToolButton2.Enabled:=true; ToolButton3.Enabled:=true; ToolButton4.Enabled:=true; 網海無涯,學無止境!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-14 01:13:54 IP:61.13.xxx.xxx 未訂閱
還是有一.......bug 當我按下一筆時 瀏覽到"空"圖像時 是都沒問題 但如果由最後一筆開始 按上一筆 瀏覽到第一筆時 bug(殘影)又出現了 另外 如果一開始 直接按最後一筆的話 要按2下最後一筆 殘影才消失    PS(我最後一比放了一個"空"圖像 中間<--第三筆  也放了一個 "空"圖像 )    Sorry 我是不是太囉唆啦!  抱歉!!!!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-14 01:17:42 IP:218.163.xxx.xxx 未訂閱
引言: 還是有一.......bug 當我按下一筆時 瀏覽到"空"圖像時 是都沒問題 但如果由最後一筆開始 按上一筆 瀏覽到第一筆時 bug(殘影)又出現了 另外 如果一開始 直接按最後一筆的話 要按2下最後一筆 殘影才消失 PS(我最後一比放了一個"空"圖像 中間<--第三筆 也放了一個 "空"圖像 ) Sorry 我是不是太囉唆啦! 抱歉!!!! < face="Verdana, Arial, Helvetica"> 檢查以下按鈕是否都已加入,下列資料: ======================= 第一筆、上一筆、最後一筆,都加入: if ADOTable1.FieldByName('img_filename').asstring='' then image1.Picture:=nil; ======================= 網海無涯,學無止境! 發表人 - qoo1234 於 2003/10/14 01:19:10
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-14 01:22:17 IP:218.163.xxx.xxx 未訂閱
放的位置,檢查是否都一樣:  
//第一位
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
CanEdit := False;
ADOTable1.First;
ToolButton3.Enabled:=true;
ToolButton4.Enabled:=true;
if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
end;    //上一位
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
CanEdit := False;
ADOTable1.Prior;
if ADOTable1.Bof then
showmessage('已再資料庫的第一筆處了');
ToolButton3.Enabled:=true;
ToolButton4.Enabled:=true;
if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
end;    //下一位
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
CanEdit := False;
ADOTable1.Next;
if ADOTable1.Eof then
 begin
  ToolButton3.Enabled:=false;
  ToolButton4.Enabled:=false;
  showmessage('已再資料庫的最後一筆處了');
 end
  else
  begin
   ToolButton3.Enabled:=true;  
   if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
  end;
end;    //最後一位
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
CanEdit := False;
ADOTable1.Last;
ToolButton4.Enabled:=false;
if ADOTable1.FieldByName('img_filename').asstring='' then
   image1.Picture:=nil;
end;
 
網海無涯,學無止境! 發表人 - qoo1234 於 2003/10/14 01:29:01
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-14 01:24:19 IP:61.13.xxx.xxx 未訂閱
我都加入了 但是我把它加入到第一行 有差嗎? 如下: procedure TForm1.ToolButton1Click(Sender: TObject); begin if ADOTable1.FieldByName('img_filename').asstring='' then image1.Picture:=nil; CanEdit := False; ADOTable1.First; //第一筆 end; 另外 我的最後一筆資料刪除不了耶??? 其他筆都能刪除 唯讀最後一筆
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-14 01:35:11 IP:218.163.xxx.xxx 未訂閱
引言: 我都加入了 但是我把它加入到第一行 有差嗎?//請跟我一樣,OK!...我剛剛,有更正下一位按鈕資料喔 如下: procedure TForm1.ToolButton1Click(Sender: TObject); begin if ADOTable1.FieldByName('img_filename').asstring='' then image1.Picture:=nil; CanEdit := False; ADOTable1.First; //第一筆 end;
=========================================================== 另外 我的最後一筆資料刪除不了耶??? 其他筆都能刪除 唯讀最後一筆
    //刪除按鈕
procedure TForm1.ToolButton6Click(Sender: TObject);
begin
IF Not ADOTable1.EOF Then 你的方式為如果不是最後一筆則刪除
 Begin
  IF Application.MessageBox('確定要刪除這筆資料嗎?','注意',
                   MB_YESNO MB_ICONQuestion)=IDYES Then
     ADOTable1.Delete;
  
  IF ADOTable1.EOF Then   
  showmessage('沒有資料了');
END;
end;
所以最後一筆你刪不掉~ < src="http://delphi.ktop.com.tw/download/upload\33223_qoo.gif">網海無涯,學無止境! 發表人 - qoo1234 於 2003/10/14 01:36:55
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-14 01:55:16 IP:218.163.xxx.xxx 未訂閱
基本上差不多,可以結案了!其他自行參考書籍,修改即可!    網海無涯,學無止境!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-14 01:56:16 IP:61.13.xxx.xxx 未訂閱
多謝 bug 已經 clean 掉了 多謝qoo1234大大您的幫助 多謝 不好意思 害你讓麼晚睡 真的是太感激你了 日後還請您多多指教
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-10-16 18:37:17 IP:61.16.xxx.xxx 未訂閱
Sorry qoo1234大大 當我再測試程式時 發現了我的jpeg還有一個bug耶 如果我最後一筆資料是有存圖片的話 從第一筆直接跳到最後一筆時(也就是按最後一位botton鍵時) 它 圖片的地方會顯示第一筆的圖 而非它自己欄位的圖 但是 我如果按照順序 按下一筆 按按按 按到最後一筆時 最後一筆的相片欄位就會顯現自己的圖片而非上一張的圖 另外 如果最後一筆的相片欄位是"空"的話 它就會正常 (直接按最後一筆時 不會有第一筆的圖像殘影 而是空的)
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-10-17 01:04:53 IP:218.163.xxx.xxx 未訂閱
引言: Sorry qoo1234大大 當我再測試程式時 發現了我的jpeg還有一個bug耶 如果我最後一筆資料是有存圖片的話 從第一筆直接跳到最後一筆時(也就是按最後一位botton鍵時) 它 圖片的地方會顯示第一筆的圖 而非它自己欄位的圖 但是 我如果按照順序 按下一筆 按按按 按到最後一筆時 最後一筆的相片欄位就會顯現自己的圖片而非上一張的圖 另外 如果最後一筆的相片欄位是"空"的話 它就會正常 (直接按最後一筆時 不會有第一筆的圖像殘影 而是空的)
 
因為你的程式,寫法有忽略以下說明,所以不會載入最後一筆資料的圖檔:
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin
 image1.Picture.Create;
      if not ADOTable1.eof then //跟之前一樣,你寫錯了
        if trim(ADOTable1.FieldByName('img_filename').asstring)<>'' then
        begin
            TBlobField(ADOTable1.FieldByName('img_filedata')).savetofile(ApplicationPath ADOTable1.FieldByName('img_filename').asstring);
            Image1.Picture.LoadFromFile(ApplicationPath ADOTable1.FieldByName('img_filename').asstring);
            deletefile(ApplicationPath ADOTable1.FieldByName('img_filename').asstring);
        end;
end;
網海無涯,學無止境!
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-10-17 11:04:02 IP:140.129.xxx.xxx 未訂閱
多謝您的幫助 小弟現在人在學校 等我回家後 馬上TEST 看看
jasonchen613
初階會員


發表:67
回覆:75
積分:28
註冊:2003-03-25

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-10-17 14:09:30 IP:61.13.xxx.xxx 未訂閱
多謝 小弟沒注意到那個地方 
系統時間:2024-05-19 13:33:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!