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

listview1縮圖加到listview2的問題

尚未結案
hungjeff
一般會員


發表:10
回覆:9
積分:3
註冊:2007-02-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-03 15:11:40 IP:140.128.xxx.xxx 訂閱
我選擇shelltreeview裡的一個圖片資料夾,會在listview1顯示縮圖,但是我想把listview1的縮圖加入到listview2,但是圖片卻改變了,請問各位大大,這是因為imagelist的關係嗎,因為我有拉二個imagelist,分別對應listview1跟listview2,以下是附圖,請大大指導一下,如需程式碼,小弟再另外po上來,感激不盡。
編輯記錄
hungjeff 重新編輯於 2008-10-03 15:20:38, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-03 15:39:45 IP:218.210.xxx.xxx 訂閱
這是因為imagelist的關係 // 你已經回答你自己了,你先確認一下,兩個 imagelist 的內容是不是一樣
因為記得你之前問的時候,你的縮圖是 ok 的~~~ ,怎現在突然不 ok 了??
------
價值的展現,來自於你用哪一個角度來看待它!!
hungjeff
一般會員


發表:10
回覆:9
積分:3
註冊:2007-02-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-03 16:14:18 IP:140.128.xxx.xxx 訂閱
之前ok是因為是選擇一個shelltreeview的資料夾而已,我現在改了,如果我先托曳一些檔案在listview2,我再選擇別的資料夾檔案想托曳到listview2,所以修改了程式,但是就圖就開始變的怪怪的。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-03 19:06:48 IP:218.210.xxx.xxx 訂閱
不過看起來應該還是你的 imagelist 內的圖片有指定錯誤,或是你的圖在從一個 Imagelist 到另一個時放錯了
你再確認看看不行的話,po 上來再幫你看一下

===================引 用 hungjeff 文 章===================
之前ok是因為是選擇一個shelltreeview的資料夾而已,我現在改了,如果我先托曳一些檔案在listview2,我再選擇別的資料夾檔案想托曳到listview2,所以修改了程式,但是就圖就開始變的怪怪的。
------
價值的展現,來自於你用哪一個角度來看待它!!
hungjeff
一般會員


發表:10
回覆:9
積分:3
註冊:2007-02-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-08 09:54:20 IP:140.128.xxx.xxx 訂閱
這是加入button的程式碼,請大大幫我看看,是哪邊出了問題,我一直改不出,感謝

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
ImageFileName:string;
ThumbBmpLeft:integer;
ThumbBmpTop:integer;
ThumbBmpHeight:integer;
ThumbBmpWidth:integer;
begin
ProgressBar1.Visible:=True;
try
for i :=ListView1.Items.Count - 1 downto 0 do begin
if ListView1.Items[i].Selected then begin
ImageFileList2.Add(ImageFileList.item(i));

ImageFileList2.SetIndex(ImageFileList2.GetFileCount-1);
ImageFileName:=ImageFileList2.GetCurFullFileName;
if IsJpgFile(ImageFileName) then
JpgTobmp(ImageFileList2.GetCurFullFileName,ThumbJpg,OriginalBmp)
else if IsGifFile(ImageFileName) then
GifTobmp(ImageFileList2.GetCurFullFileName,ThumbGif,OriginalBmp)
else if IsPngFile(ImageFileName) then
PngTobmp(ImageFileList2.GetCurFullFileName,ThumbPng,OriginalBmp)
else
OriginalBmp.LoadFromFile(ImageFileList2.GetCurFullFileName);
if OriginalBmp.Height>=OriginalBmp.Width then
begin
ThumbBmpWidth:=64*OriginalBmp.Width div OriginalBmp.Height;
ThumbBmpLeft:=(64-ThumbBmpWidth ) div 2;
ThumbBmp.Canvas.Brush.Color :=clBtnFace;
ThumbBmp.Canvas.FillRect(ThumbBmp.Canvas.ClipRect);
DrawPanel(ThumbBmp.Canvas,0,0,79,79,RaisedPanel);
DrawPanel(ThumbBmp.Canvas,7 ThumbBmpLeft,7,ThumbBmpWidth 1,64,LoweredPanel);
ThumbBmp.Canvas.StretchDraw(Rect(8 ThumbBmpLeft, 8 , 8 ThumbBmpLeft ThumbBmpWidth,71), OriginalBmp);
end
else
begin
ThumbBmpHeight := 64 * OriginalBmp.Height div OriginalBmp.Width;
ThumbBmpTop := (64 - ThumbBmpHeight) div 2;
ThumbBmp.Canvas.Brush.Color :=clBtnFace;
ThumbBmp.Canvas.FillRect(ThumbBmp.Canvas.ClipRect);
DrawPanel(ThumbBmp.Canvas, 0 , 0 , 79 , 79 , RaisedPanel);
DrawPanel(ThumbBmp.Canvas, 7 ,7 ThumbBmpTop, 64,ThumbBmpHeight 1, LoweredPanel);
ThumbBmp.Canvas.StretchDraw(Rect(8 , 8 ThumbBmpTop, 71,8 ThumbBmpTop ThumbBmpHeight) ,OriginalBmp);
end;
ImageList2.Add(ThumbBmp,nil);
//Imagelist2.Add(ThumbBmp,nil);
with ListView2.Items.Add do
begin
ImageIndex := Imagelist2.Count-1;
Caption := ImageFileList2.GetCurFileName;
end;
ProgressBar1.Position := i;
end;
end;
Application.ProcessMessages;
finally
ListView1.Items.EndUpdate;
ProgressBar1.Visible := False;
end;
end;
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-10-12 22:57:08 IP:59.126.xxx.xxx 訂閱
hi,不好意思,到今天才看到您的回文,抱歉現在才回您

我在 Google 找到了下面這篇跟您的程式碼一樣的文章

用Delphi實現縮略圖查看- 早雪網

用他的程式看了您的程式碼,發現你其實不必使用 ImageFileList2 , 而且你 Copy 的程式碼是從 RefreshImage
這個函數出來的,但似乎也沒有 Copy 的很完整,我把改好的程式放在下面,你看一下和你原本的差在哪邊,你就
知道為什麼你的圖片有顯示問題了!!

[code delphi]
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
iProcCount: Integer; // 新增
ImageFileName:string;
ImageFullFileName:string; // 新增
ThumbBmpLeft:integer;
ThumbBmpTop:integer;
ThumbBmpHeight:integer;
ThumbBmpWidth:integer;
begin
ProgressBar1.Max:=ListView1.SelCount; // 您少 Copy 了這行!!
ProgressBar1.Position := 0; // 您少 Copy 了這行!!
iProcCount := 0; // 新增
ProgressBar1.Visible:=True;
ListView2.Items.BeginUpdate; // 您少 Copy 了這行!!
try
for i :=ListView1.Items.Count - 1 downto 0 do begin
if ListView1.Items[i].Selected then begin
ImageFileList.SetIndex(I);
ImageFullFileName:=ImageFileList.GetCurFullFileName; // 新增
ImageFileName := ImageFileList.GetCurFileName;
// 注意以下的 if .. else 都改成了 ImageFullFileName
if IsJpgFile(ImageFullFileName) then
JpgTobmp(ImageFullFileName,ThumbJpg,OriginalBmp)
else if IsGifFile(ImageFileName) then
GifTobmp(ImageFileList2.GetCurFullFileName,ThumbGif,OriginalBmp)
else if IsPngFile(ImageFileName) then
PngTobmp(ImageFileList2.GetCurFullFileName,ThumbPng,OriginalBmp)
else
OriginalBmp.LoadFromFile(ImageFullFileName);
if OriginalBmp.Height>=OriginalBmp.Width then
begin
ThumbBmpWidth:=64*OriginalBmp.Width div OriginalBmp.Height;
ThumbBmpLeft:=(64-ThumbBmpWidth ) div 2;
ThumbBmp.Canvas.Brush.Color :=clBtnFace;
ThumbBmp.Canvas.FillRect(ThumbBmp.Canvas.ClipRect);
DrawPanel(ThumbBmp.Canvas,0,0,79,79,RaisedPanel);
DrawPanel(ThumbBmp.Canvas,7 ThumbBmpLeft,7,ThumbBmpWidth 1,64,LoweredPanel);
ThumbBmp.Canvas.StretchDraw(Rect(8 ThumbBmpLeft, 8 , 8 ThumbBmpLeft ThumbBmpWidth,71), OriginalBmp);
end
else
begin
ThumbBmpHeight := 64 * OriginalBmp.Height div OriginalBmp.Width;
ThumbBmpTop := (64 - ThumbBmpHeight) div 2;
ThumbBmp.Canvas.Brush.Color :=clBtnFace;
ThumbBmp.Canvas.FillRect(ThumbBmp.Canvas.ClipRect);
DrawPanel(ThumbBmp.Canvas, 0 , 0 , 79 , 79 , RaisedPanel);
DrawPanel(ThumbBmp.Canvas, 7 ,7 ThumbBmpTop, 64,ThumbBmpHeight 1, LoweredPanel);
ThumbBmp.Canvas.StretchDraw(Rect(8 , 8 ThumbBmpTop, 71,8 ThumbBmpTop ThumbBmpHeight) ,OriginalBmp);
end;
ImageList2.Add(ThumbBmp,nil);
with ListView2.Items.Add do
begin
ImageIndex := Imagelist2.Count-1;
Caption := ImageFileName;
end;
inc(iProcCount); // 已處理的筆理 ( 新增 )
ProgressBar1.Position := iProcCount; // 修改
end;
end;
Application.ProcessMessages;
finally
ListView2.Items.EndUpdate;
ProgressBar1.Visible := False;
end;
end;
[/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-10-12 23:36:20, 註解 無‧
hungjeff
一般會員


發表:10
回覆:9
積分:3
註冊:2007-02-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-10-15 13:56:02 IP:140.128.xxx.xxx 訂閱
大大你好,我已經看了你po的程式碼,我把你有備註的部分加了進去,又稍為看了一下,你沒加備註的程式碼跟我原來的不符,執行了你修改的程式碼,不能執行。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-10-16 17:19:56 IP:60.248.xxx.xxx 訂閱
=_= 奇怪,你的 po 文我都不知道~~~ 難道我的 Gmail 有自動拒絕你的 po 文功能??  (開玩笑的)
那你的不能執行是有什麼錯誤訊息嗎?
可以麻煩你告知我嗎? 我還有將我的程式留著,我回家後我把程式傳給你,你看一下是哪邊的程式造成問題的

不過,我沒加備註的部份你也是要改進去哦,簡單說是整個 Function 都要改一下!!

===================引 用 hungjeff 文 章===================
大大你好,我已經看了你po的程式碼,我把你有備註的部分加了進去,又稍為看了一下,你沒加備註的程式碼跟我原來的不符,執行了你修改的程式碼,不能執行。
------
價值的展現,來自於你用哪一個角度來看待它!!
系統時間:2017-10-24 13:33:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!