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

檔名連續多圖檔

答題得分者是:aryoung
j620656786206
一般會員


發表:4
回覆:9
積分:2
註冊:2010-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-01-26 17:57:42 IP:163.25.xxx.xxx 未訂閱
[code delphi]
//---------------------------------------------------------------------------
void __fastcall TForm3::Image2MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Image1->Picture=Image2->Picture;
Variant v5(1);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__Default(v5,v6); //取列1欄1的值
Label1->Caption=v7;
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Image3MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Image1->Picture=Image3->Picture;
Variant v5(2);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__Default(v5,v6); //取列1欄1的值
Label1->Caption=v7;
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormActivate(TObject *Sender)
{
WideString aa; //定義aa
if (OpenDialog1->Execute()) //直接打開檔案選擇視窗
{
aa=OpenDialog1->FileName; //指定檔名
ExcelApplication1->Connect(); //EXCEL APPLICATION 連接
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
//連接工作表
}
}
//---------------------------------------------------------------------------
[/code]


小弟的程式碼在一開始Form形成時就先open一個excel檔 , 然後當滑鼠移到image2~61時候在image1顯示放大的圖

Label1則顯示跟圖檔名稱一樣所對應到的excel裡的某格某欄 , 但是image有2~61, 程式碼很長 , 請問要怎麼用迴圈縮小程式碼?因為Imagei好像不對@@"

若是不用OpenDialog選擇excel檔 , 如果換成 ExcelApplication1->Workbooks->Open('aa.xls') , 這樣反而有錯 , 請問要怎麼寫才對?

還有就是小弟想做的完整功能是還具有下一頁 , 點選下一頁後若是資料夾裡a的圖檔還沒顯示完就接著顯示 , 若是資料夾a的圖檔顯示完了就換下一個資料夾c裡的圖檔

但這個都沒什麼頭緒要怎麼下手 , 請問大家要怎麼開頭
aryoung
一般會員


發表:6
回覆:13
積分:8
註冊:2007-12-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-01-27 18:06:47 IP:125.230.xxx.xxx 訂閱
大大您好,
不知道您的Image是否為動態產生,
如果不是,小弟我提供一點意見,
請參考,
如果在你的form裡已拉出多個Image的話,
則你可以在每一個Image的MouseMove事件中都指向同一個function,
在此範例中所有的MouseMove事件都Call Image2MouseMove,
Image2MouseMove內在加入一共用function,
DataInputBox
則所有的圖片都會指向此function,
function內直接抓取被觸發的元件名稱,
如果便可利此此資訊做你想要的事情,
另外如果不用opendialog,
我建議可以用ole,
直接開取你想要的excel,
這樣可能比較方便,
有關於ole的用法,
D.KTOP有許多文章可供學習,
你可以查閱一下,
謝謝。
程式碼如下:

[code cpp]
//---------------------------------------------------------------------------

void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
DataInputBox((TImage *)Sender);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
WideString aa; //定義aa
if (OpenDialog1->Execute()) //直接打開檔案選擇視窗
{
aa=OpenDialog1->FileName; //指定檔名
ExcelApplication1->Connect(); //EXCEL APPLICATION 連接
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
//連接工作表
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DataInputBox(TImage *Image)
{
Image1->Picture=Image->Picture;
Variant v5(1);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__Default(v5,v6); //取列1欄1的值
Label1->Caption=v7;



}
//---------------------------------------------------------------------------
[/code]

編輯記錄
aryoung 重新編輯於 2010-01-27 18:13:30, 註解 無‧
j620656786206
一般會員


發表:4
回覆:9
積分:2
註冊:2010-01-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-01-27 21:22:39 IP:163.25.xxx.xxx 未訂閱
不好意思請問一下在Image3MouseMove裡要如何call  Image2MouseMove呢?
我打call Image2MousMove好像不太對 , 直接打 Image2MouseMove() , 括號內也不知放什麼@@"
aryoung
一般會員


發表:6
回覆:13
積分:8
註冊:2007-12-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-01-28 08:33:50 IP:125.230.xxx.xxx 訂閱
你好,
就是在Image3的事件OnMouseMove內,直接填入Image2MouseMove,
再說清楚一點就是,
如果你在Image3的事件OnMouseMove中,點選二下,
他會自動產生Image3MouseMove這個function,
但如果你不要讓他自動產生,
在OnMouseMove內填入Image2MouseMove,
則他會指向Image2MouseMove,
同理,如果有多個圖,
只要用shift將所有圖都選起來,
在事件OnMouseMove中,填入Image2MouseMove,
則所有的圖都會指向這個function,
就可避免每個圖都要寫一次的問題。


===================引 用 j620656786206 文 章===================
不好意思請問一下在Image3MouseMove裡要如何call Image2MouseMove呢?
我打call Image2MousMove好像不太對 , 直接打 Image2MouseMove() , 括號內也不知放什麼@@"
j620656786206
一般會員


發表:4
回覆:9
積分:2
註冊:2010-01-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-01-28 08:56:11 IP:163.25.xxx.xxx 未訂閱
不知大大是否有注意到我Image3MouseMov內v5的值跟Image2MouseMovev5的值是不一樣的

我照你的說的打的以後 , 這樣就變成所有的Image2~61都對到excel的同一格
aryoung
一般會員


發表:6
回覆:13
積分:8
註冊:2007-12-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-01-28 09:33:35 IP:125.230.xxx.xxx 訂閱
有丫,我有看到,
如果你原來想用一個loop迴圈的話,
也會遇到同樣的問題,
除非你可以建一個rule出來,
此rule可根據不同的圖檔,
抓取不同的參數,
不然就要很麻煩的,
在函數內判斷是那張圖片呼叫此函數,
然後做什麼事情,
例如:

[code cpp]
void __fastcall TForm1::DataInputBox(TImage *Image)
{
if(Image->Name=="Image2")
Variant v5(1);
else if(Image->Name=="Image3")
Variant v5(2);

Image1->Picture=Image->Picture;

Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__Default(v5,v6); //取列1欄1的值
Label1->Caption=v7;
}
[/code]


===================引 用 j620656786206 文 章===================
不知大大是否有注意到我Image3MouseMov內v5的值跟Image2MouseMovev5的值是不一樣的

我照你的說的打的以後 , 這樣就變成所有的Image2~61都對到excel的同一格
j620656786206
一般會員


發表:4
回覆:9
積分:2
註冊:2010-01-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-01-28 09:51:36 IP:163.25.xxx.xxx 未訂閱
謝謝大大的回答
我想我應該是要用switch做 , 因為我圖片的前4個字有可能不一樣 , 但數字都是從1~80
那不知大大是否知道要如何變換所讀取的excel的sheet呢?
是這篇裡所講的嗎?http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=98160
aryoung
一般會員


發表:6
回覆:13
積分:8
註冊:2007-12-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-01-28 10:03:34 IP:125.230.xxx.xxx 訂閱
對對對,沒錯,
用switch做確實是個好方法,
比較快,這點是我疏忽了,
你說的那篇確實可以幫到你哦,
我之前有研究爬文好久,
那篇我有看到,
不過還不夠,
後來又用google找相關的函數才找到我要的...
===================引 用 j620656786206 文 章===================
謝謝大大的回答
我想我應該是要用switch做 ,因為我圖片的前4個字有可能不一樣 , 但數字都是從1~80
那不知大大是否知道要如何變換所讀取的excel的sheet呢?
是這篇裡所講的嗎?http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=98160
j620656786206
一般會員


發表:4
回覆:9
積分:2
註冊:2010-01-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-01-28 10:23:38 IP:163.25.xxx.xxx 未訂閱
謝謝你~
我會自己再goole的
系統時間:2024-04-19 17:19:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!