線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1644
推到 Plurk!
推到 Facebook!

要如何將檔案開在動態新增的pagecontrol的memo上?

答題得分者是:ccchen
annie
一般會員


發表:5
回覆:6
積分:2
註冊:2002-12-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-22 10:11:07 IP:218.32.xxx.xxx 未訂閱
請問:要如何將檔案開在動態新增的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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-22 10:48:50 IP:203.217.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-22 22:41:02 IP:218.32.xxx.xxx 未訂閱
引言: 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;
用了你的方法後,果然可以開檔了,只是能否再請教一個問題,就是要如何讓現在正開啟檔案的TabSheet的名稱,由原先設定的page1或page2變成所開啟檔案的檔名,謝謝!!!
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-23 08:47:45 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-23 14:06:33 IP:218.32.xxx.xxx 未訂閱
我說的是tabsheet的caption,隨著開啟的檔案名稱而變。
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-23 15:41:00 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-23 16:04:43 IP:202.39.xxx.xxx 未訂閱
引言:
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);
  小的不敬, 加個 parent 吧! :)
  TTabSheet(mem.Parent).Caption:=fileopen1.Dialog.FileName;   
end;
-- Believe the unbelievable. 發表人 - hagar 於 2002/12/23 16:34:05
annie
一般會員


發表:5
回覆:6
積分:2
註冊:2002-12-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-23 17:20:00 IP:218.32.xxx.xxx 未訂閱
我說的是每一個動態新增的TabSheet的caption如何由原先設定的page1變成新開檔案的檔名,而不是memo的caption。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-23 17:41:29 IP:202.39.xxx.xxx 未訂閱
引言: 我說的是每一個動態新增的TabSheet的caption如何由原先設定的page1變成新開檔案的檔名,而不是memo的caption。
ccchen 大老寫的就是 TTabSheet 的 Caption 啊! 哪有 TMemo 的 Caption? 況且 TMemo 沒有 Caption 屬性吧! -- Believe the unbelievable.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-23 19:10:29 IP:203.217.xxx.xxx 未訂閱
抱歉, 以為很清楚了沒細看再寫一次吧
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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-24 07:40:59 IP:218.32.xxx.xxx 未訂閱
謝謝你!!!已經成功了!!!
系統時間:2024-05-07 20:03:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!