檔名連續多圖檔 |
答題得分者是:aryoung
|
j620656786206
一般會員 發表:4 回覆:9 積分:2 註冊:2010-01-20 發送簡訊給我 |
[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 發送簡訊給我 |
大大您好,
不知道您的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 發送簡訊給我 |
|
aryoung
一般會員 發表:6 回覆:13 積分:8 註冊:2007-12-19 發送簡訊給我 |
你好,
就是在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 發送簡訊給我 |
|
aryoung
一般會員 發表:6 回覆:13 積分:8 註冊:2007-12-19 發送簡訊給我 |
有丫,我有看到,
如果你原來想用一個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 發送簡訊給我 |
|
aryoung
一般會員 發表:6 回覆:13 積分:8 註冊:2007-12-19 發送簡訊給我 |
對對對,沒錯,
用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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |