要如何將檔案開在動態新增的pagecontrol的memo上? |
答題得分者是:ccchen
|
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
請問:要如何將檔案開在動態新增的pagecontrol的memo上呢?
(就是選擇開啟檔案後,檔案的內容出現在每按一次按鈕pagecontrol就會新增一個TabSheet及memo的memo上) ,以下是我寫的程式:
這是mainmenu的openpage功能鈕程式碼
procedure TForm1.OpenPage1Click(Sender: TObject);
var tab: TTabSheet;
mem: TMemo;
begin
tab := TTabSheet.Create(self);
tab.PageControl := PageControl1; mem := TMemo.Create(Self);
mem.Parent := tab;
mem.Align:=alclient;
tab.Caption:='Page' inttostr(tab.pageindex 1);//fileopen1.Dialog.FileName;
mem.PopupMenu:=popupmenu1;
mem.Name := 'Memo' inttostr(tab.PageIndex 1); // 指定 TMemo 的 Name 屬性
end; 這是在ActionList上負責開啟檔案的程式
procedure TForm1.FileOpen1Accept(Sender: TObject);
var tab: TTabSheet;
mem: TMemo;
begin mem := FindComponent('Memo' inttostr(mem.Action.ComponentCount))as TMemo ;
mem.Lines.LoadFromFile(fileopen1.Dialog.FileName);
end;
結果是只能開啟檔案到TabSheet1的memo1中,如果現在點選到的是Tabsheet2的memo2,則開
啟的檔案還是只在memo1中開啟,請幫忙,謝謝!!
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
FindComponent('Memo'+inttostr(mem.Action.ComponentCount))as TMemo
紅色部分尚未assign, 故不對 不知你FIleOpen1是什麼, 不過可以如下
procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin mem:=TMemo(PageControl1.activepage.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); end; |
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
引言: FindComponent('Memo' inttostr(mem.Action.ComponentCount))as TMemo 紅色部分尚未assign, 故不對 不知你FIleOpen1是什麼, 不過可以如下用了你的方法後,果然可以開檔了,只是能否再請教一個問題,就是要如何讓現在正開啟檔案的TabSheet的名稱,由原先設定的page1或page2變成所開啟檔案的檔名,謝謝!!!procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin mem:=TMemo(PageControl1.activepage.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); end; |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin mem:=TMemo(PageControl1.activepage.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); mem.Name:=fileopen1.Dialog.FileName; //? end;為何改name, 你應該是要改Caption吧, name看不到改也沒用, 且會使你兩個page開同一檔時會ERROR |
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin mem:=TMemo(PageControl1.activepage.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); mem.Caption:=fileopen1.Dialog.FileName; end; |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
引言:-- Believe the unbelievable. 發表人 - hagar 於 2002/12/23 16:34:05procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin mem:=TMemo(PageControl1.activepage.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); 小的不敬, 加個 parent 吧! :) TTabSheet(mem.Parent).Caption:=fileopen1.Dialog.FileName; end; |
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
抱歉, 以為很清楚了沒細看再寫一次吧
procedure TForm1.FileOpen1Accept(Sender: TObject); var tab: TTabSheet; mem: TMemo; begin tab:=PageControl1.activepage; mem:=TMemo(tab.controls[0]); //由於Tabsheet上只有一個control故可如上, 否則須loop去找 mem.Lines.LoadFromFile(fileopen1.Dialog.FileName); tab.Caption:=fileopen1.Dialog.FileName; end;這樣應該可以了吧 [/quote] |
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |