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

影像MDI應用程式 ActiveMDIChild存檔問題

答題得分者是:hahalin
alen
一般會員


發表:3
回覆:6
積分:1
註冊:2004-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-14 11:08:35 IP:218.162.xxx.xxx 未訂閱
以下程式問題可能很多,希望先進不吝指導!! procedure TMainForm.FileSaveExecute(Sender: TObject); type pTheChild = ^TMDIChild; pThePicture = ^TPicture; var TheChild : pTheChild ; ThePicture : pThePicture ; i,j : integer; begin i := 0; j := 0; for i := 0 to MDIChildCount-1 do if MDIChildren[i]=ActiveMDIChild then j:=i; TheChild := ^TForm(MDIChildren[j]); //問題出在這裡,指標搞不懂 ThePicture := TheChild.Image.Picture; ThePicture.SaveToFile(TheChild.Caption); end;
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-14 13:38:12 IP:61.60.xxx.xxx 未訂閱
引言: 以下程式問題可能很多,希望先進不吝指導!! procedure TMainForm.FileSaveExecute(Sender: TObject); type pTheChild = ^TMDIChild; //問題一TMDIChild原來就是指標?為何在轉成指標的指標? //Type // PPointer = ^Pointer;? pThePicture = ^TPicture; var TheChild : pTheChild ; ThePicture : pThePicture ; i,j : integer; begin i := 0; j := 0; for i := 0 to MDIChildCount-1 do if MDIChildren[i]=ActiveMDIChild then j:=i; TheChild := @MDIChildren[j]; //問題出在這裡,指標搞不懂 //問題二?TheChild為指標以下不能這樣用了!! ThePicture := TheChild.Image.Picture; THePicture := @TheChild^.Image.Picture; ThePicture.SaveToFile(TheChild.Caption); ThePicture^.SaveToFile(TheChild.Caption); end;
簡單的說 type pTheChild = ^TMDIChild; pThePicture = ^TPicture; 以上的宣告根本沒用呀?! procedure TMainForm.FileSaveExecute(Sender: TObject); var TheChild : TMDIChild; ThePicture : TPicture ; i,j : integer; begin i := 0; j := 0; for i := 0 to MDIChildCount-1 do if MDIChildren[i]=ActiveMDIChild then j:=i; TheChild := MDIChildren[j]; ThePicture := TheChild.Image.Picture; ThePicture.SaveToFile(TheChild.Caption); end; 學而時習之不亦樂乎! 發表人 - jest0024 於 2004/05/14 13:49:31
alen
一般會員


發表:3
回覆:6
積分:1
註冊:2004-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-14 19:17:59 IP:218.162.xxx.xxx 未訂閱
這個程式可同時開啟很多MDIChild Form,每個MDIChild Form裡面只有一個Image元件,在main form裡面按下save功能表 希望能把當前ActiveMDIChild裡面的Image存檔 for 迴圈可以找到ActiveMDIChild 我認為應該不用create一個新的MDIChild去對應(執行時會跑出來) 所以我想利用一個指標變數TheChild去對應ActiveMDIChild jest0024 所修正的程式出現以下錯誤訊息 TheChild := @MDIChildren[j];// [Error] Variable required 希望 jest0024 及 先進們再指教,謝謝!!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-14 20:40:39 IP:218.170.xxx.xxx 未訂閱
假設你所有的mdichildform上的image都稱作image1    
    procedure TMainForm.FileSaveExecute(Sender: TObject);
begin       timage(ActiveMDIChild.FindComponent('image1')).Picture.SaveToFile(filename);    end;    
一行搞定
alen
一般會員


發表:3
回覆:6
積分:1
註冊:2004-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-14 21:28:39 IP:218.162.xxx.xxx 未訂閱
感謝 hahalin 版主,果然一行搞定 也感謝
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-14 21:31:37 IP:218.170.xxx.xxx 未訂閱
其實 最好判斷一下 activemdichild是否為nil比較好
alen
一般會員


發表:3
回覆:6
積分:1
註冊:2004-03-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-14 21:47:13 IP:218.162.xxx.xxx 未訂閱
其實    最好判斷一下    activemdichild是否為nil比較好 -------------------------------------    了解
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-14 21:51:33 IP:211.74.xxx.xxx 未訂閱
var TheChild : TMDIChild; //<---宣告為TMDIChild的指標,非建立新的Child ThePicture : TPicture ; begin THeChild:=TMDIChild.Create; //<---這樣才會建立新的物件 end; [/quote] 學而時習之不亦樂乎!
alen
一般會員


發表:3
回覆:6
積分:1
註冊:2004-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-14 22:26:01 IP:218.162.xxx.xxx 未訂閱
var TheChild : TMDIChild; //<---宣告為TMDIChild的指標,非建立新的Child ThePicture : TPicture ;    begin THeChild:=TMDIChild.Create; //<---這樣才會建立新的物件 end;  [/quote]    學而時習之不亦樂乎! ------------------------------------------------------------    收到
系統時間:2024-07-07 1:20:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!